Messages in this thread | | | Date | Tue, 04 Sep 2007 21:37:35 -0400 | From | Rik van Riel <> | Subject | Re: kernel 2.6.22: what IS the VM doing? |
| |
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. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |