Skip to contentSkip to conversation

ARM: idle sleep time for hotplugged cpu

DISCUSSION Taniya Das 3 participants 4 messages Nov 5, 2012 – Nov 6, 2012 Arm Qualcomm mailing list

lore
Share & tools
lore

Taniya Das

author
#0 lore raw

Hello,

I was looking at the arch/arm/process.c:cpu_die, I was wondering why we do not exit from NOHZ for a hotplugged/offline cpu?
If I understand correctly an offlined cpu too will enter NOHz(tick_nohz_idle_enter) and update the idle_entrytime. The cpu will die and it will reenter the idle thread and update idle_entrytime onces it comes back online and only then it will exit NOHz, but time spent in sleep idle_sleeptime will be wrongly calculated.

void cpu_idle(void)

{

.....

/* endless idle loop with no priority at all */

while (1) {

idle_notifier_call_chain(IDLE_START);

tick_nohz_idle_enter();--> Offline CPU entering NOHZ

rcu_idle_enter();

while (!need_resched()) {

#ifdef CONFIG_HOTPLUG_CPU

if (cpu_is_offline(smp_processor_id()))
cpu_die(); ---> CPU becomes offline and re-enter the idle thread without exiting from NOHZ,

#endif

...
}

Is it a good idea to exit from NOHZ before cpu_die() or it could be achieved in some other way? Please provide your comments.

Signature · 4 lines
Thanks & Regards,
Taniya Das.

QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation.
#1 lore raw
Quoted 2 lines · Taniya Das

I was looking at the arch/arm/process.c:cpu_die, I was wondering why we do not exit from NOHZ for a hotplugged/offline cpu?

Offlined CPUs are not supposed to just 'return' from cpu_die(), and in actual fact they can't.

#2 lore raw
Quoted 6 lines · Russell King - ARM Linux
Quoted 2 lines · Taniya Das

I was looking at the arch/arm/process.c:cpu_die, I was wondering why we do not exit from NOHZ for a hotplugged/offline cpu?

Offlined CPUs are not supposed to just 'return' from cpu_die(), and in actual fact they can't.

Although an offline CPU will not come back into the idle thread by returning from cpu_die(), I believe the question about exiting nohz mode before cpu_die() still stands.

Quoted 1 line

From arch/arm/process.c:cpu_idle() it appears a CPU could enter

pm_idle() for a while (in nohz mode), then execute the inner loop again and call cpu_die(). Is there the potential for cpu idle time accounting to get messed up here by not exiting nohz mode prior to the cpu dying, so that missed ticks from nohz are properly accounted for?

thanks,
Steve

Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
#3 lore raw
Quoted 11 lines · Steve Muckle
Quoted 6 lines · Russell King - ARM Linux
Quoted 2 lines · Taniya Das

I was looking at the arch/arm/process.c:cpu_die, I was wondering why we do not exit from NOHZ for a hotplugged/offline cpu?

Offlined CPUs are not supposed to just 'return' from cpu_die(), and in actual fact they can't.

Although an offline CPU will not come back into the idle thread by returning from cpu_die(), I believe the question about exiting nohz mode before cpu_die() still stands.

Well, that depends on the design of all that. I don't know that, but what I do know is we're doing exactly the same as x86 which I presume is correct.

Quoted 5 lines
Quoted 1 line

From arch/arm/process.c:cpu_idle() it appears a CPU could enter

pm_idle() for a while (in nohz mode), then execute the inner loop again and call cpu_die(). Is there the potential for cpu idle time accounting to get messed up here by not exiting nohz mode prior to the cpu dying, so that missed ticks from nohz are properly accounted for?

Why does the idle time matter if the CPU has been taken offline?

In any case, I think this is a question for the CPU idle people; it's not a feature that I've ever knowingly used or have any interest in using at the moment.