Messages in this thread | | | Date | Mon, 24 Sep 2007 09:35:23 +0200 | From | Peter Zijlstra <> | Subject | Re: 2.6.23-rc6-mm1 -- mkfs stuck in 'D' |
| |
On Mon, 24 Sep 2007 11:01:10 +0800 Fengguang Wu <wfg@mail.ustc.edu.cn> wrote:
> > That is an interesting idea how about this: > > It looks like a workaround, but it does solve the most important problem. > And it is a good logic by itself. So I'd vote for it. > > The fundamental problem is that the per-bdi-writeback-completion based > estimation is not accurate under light loads. The problem remains for > a light-load sda when there is a heavy-load sdb.
Well, sure, in that case sda would get to write out a lot of small things. But in that case it would be fair wrt the other writers.
> One more workaround > could be to grant bdi(s) a minimal bdi_thresh.
Ah, no, that is no good. For if there were a lot of BDIs this might happen: nr_bdis * min_thresh > dirty_limit.
> Or better to adjust the estimation logic?
Not sure what we can do here. The current thing is simple, fast and fair.
> > + /* > > + * break out early when: > > + * - we're below the bdi limit > > + * - we're below half the total limit > > + * > > + * we let the numbers exceed the strict bdi limit if the total > > + * numbers are too low, this avoids (excessive) small writeouts. > > + */ > > + if (bdi_nr_reclaimable + bdi_nr_writeback <= bdi_thresh || > > + nr_reclaimable + nr_writeback < dirty_thresh / 2) > > break; > > This may be slightly better: > > if (bdi_nr_reclaimable + bdi_nr_writeback <= bdi_thresh) > break; > /* > * Throttle it only when the background writeback cannot catchup. > */ > if (nr_reclaimable + nr_writeback < > (background_thresh + dirty_thresh) / 2) > break;
Ah, indeed. Good idea. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |