Hi Frederic, 2016-04-13 21:56 GMT+08:00 Frederic Weisbecker <fweis...@gmail.com>: > Ticks can happen while the CPU is in dynticks-idle or dynticks-singletask > mode. In fact "nohz" or "dynticks" only mean that we exit the periodic > mode and we try to minimize the ticks as much as possible. The nohz > subsystem uses a confusing terminology with the internal state > "ts->tick_stopped" which is also available through its public interface > with tick_nohz_tick_stopped(). This is a misnomer as the tick is instead > reduced with the best effort rather than stopped. In the best case the > tick can indeed be actually stopped but there is no guarantee about that. > If a timer needs to fire one second later, a tick will fire while the > CPU is in nohz mode and this is a very common scenario. > > Now this confusion happens to be a problem with cpu load updates: > cpu_load_update_active() doesn't handle nohz ticks correctly because it > assumes that ticks are completely stopped in nohz mode and that > cpu_load_update_active() can't be called in dynticks mode. When that > happens, the whole previous tickless load is ignored and the function > just records the load for the current tick, ignoring potentially long > idle periods behind.
This is for one timer interrupt per second scenario, right? Regards, Wanpeng Li