Re: [PATCH V5 4/5] mm, vmscan: fix do_try_to_free_pages() livelock
From: Ying Han <hidden>
Date: 2012-06-20 03:29:08
On Tue, Jun 19, 2012 at 11:29 AM, KOSAKI Motohiro [off-list ref] wrote:
On 6/18/2012 12:47 PM, Ying Han wrote:quoted
Currently, do_try_to_free_pages() can enter livelock. Because of, now vmscan has two conflicted policies. 1) kswapd sleep when it couldn't reclaim any page even though reach priority 0. This is because to avoid kswapd() infinite loop. That said, kswapd assume direct reclaim makes enough free pages either regular page reclaim or oom-killer. This logic makes kswapd -> direct-reclaim dependency. 2) direct reclaim continue to reclaim without oom-killer until kswapd turn on zone->all_unreclaimble. This is because to avoid too early oom-kill. This logic makes direct-reclaim -> kswapd dependency. In worst case, direct-reclaim may continue to page reclaim forever when kswapd is slept and any other thread don't wakeup kswapd. We can't turn on zone->all_unreclaimable because this is racy. direct reclaim path don't take any lock. Thus this patch removes zone->all_unreclaimable field completely and recalculates every time. Note: we can't take the idea that direct-reclaim see zone->pages_scanned directly and kswapd continue to use zone->all_unreclaimable. Because, it is racy. commit 929bea7c71 (vmscan: all_unreclaimable() use zone->all_unreclaimable as a name) describes the detail. Reported-by: Aaditya Kumar <redacted> Reported-by: Ying Han <redacted> Signed-off-by: KOSAKI Motohiro <redacted> Acked-by: Rik van Riel <redacted>Please drop this. I've got some review comment about this patch and i need respin. but thank you for paying attention this.
Thanks for the heads up. Are you working on the new version of it, since I included this patch in my softlimit reclaim patchset as a replacement of one patch i had. --Ying
-- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>