On Fri, 2010-06-18 at 16:09 +1000, Dave Chinner wrote: > > + bdi->wb_written_head = bdi_stat(bdi, BDI_WRITTEN) + wc->written; > > The resolution of the percpu counters is an issue here, I think. > percpu counters update in batches of 32 counts per CPU. wc->written > is going to have a value of roughly 8 or 32 depending on whether > bdi->dirty_exceeded is set or not. I note that you take this into > account when checking dirty threshold limits, but it doesn't appear > to be taken in to here. The BDI stuff uses a custom batch-size, see bdi_stat_error() and related. The total error is in the order of O(n log n) where n is the number of CPUs. But yeah, the whole dirty_exceeded thing makes life more interesting. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href