Re: [PATCH 2/2] block: Convert BDI proportion calculations to flexible proportions
From: Peter Zijlstra <peterz@infradead.org>
Date: 2012-06-01 10:14:11
Also in:
lkml
On Fri, 2012-06-01 at 00:42 +0200, Jan Kara wrote:
On Fri 01-06-12 00:26:05, Peter Zijlstra wrote:quoted
On Fri, 2012-06-01 at 00:11 +0200, Jan Kara wrote:quoted
bool fprop_new_period(struct fprop_global *p, int periods) { - u64 events = percpu_counter_sum(&p->events); + u64 events; + unsigned long flags; + local_irq_save(flags); + events = percpu_counter_sum(&p->events); + local_irq_restore(flags); /* * Don't do anything if there are no events. */@@ -73,7 +77,9 @@ bool fprop_new_period(struct fprop_global *p, int periods) if (periods < 64) events -= events >> periods; /* Use addition to avoid losing events happening between sum and set */ + local_irq_save(flags); percpu_counter_add(&p->events, -events); + local_irq_restore(flags); p->period += periods; write_seqcount_end(&p->sequence);Uhm, why bother enabling it in between? Just wrap the whole function in a single IRQ disable.I wanted to have interrupts disabled for as short as possible but if you think it doesn't matter, I'll take your advice. The result is attached.
Thing is, disabling interrupts is quite expensive and the extra few instructions covered isn't much. -- 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>