On 01/15/2014 04:05 PM, Michael wang wrote:
On 01/15/2014 02:45 PM, Alex Shi wrote: [snip]
yes, to save your scenario, we need to know the next timer for idle cpu, but that is not enough, interrupt is totally unpredictable. So, I'd rather bear the coarse method now.
So what about just check 'ts->tick_stopped' and record one ticking idle cpu? the cost could be lower than time comparison, we could reduce the risk may be...(well, not so risky since the logical only works when system is relaxing with several cpu idle)
first, nohz full also stop tick. second, tick_stopped can not reflect the interrupt. when the idle cpu was interrupted, it's waken, then be a good candidate for task running.
IMHO, if we have to do gamble here, we better choose the cheaper bet, unless we could prove this 'coarse method' have more higher chance for BINGO than just check 'tick_stopped'...
Tick stopped on a nohz full CPU, but the cpu still had a task running...
BTW, may be the logical should be in the select_idle_sibling()?
both of functions need to be considered.
Regards, Michael Wang