Re: [PATCH 05/10] writeback: per task dirty rate limit
From: Wu Fengguang <hidden>
Date: 2011-08-26 12:59:24
Also in:
linux-fsdevel, lkml
On Fri, Aug 26, 2011 at 08:51:09PM +0800, Peter Zijlstra wrote:
On Fri, 2011-08-26 at 19:38 +0800, Wu Fengguang wrote:quoted
+ preempt_disable(); /* - * Check the rate limiting. Also, we do not want to throttle real-time - * tasks in balance_dirty_pages(). Period. + * This prevents one CPU to accumulate too many dirtied pages without + * calling into balance_dirty_pages(), which can happen when there are + * 1000+ tasks, all of them start dirtying pages at exactly the same + * time, hence all honoured too large initial task->nr_dirtied_pause. */ - preempt_disable(); p = &__get_cpu_var(bdp_ratelimits);p = &get_cpu_var(bdp_ratelimits);
Ah yeah.. I actually followed your suggestion, and then find we'll eventually do two __get_cpu_var() calls here, one for bdp_ratelimits and the other for dirty_leaks in a planned patch. So let's keep the preempt_disable()/preempt_enable().
quoted
- *p += nr_pages_dirtied; - if (unlikely(*p >= ratelimit)) { - ratelimit = sync_writeback_pages(*p); + if (unlikely(current->nr_dirtied >= ratelimit)) *p = 0; - preempt_enable(); - balance_dirty_pages(mapping, ratelimit); - return; + else { + *p += nr_pages_dirtied; + if (unlikely(*p >= ratelimit_pages)) { + *p = 0; + ratelimit = 0; + } } preempt_enable();put_cpu_var(bdp_ratelimits);
ditto. Thanks, Fengguang -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>