vmstat: Reduce time interval to stat update on idle cpu
authorChristoph Lameter <cl@linux.com>
Wed, 11 Feb 2015 23:28:36 +0000 (15:28 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 12 Feb 2015 01:06:07 +0000 (17:06 -0800)
It was noted that the vm stat shepherd runs every 2 seconds and that the
vmstat update is then scheduled 2 seconds in the future.

This yields an interval of double the time interval which is not desired.

Change the shepherd so that it does not delay the vmstat update on the
other cpu.  We stil have to use schedule_delayed_work since we are using a
delayed_work_struct but we can set the delay to 0.

Signed-off-by: Christoph Lameter <cl@linux.com>
Acked-by: Michal Hocko <mhocko@suse.cz>
Cc: Vinayak Menon <vinmenon@codeaurora.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/vmstat.c

index 470cdd5b924b05e182a9b7c6428e0accac953844..4f5cd974e11a0adbb8a601cc92b9866ab6d67d55 100644 (file)
@@ -1437,8 +1437,8 @@ static void vmstat_shepherd(struct work_struct *w)
                if (need_update(cpu) &&
                        cpumask_test_and_clear_cpu(cpu, cpu_stat_off))
 
-                       schedule_delayed_work_on(cpu, &per_cpu(vmstat_work, cpu),
-                               __round_jiffies_relative(sysctl_stat_interval, cpu));
+                       schedule_delayed_work_on(cpu,
+                               &per_cpu(vmstat_work, cpu), 0);
 
        put_online_cpus();