Hi, I've decided to take my stab at trying to make balance_dirty_pages() not submit IO :). I hoped to have something simpler than Fengguang and we'll see whether it is good enough. The basic idea (implemented in the third patch) is that processes throttled in balance_dirty_pages() wait for enough IO to complete. The waiting is implemented as follows: Whenever we decide to throttle a task in balance_dirty_pages(), task adds itself to a list of tasks that are throttled against that bdi and goes to sleep waiting to receive specified amount of page IO completions. Once in a while (currently HZ/10, in patch 5 the interval is autotuned based on observed IO rate), accumulated page IO completions are distributed equally among waiting tasks. This waiting scheme has been chosen so that waiting time in balance_dirty_pages() is proportional to number_waited_pages * number_of_waiters. In particular it does not depend on the total number of pages being waited for, thus providing possibly a fairer results. I gave the patches some basic testing (multiple parallel dd's to a single drive) and they seem to work OK. The dd's get equal share of the disk throughput (about 10.5 MB/s, which is nice result given the disk can do about 87 MB/s when writing single-threaded), and dirty limit does not get exceeded. Of course much more testing needs to be done but I hope it's fine for the first posting :). Comments welcome. Honza -- 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