Messages in this thread | | | Date | Wed, 23 Sep 2009 11:07:07 +0800 | From | Wu Fengguang <> | Subject | Re: regression in page writeback |
| |
On Wed, Sep 23, 2009 at 10:09:15AM +0800, Andrew Morton wrote: > On Wed, 23 Sep 2009 10:01:04 +0800 Wu Fengguang <fengguang.wu@intel.com> wrote: > > > > If there's still outstanding dirty data for any of those queues, both > > > wb_kupdate() and background_writeout() will take a teeny sleep and then > > > will re-poll the queues. > > > > > > Did that logic get broken? > > > > No, but the "teeny sleep" is normally much smaller. When io queue is > > not congested, every io completion event will wakeup the congestion > > waiters. Also A's event could wake up B's waiters. > > > > __freed_request() always calls blk_clear_queue_congested() if under > > congestion threshold which in turn wakes up congestion waiters: > > > > if (rl->count[sync] < queue_congestion_off_threshold(q)) > > blk_clear_queue_congested(q, sync); > > > > Yes. Have any problems been demonstrated due to that?
Hmm, I was merely clarifying a fact.
Chris Mason listed some reasons to convert the congestion_wait() based polls to the some queue waiting:
http://lkml.org/lkml/2009/9/8/210
My impression is, it changed obviously too fast without enough discussions.
> And what's _sufficiently_ wrong with that to justify adding potentially > thousands of kernel threads? It was always a design objective to avoid > doing that.
Yeah, the number of threads could be a problem.
I guess the per-bdi threads and congestion_wait are mostly two independent changes. congestion_wait is not the reason to do per-bdi threads. Just that Jens piggy backed some changes to congestion_wait.
Thanks, Fengguang
| |