Re: kernel 2.6.22: what IS the VM doing?

Rik van Riel
2007-09-05T01:37:45Z

Sami Farin wrote:
> Using SMP kernel 2.6.22.6pre-CFS-v20.5 on Pentium D (IA-32).
> I think this bug (or whatever you want to call it) got triggered
> when you first allocate several megabytes of memory in a kernel module
> and then free them, and then run e.g. X and when memory gets tight,
> you end up with this situation...
>
> Top 2 /proc/vmstat Biggest Winners:
>
> pgrefill_normal:49900/second
> pgrefill_high:20810/second

That means the pageout code was scanning about 70000 pages
per second on your system during peak stress. You may have
run into a scalability problem in the Linux kernel, where it
wants to clear the referenced bit off all the anonymous pages
before swapping something out.

To make matters worse, that unlucky page gets chosen because
it was the page where kswapd started scanning. It has little
to do with being the least recently used page, because every
anonymous page tends to have its referenced bit set by the time
we start scanning.

On truly enormous systems, say with 256GB of memory, kswapd
sometimes needs to scan hundreds of thousands or even millions
of pages before finding something to swap out. Not fun.

> Did I forget to include some info???
> Oh, and I need to reboot in order to get usable system
> when this bug happens.

Is the system trying to evict pages like crazy when your
system becomes unusable?

If so, I wonder if kswapd is simply doing the wrong thing
and trying to evict data from all zones, simply because the
highmem zone is low on free pages...

--
Politics is the struggle between those who want to make their country
the best in the world, and those who believe it already is. Each group
calls the other unpatriotic.