aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@linux.intel.com>2010-07-19 13:59:42 -0400
committerPekka Enberg <penberg@cs.helsinki.fi>2010-07-20 03:03:23 -0400
commit78b435368fcd615e695a06012cd963a556284e00 (patch)
tree3d844f8a6c4b58f60b6a97510a08d703b455c22e /mm
parent1c5474a65bf15a4cb162dfff86d6d0b5a08a740c (diff)
slab: use deferable timers for its periodic housekeeping
slab has a "once every 2 second" timer for its housekeeping. As the number of logical processors is growing, its more and more common that this 2 second timer becomes the primary wakeup source. This patch turns this housekeeping timer into a deferable timer, which means that the timer does not interrupt idle, but just runs at the next event that wakes the cpu up. The impact is that the timer likely runs a bit later, but during the delay no code is running so there's not all that much reason for a difference in housekeeping to occur because of this delay. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Diffstat (limited to 'mm')
-rw-r--r--mm/slab.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/slab.c b/mm/slab.c
index e49f8f46f46d..29aad44a55c2 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -861,7 +861,7 @@ static void __cpuinit start_cpu_timer(int cpu)
861 */ 861 */
862 if (keventd_up() && reap_work->work.func == NULL) { 862 if (keventd_up() && reap_work->work.func == NULL) {
863 init_reap_node(cpu); 863 init_reap_node(cpu);
864 INIT_DELAYED_WORK(reap_work, cache_reap); 864 INIT_DELAYED_WORK_DEFERRABLE(reap_work, cache_reap);
865 schedule_delayed_work_on(cpu, reap_work, 865 schedule_delayed_work_on(cpu, reap_work,
866 __round_jiffies_relative(HZ, cpu)); 866 __round_jiffies_relative(HZ, cpu));
867 } 867 }