[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20070405162425.eb78c701.akpm@linux-foundation.org>
Date: Thu, 5 Apr 2007 16:24:25 -0700
From: Andrew Morton <akpm@...ux-foundation.org>
To: root@...gramming.kicks-ass.net
Cc: linux-mm@...ck.org, linux-kernel@...r.kernel.org,
miklos@...redi.hu, neilb@...e.de, dgc@....com,
tomoki.sekiyama.qu@...achi.com, a.p.zijlstra@...llo.nl,
nikita@...sterfs.com
Subject: Re: [PATCH 12/12] mm: per BDI congestion feedback
On Thu, 05 Apr 2007 19:42:21 +0200
root@...gramming.kicks-ass.net wrote:
> Now that we have per BDI dirty throttling is makes sense to also have oer BDI
> congestion feedback; why wait on another device if the current one is not
> congested.
Similar comments apply. congestion_wait() should be called
throttle_at_a_rate_proportional_to_the_speed_of_presently_uncongested_queues().
If a process is throttled in the page allocator waiting for pages to become
reclaimable, that process absolutely does not care whether those pages were
previously dirty against /dev/sda or against /dev/sdb. It wants to be woken
up for writeout completion against any queue.
- wbc.encountered_congestion = 0;
+ wbc.encountered_congestion = NULL;
wbc.nr_to_write = MAX_WRITEBACK_PAGES;
wbc.pages_skipped = 0;
writeback_inodes(&wbc);
min_pages -= MAX_WRITEBACK_PAGES - wbc.nr_to_write;
if (wbc.nr_to_write > 0 || wbc.pages_skipped > 0) {
/* Wrote less than expected */
- congestion_wait(WRITE, HZ/10);
- if (!wbc.encountered_congestion)
+ if (wbc.encountered_congestion)
+ congestion_wait(wbc.encountered_congestion,
+ WRITE, HZ/10);
+ else
Well that confused me. You'd be needing to rename
wbc.encountered_congestion to congested_bdi or something.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists