Thread (19 messages) 19 messages, 6 authors, 2025-06-24

Re: [PATCH 0/5] add STATIC_PMD_ZERO_PAGE config option

From: Pankaj Raghav (Samsung) <hidden>
Date: 2025-06-16 10:49:43
Also in: linux-fsdevel, linux-mm, lkml

quoted
quoted
The mm is a nice convenient place to stick an mm but there are other
ways to keep an efficient refcount around. For instance, you could just
bump a per-cpu refcount and then have the shrinker sum up all the
refcounts to see if there are any outstanding on the system as a whole.

I understand that the current refcounts are tied to an mm, but you could
either replace the mm-specific ones or add something in parallel for
when there's no mm.
But the whole idea of allocating a static PMD page for sane
architectures like x86 started with the intent of avoiding the refcounts and
shrinker.

This was the initial feedback I got[2]:

I mean, the whole thing about dynamically allocating/freeing it was for
memory-constrained systems. For large systems, we just don't care.
For non-mm usage we can just use the folio refcount. The per-mm refcounts
are all combined into a single folio refcount. The way the global variable
is managed based on per-mm refcounts is the weird thing.

In some corner cases we might end up having multiple instances of huge zero
folios right now. Just imagine:

1) Allocate huge zero folio during read fault
2) vmsplice() it
3) Unmap the huge zero folio
4) Shrinker runs and frees it
5) Repeat with 1)

As long as the folio is vmspliced(), it will not get actually freed ...

I would hope that we could remove the shrinker completely, and simply never
free the huge zero folio once allocated. Or at least, only free it once it
is actually no longer used.
Thanks for the explanation, David.

But I am still a bit confused on how to proceed with these patches.

So IIUC, our eventual goal is to get rid of the shrinker.

But do we still want to add a static PMD page in the .bss or do we take
an alternate approach here?

--
Pankaj
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help