Re: [PATCH 8/8] writeback: Do not sleep on the congestion queue ifthere are no congested BDIs or if significant congestion is notbeing encountered in the current zone

From: Mel Gorman
Date: Tue Sep 21 2010 - 18:10:27 EST


On Tue, Sep 21, 2010 at 02:44:13PM -0700, Andrew Morton wrote:
> On Mon, 20 Sep 2010 10:52:39 +0100
> Mel Gorman <mel@xxxxxxxxx> wrote:
>
> > > > This patch tracks how many pages backed by a congested BDI were found during
> > > > scanning. If all the dirty pages encountered on a list isolated from the
> > > > LRU belong to a congested BDI, the zone is marked congested until the zone
> > > > reaches the high watermark.
> > >
> > > High watermark, or low watermark?
> > >
> >
> > High watermark. The check is made by kswapd.
> >
> > > The terms are rather ambiguous so let's avoid them. Maybe "full"
> > > watermark and "empty"?
> > >
> >
> > Unfortunately they are ambiguous to me. I know what the high watermark
> > is but not what the full or empty watermarks are.
>
> Really. So what's the "high" watermark?

The high watermark is the point where kswapd goes back to sleep because
enough pages have been reclaimed. It's a proxy measure for memory pressure.

> From the above text I'm
> thinking that you mean the high watermark is when the queue has a small
> number of requests and the low watermark is when the queue has a large
> number of requests.
>

I was expecting "zone reaches the high watermark" was the clue that I was
talking about zone watermarks and not an IO queue but it could be better.


> I'd have thought that this is backwards: the "high" watermark is when
> the queue has a large (ie: high) number of requests.
>
> A problem. How do we fix it?
>

I will try and clarify. How about this as a replacement paragraph?

==== CUT HERE ====
This patch tracks how many pages backed by a congested BDI were found
during scanning. If all the dirty pages isolated from the LRU are
backed by a congested BDI, the zone is marked congested. A zone is marked
uncongested with enough pages have been freed for the zone's high watermark
to be reached indicating that the zone is no longer under any memory
pressure. wait_iff_congested() checks if there are any congested BDIs and if
so if the current zone is marked congested. If both conditions are met, the
caller sleeps on the congestion queue. Otherwise it will call cond_reched()
to yield the processor if necessary.

--
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/