On Tue, 26 Jan 2016, Mike Galbraith wrote: > > The system going idle is a fastpath. Mind boogling. > > Hohum, noted. Now what about those cycles, and the sleeping lock you > injected for -rt?
Since we (the NOHZ people) care mostly about NOHZ then lets restrict that to the NOHZ mode. Then it should not affect your load. Subject: Move quiet_vmstat() to NOHZ code quiet_vmstat() seems to cause regressions for some load because the cpu going idle is a "fastpath". Mind boogling. Strange claim. If the system goes idle then it has nothing to do after all But anyways if we shift the quiet_vmstat() into the NOHZ logic when it stops the tick then it will only affect those cores that are setup for NOHZ mode. That is where we want this processing after all to ensure that the OS keeps itself off those cores. Signed-off-by: Christoph Lameter <c...@linux.com> Index: linux/kernel/sched/idle.c =================================================================== --- linux.orig/kernel/sched/idle.c +++ linux/kernel/sched/idle.c @@ -213,7 +213,6 @@ static void cpu_idle_loop(void) */ __current_set_polling(); - quiet_vmstat(); tick_nohz_idle_enter(); while (!need_resched()) { Index: linux/kernel/time/tick-sched.c =================================================================== --- linux.orig/kernel/time/tick-sched.c +++ linux/kernel/time/tick-sched.c @@ -811,6 +811,7 @@ static void __tick_nohz_idle_enter(struc ts->idle_calls++; expires = tick_nohz_stop_sched_tick(ts, now, cpu); + quiet_vmstat(); if (expires.tv64 > 0LL) { ts->idle_sleeps++; ts->idle_expires = expires;