On Tuesday 03 November 2009, you wrote: > > With a representative test I get 0 for kswapd_slept_prematurely. > > Tested with .32-rc6 + patches 1-3 + this patch. > > Assuming the problem actually reproduced, can you still retest with the Yes, it does. > patch I posted as a follow-up and see if fast or slow premature sleeps > are happening and if the problem still occurs please? It's still > possible with the patch as-is could be timing related. After I posted > this patch, I continued testing and found I could get counts fairly > reliably if kswapd was calling printk() before making the premature > check so the window appears to be very small. Tested with .32-rc6 and .31.1. With that follow-up patch I still get freezes and SKB allocation errors. And I don't get anywhere near the fast, smooth and reliable behavior I get when I do the congestion_wait() reverts. The new case does trigger as you can see below, but I'm afraid I don't see it making any significant difference for my test. Hope the data is still useful for you. From vmstat for .32-rc6: kswapd_highorder_rewakeup 8 kswapd_slept_prematurely_fast 329 kswapd_slept_prematurely_slow 55 From vmstat for .31.1: kswapd_highorder_rewakeup 20 kswapd_slept_prematurely_fast 307 kswapd_slept_prematurely_slow 105 If you'd like me to test with the congestion_wait() revert on top of this for comparison, please let me know. Cheers, FJP P.S. Your follow-up patch did not apply cleanly on top of the debug one as you seem to have made some changes between posting them (dropped kswapd_ from the sleeping_prematurely() function name and added a comment).