Hi,I think this BUGs easily because shrink_cache doesn't expect to see unfreeable pages put back to LRU.
It seems rotate_reclaimable_page fails most of the
time due the page not being on the LRU when kswapd
calls writepage(). The filesystem in my tests is
ext3. The attached patch against 2.6.16-rc2 moves the
page to the LRU before calling writepage(). Below are
results for a write test with:
dd if=/dev/zero of=test bs=1024k count=1024
To trigger the writeback path with the default dirty
ratios, I set swappiness to 55 and mapped memory to
about 80%.
w/o patch (/proc/sys/vm/wb_put_lru = 0):
pgrotcalls 25852
pgrotnonlru 25834
pgrotated 18
with patch (/proc/sys/vm/wb_put_lru = 1):
pgrotcalls 26616
pgrotated 26616
Thanks,
Shantanu
__________________________________________________