]> git.baikalelectronics.ru Git - kernel.git/commit
sched: Sanitize irq accounting madness
authorThomas Gleixner <tglx@linutronix.de>
Fri, 2 May 2014 21:26:24 +0000 (23:26 +0200)
committerIngo Molnar <mingo@kernel.org>
Wed, 7 May 2014 09:51:30 +0000 (11:51 +0200)
commit05a1f2c94ee1f31a06c2597c59df908905905c03
tree93c541c4a81a35656c4c181e0a2dfc7a9a407ba4
parente7d08b47315e02bd5c5107ec88156578c7064a78
sched: Sanitize irq accounting madness

Russell reported, that irqtime_account_idle_ticks() takes ages due to:

       for (i = 0; i < ticks; i++)
               irqtime_account_process_tick(current, 0, rq);

It's sad, that this code was written way _AFTER_ the NOHZ idle
functionality was available. I charge myself guitly for not paying
attention when that crap got merged with commit 2cc59d1f6 ("sched:
Export ns irqtimes through /proc/stat")

So instead of looping nr_ticks times just apply the whole thing at
once.

As a side note: The whole cputime_t vs. u64 business in that context
wants to be cleaned up as well. There is no point in having all these
back and forth conversions. Lets standardise on u64 nsec for all
kernel internal accounting and be done with it. Everything else does
not make sense at all for fine grained accounting. Frederic, can you
please take care of that?

Reported-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Venkatesh Pallipadi <venki@google.com>
Cc: Shaun Ruffell <sruffell@digium.com>
Cc: stable@vger.kernel.org
Link: http://lkml.kernel.org/r/alpine.DEB.2.02.1405022307000.6261@ionos.tec.linutronix.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/cputime.c