Re: [PATCH 7/8] writeback: Do not sleep on the congestion queue ifthere are no congested BDIs

From: Mel Gorman
Date: Thu Sep 16 2010 - 04:23:31 EST


On Thu, Sep 16, 2010 at 04:59:49PM +0900, Minchan Kim wrote:
> On Wed, Sep 15, 2010 at 01:27:50PM +0100, Mel Gorman wrote:
> > If congestion_wait() is called with no BDI congested, the caller will sleep
> > for the full timeout and this may be an unnecessary sleep. This patch adds
> > a wait_iff_congested() that checks congestion and only sleeps if a BDI is
> > congested else, it calls cond_resched() to ensure the caller is not hogging
> > the CPU longer than its quota but otherwise will not sleep.
> >
> > This is aimed at reducing some of the major desktop stalls reported during
> > IO. For example, while kswapd is operating, it calls congestion_wait()
> > but it could just have been reclaiming clean page cache pages with no
> > congestion. Without this patch, it would sleep for a full timeout but after
> > this patch, it'll just call schedule() if it has been on the CPU too long.
> > Similar logic applies to direct reclaimers that are not making enough
> > progress.
>
> I confused due to kswapd you mentioned.
> This patch affects only direct reclaim.
> Please, complete the description.
>

My bad, when the description was first written, both were affected and I
neglected to correct the description. I'm still debating with myself as
to whether the kswapd congestion_wait() should be wait_iff_congested()
or not.

Thanks

> "This patch affects direct reclaimer to reduce stall"
> Otherwise, looks good to me.
>
> >
> > Signed-off-by: Mel Gorman <mel@xxxxxxxxx>
> Reviewed-by: Minchan Kim <minchan.kim@xxxxxxxxx>
>
> --
> Kind regards,
> Minchan Kim
>

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/