On Thu, 8 May 2014, Andrew Morton wrote: > On Thu, 8 May 2014 10:35:15 -0500 (CDT) Christoph Lameter <cl@xxxxxxxxx> wrote: > > --- linux.orig/kernel/time/tick-common.c 2014-05-06 10:51:19.711239813 -0500 > > +++ linux/kernel/time/tick-common.c 2014-05-06 10:51:19.711239813 -0500 > > @@ -222,6 +222,24 @@ > > tick_setup_oneshot(newdev, handler, next_event); > > } > > > > +/* > > + * Return a cpu number that may be used to run housekeeping > > + * tasks. This is usually the timekeeping cpu unless that > > + * is not available. Then we simply fall back to the current > > + * cpu. > > + */ > > This comment is unusably vague. What the heck is a "housekeeping > task"? Why would anyone call this and what is special about the CPU > number it returns? > > > > +int tick_get_housekeeping_cpu(void) > > +{ > > + int cpu; > > + > > + if (system_state < SYSTEM_RUNNING || tick_do_timer_cpu < 0) > > + cpu = raw_smp_processor_id(); That's completely bogus. The system state check is pointless and tick_do_timer_cpu even more so because if you call that code from a worker thread tick_do_timer_cpu should be assigned to some cpu. Aside of that I'm having a hard time to understand why this stuff wants to move around at all. I think we agreed long ago, that for the whole HPC FULL_NOHZ stuff you have to sacrify at least one CPU for housekeeping purposes of all kinds, timekeeping, statistics and whatever. So if you have a housekeeper, then it makes absolutely no sense at all to move it around in circles. Can you please enlighten me why we need this at all? Thanks, tglx -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>