On Sat, 2009-08-22 at 20:11 +0200, Peter Zijlstra wrote: > > > + /* always throttle if over threshold */ > > > + if (nr_reclaimable + nr_writeback < dirty_thresh) { > > > > That 'if' is a big behavior change. It effectively blocks every one > > and canceled Peter's proportional throttling work: the less a process > > dirtied, the less it should be throttled. > > Hmm, I think you're right, I had not considered that, thanks for > catching that. So in retrospect I think I might have been wrong here. The per task thing causes the bdi limit to be lower than the bdi limit based on writeback speed alone. That is, the more a task dirties, the lower the bdi limit is as seen for that task. So if we get a task that generates tons of dirty pages (dd) then it won't ever actually hit the full dirty limit, even if its the only task on the system, and this outer if() will always be true. Only when we actually saturate the full dirty limit will we fall through and throttle, but that is ok -- we want to enforce the full limit. In short, a very aggressive dirtier will have a bdi limit lower than the total limit (at all times) leaving a little room at the top for the occasional dirtier to make quick progress. Wu, does that cover the scenario you had in mind? -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html