From: David Hildenbrand <[email protected]>
To: Matthew Wilcox <[email protected]>
Cc: Andrew Morton <[email protected]>,
Jens Axboe <[email protected]>,
[email protected], [email protected]
Subject: Re: [PATCH 7/9] mm: Add deferred_list page flag
Date: Wed, 16 Aug 2023 12:12:44 +0200 [thread overview]
Message-ID: <[email protected]> (raw)
In-Reply-To: <ZNw/[email protected]>
On 16.08.23 05:14, Matthew Wilcox wrote:
> On Tue, Aug 15, 2023 at 08:58:24PM +0100, Matthew Wilcox wrote:
>> On Tue, Aug 15, 2023 at 07:27:26PM +0200, David Hildenbrand wrote:
>>> On 15.08.23 19:06, Matthew Wilcox wrote:
>>>> Theree are a lot of counters called THP and TransHuge and other variants
>>>> which are exposed to userspace, and the (user) assumption is that this counts
>>>> PMD-sized folios. If you grep around for folio_test_pmd_mappable(),
>>>> you'll find them. If we have folio_test_thp(), people will write:
>>>>
>>>> if (folio_test_thp(folio))
>>>> __mod_lruvec_state(lruvec, NR_SHMEM_THPS, nr);
>>>>
>>>> instead of using folio_test_pmd_mappable().
>>>
>>> So if we *really* don't want to use THP to express that we have a page, then
>>> let's see what these pages are:
>>> * can be mapped to user space
>>> * are transparent to most MM-related systemcalls by (un) mapping
>>> them in system page size (PTEs)
>>
>> * Are managed on the LRU
>
> I think this is the best one to go with. Either that or "managed by
> rmap". That excludes compoud pages which are allocated from vmalloc()
> (which can be mmaped), page tables, slab, etc. It includes both file
> and anon folios.
>
> I have a handy taxonomy here: https://kernelnewbies.org/MemoryTypes
>
> Unfortunately, folio_test_lru() already exists and means something
> different ("Is this folio on an LRU list"). I fear folio_test_rmap()
> would have a similar confusion -- "Is this folio currently findable by
> rmap", or some such. folio_test_rmappable()?
But what about hugetlb, they are also remappable? We could have
folio_test_rmappable(), but that would then also better include hugetlb ...
(in theory, one could envision hugetlb also using an lru mechanism,
although I doubt/hope it will ever happen)
Starting at the link you provided, I guess "vmalloc" and "net pool"
would not fall under that category, or would they? (I'm assuming they
don't get mapped using the rmap, so they are "different", and they are
not managed by lru).
So I assume we only care about anon+file (lru-managed). Only these are
rmappable (besides hugetlb), correct?
folio_test_lru_managed()
Might be cleanest to describe anon+file that are managed by the lru,
just might not be on a lru list right now (difference to folio_test_lru()).
I've been also thinking about
"folio_test_normal"
But it only makes sense when "all others (including hugetlb) are the odd
one".
--
Cheers,
David / dhildenb
next prev parent reply other threads:[~2023-08-16 10:14 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-15 3:26 [PATCH 0/9] Remove _folio_dtor and _folio_order Matthew Wilcox (Oracle)
2023-08-15 3:26 ` [PATCH 1/9] io_uring: Stop calling free_compound_page() Matthew Wilcox (Oracle)
2023-08-15 7:33 ` David Hildenbrand
2023-08-15 15:00 ` Jens Axboe
2023-08-15 15:36 ` Matthew Wilcox
2023-08-15 3:26 ` [PATCH 2/9] mm: Call the hugetlb destructor directly Matthew Wilcox (Oracle)
2023-08-15 7:36 ` David Hildenbrand
2023-08-15 3:26 ` [PATCH 3/9] mm: Call free_transhuge_folio() directly from destroy_large_folio() Matthew Wilcox (Oracle)
2023-08-15 6:13 ` kernel test robot
2023-08-15 7:40 ` David Hildenbrand
2023-08-15 14:06 ` Matthew Wilcox
2023-08-15 8:09 ` kernel test robot
2023-08-15 3:26 ` [PATCH 4/9] mm: Make free_compound_page() static Matthew Wilcox (Oracle)
2023-08-15 7:47 ` David Hildenbrand
2023-08-15 7:48 ` David Hildenbrand
2023-08-15 3:26 ` [PATCH 5/9] mm: Remove free_compound_page() Matthew Wilcox (Oracle)
2023-08-15 7:48 ` David Hildenbrand
2023-08-15 3:26 ` [PATCH 6/9] mm: Remove HUGETLB_PAGE_DTOR Matthew Wilcox (Oracle)
2023-08-15 7:50 ` David Hildenbrand
2023-08-15 3:26 ` [PATCH 7/9] mm: Add deferred_list page flag Matthew Wilcox (Oracle)
2023-08-15 7:54 ` David Hildenbrand
2023-08-15 15:32 ` Matthew Wilcox
2023-08-15 16:40 ` David Hildenbrand
2023-08-15 17:06 ` Matthew Wilcox
2023-08-15 17:27 ` David Hildenbrand
2023-08-15 19:58 ` Matthew Wilcox
2023-08-16 3:14 ` Matthew Wilcox
2023-08-16 10:12 ` David Hildenbrand [this message]
2023-08-16 12:05 ` Matthew Wilcox
2023-08-16 12:34 ` David Hildenbrand
2023-08-16 9:55 ` David Hildenbrand
2023-08-15 3:26 ` [PATCH 8/9] mm: Rearrange page flags Matthew Wilcox (Oracle)
2023-08-15 4:30 ` Yosry Ahmed
2023-08-15 19:24 ` Peter Xu
2023-08-15 20:07 ` Matthew Wilcox
2023-08-15 22:31 ` Yosry Ahmed
2023-08-15 23:01 ` Matthew Wilcox
2023-08-15 23:33 ` Yosry Ahmed
2023-08-15 3:26 ` [PATCH 9/9] mm: Free up a word in the first tail page Matthew Wilcox (Oracle)
2023-08-15 7:59 ` David Hildenbrand
2023-08-15 11:39 ` Matthew Wilcox
2023-08-15 19:21 ` Peter Xu
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 \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/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