We will. Each page steal and each allocation will increase
the memory_pressure variable, and because of that, also the
inactive_target.
Whenever either
- one zone gets low on free memory *OR*
- all zones get more or less low on free+inactive_clean pages *OR*
- we get low on inactive pages (inactive_shortage > inactive_target/2),
THEN kswapd gets woken up immediately.
We do this both from the page allocation code and from
__find_page_nolock (which gets hit every time we reclaim
an inactive page back for its original purpose).
> > About NUMA scalability: we'll have different memory pools
> > per NUMA node. So if you have a 32-node, 64GB NUMA machine,
> > it'll partly function like 32 independant 2GB machines.
>
> One lesson we learned early on is that anything you can
> possibly do on a per-CPU basis helps both SMP and NUMA
> activity. This includes memory management, scheduling,
> TCP performance counters, any kind of system counters, etc.
> Once you have the basic SMP hierarchy in place, adding a NUMA
> hierarchy (or more than one for architectures that need it)
> is much easier.
>
> Also, is there a kswapd per pool? Or does one kswapd oversee
> all of the pools (in the NUMA world, that is)?
Currently we have none of this, but once 2.5 is forked
off, I'll submit a patch which shuffles all variables
into per-node (per pgdat) structures.
regards,
Rik
--
"What you're running that piece of shit Gnome?!?!"
-- Miguel de Icaza, UKUUG 2000
http://www.conectiva.com/ http://www.surriel.com/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/