Re: [PATCH 2/3] writeback: Record if the congestion was unnecessary
From: Shaohua Li <hidden>
Date: 2010-08-27 02:12:10
Also in:
linux-fsdevel, lkml
On Fri, 2010-08-27 at 04:31 +0800, Mel Gorman wrote:
On Thu, Aug 26, 2010 at 08:29:04PM +0200, Johannes Weiner wrote:quoted
On Thu, Aug 26, 2010 at 04:14:15PM +0100, Mel Gorman wrote:quoted
If congestion_wait() is called when there is no congestion, the caller will wait for the full timeout. This can cause unreasonable and unnecessary stalls. There are a number of potential modifications that could be made to wake sleepers but this patch measures how serious the problem is. It keeps count of how many congested BDIs there are. If congestion_wait() is called with no BDIs congested, the tracepoint will record that the wait was unnecessary.I am not convinced that unnecessary is the right word. On a workload without any IO (i.e. no congestion_wait() necessary, ever), I noticed the VM regressing both in time and in reclaiming the right pages when simply removing congestion_wait() from the direct reclaim paths (the one in __alloc_pages_slowpath and the other one in do_try_to_free_pages). So just being stupid and waiting for the timeout in direct reclaim while kswapd can make progress seemed to do a better job for that load. I can not exactly pinpoint the reason for that behaviour, it would be nice if somebody had an idea.There is a possibility that the behaviour in that case was due to flusher threads doing the writes rather than direct reclaim queueing pages for IO in an inefficient manner. So the stall is stupid but happens to work out well because flusher threads get the chance to do work.
If this is the case, we already have queue congested. removing congestion_wait() might cause regression but either your change or the congestion_wait_check() should not have the regression, as we do check if the bdi is congested. Thanks, Shaohua -- 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>