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