From: John Hubbard <jhubbard@nvidia.com>
To: Luis Chamberlain <mcgrof@kernel.org>, Zi Yan <ziy@nvidia.com>
Cc: <linux-mm@kvack.org>, <linux-kernel@vger.kernel.org>,
Ryan Roberts <ryan.roberts@arm.com>,
Andrew Morton <akpm@linux-foundation.org>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
David Hildenbrand <david@redhat.com>,
"Yin, Fengwei" <fengwei.yin@intel.com>,
Yu Zhao <yuzhao@google.com>, Vlastimil Babka <vbabka@suse.cz>,
Johannes Weiner <hannes@cmpxchg.org>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Kemeng Shi <shikemeng@huaweicloud.com>,
Mel Gorman <mgorman@techsingularity.net>,
"Rohan Puri" <rohan.puri15@gmail.com>,
Adam Manzanares <a.manzanares@samsung.com>
Subject: Re: [RFC PATCH 0/4] Enable >0 order folio memory compaction
Date: Wed, 20 Sep 2023 19:05:25 -0700 [thread overview]
Message-ID: <5ac6a387-0ca7-45ca-bebc-c3bdd48452cb@nvidia.com> (raw)
In-Reply-To: <ZQuZdkxm/GMyS6wY@bombadil.infradead.org>
On 9/20/23 18:16, Luis Chamberlain wrote:
> On Wed, Sep 20, 2023 at 05:55:51PM -0700, Luis Chamberlain wrote:
>> Are there other known recipes test help test this stuff?
>
> You know, it got me wondering... since how memory fragmented a system
> might be by just running fstests, because, well, we already have
> that automated in kdevops and it also has LBS support for all the
> different large block sizes on 4k sector size. So if we just had a
> way to "measure" or "quantify" memory fragmentation with a score,
> we could just tally up how we did after 4 hours of testing for each
> block size with a set of memory on the guest / target node / cloud
> system.
>
> Luis
I thought about it, and here is one possible way to quantify
fragmentation with just a single number. Take this with some
skepticism because it is a first draft sort of thing:
a) Let BLOCKS be the number of 4KB pages (or more generally, then number
of smallest sized objects allowed) in the area.
b) Let FRAGS be the number of free *or* allocated chunks (no need to
consider the size of each, as that is automatically taken into
consideration).
Then:
fragmentation percentage = (FRAGS / BLOCKS) * 100%
This has some nice properties. For one thing, it's easy to calculate.
For another, it can discern between these cases:
Assume a 12-page area:
Case 1) 6 pages allocated allocated unevenly:
1 page allocated | 1 page free | 1 page allocated | 5 pages free | 4 pages allocated
fragmentation = (5 FRAGS / 12 BLOCKS) * 100% = 41.7%
Case 2) 6 pages allocated evenly: every other page is allocated:
fragmentation = (12 FRAGS / 12 BLOCKS) * 100% = 100%
thanks,
--
John Hubbard
NVIDIA
next prev parent reply other threads:[~2023-09-21 2:05 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-12 16:28 Zi Yan
2023-09-12 16:28 ` [RFC PATCH 1/4] mm/compaction: add support for " Zi Yan
2023-09-12 17:32 ` Johannes Weiner
2023-09-12 17:38 ` Zi Yan
2023-09-15 9:33 ` Baolin Wang
2023-09-18 17:06 ` Zi Yan
2023-10-10 8:07 ` Huang, Ying
2023-09-12 16:28 ` [RFC PATCH 2/4] mm/compaction: optimize >0 order folio compaction with free page split Zi Yan
2023-09-18 7:34 ` Baolin Wang
2023-09-18 17:20 ` Zi Yan
2023-09-20 8:15 ` Baolin Wang
2023-09-12 16:28 ` [RFC PATCH 3/4] mm/compaction: optimize >0 order folio compaction by sorting source pages Zi Yan
2023-09-12 17:56 ` Johannes Weiner
2023-09-12 20:31 ` Zi Yan
2023-09-12 16:28 ` [RFC PATCH 4/4] mm/compaction: enable compacting >0 order folios Zi Yan
2023-09-15 9:41 ` Baolin Wang
2023-09-18 17:17 ` Zi Yan
2023-09-20 14:44 ` kernel test robot
2023-09-21 0:55 ` [RFC PATCH 0/4] Enable >0 order folio memory compaction Luis Chamberlain
2023-09-21 1:16 ` Luis Chamberlain
2023-09-21 2:05 ` John Hubbard [this message]
2023-09-21 3:14 ` Luis Chamberlain
2023-09-21 15:56 ` Zi Yan
2023-10-02 12:32 ` Ryan Roberts
2023-10-09 13:24 ` Zi Yan
2023-10-09 14:10 ` Ryan Roberts
2023-10-09 15:42 ` Zi Yan
2023-10-09 15:52 ` Zi Yan
2023-10-10 10:00 ` Ryan Roberts
2023-10-09 7:12 ` Huang, Ying
2023-10-09 13:43 ` Zi Yan
2023-10-10 6:08 ` Huang, Ying
2023-10-10 16:48 ` Zi Yan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5ac6a387-0ca7-45ca-bebc-c3bdd48452cb@nvidia.com \
--to=jhubbard@nvidia.com \
--cc=a.manzanares@samsung.com \
--cc=akpm@linux-foundation.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=david@redhat.com \
--cc=fengwei.yin@intel.com \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mcgrof@kernel.org \
--cc=mgorman@techsingularity.net \
--cc=rohan.puri15@gmail.com \
--cc=ryan.roberts@arm.com \
--cc=shikemeng@huaweicloud.com \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
--cc=yuzhao@google.com \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox