On Thu, 8 May 2014, Andrew Morton wrote: > On Thu, 8 May 2014 10:35:15 -0500 (CDT) Christoph Lameter <c...@linux.com> > 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 from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/