Re: CPU Hotplug add/remove optimizations

From: Andi Kleen
Date: Tue Aug 03 2010 - 04:08:16 EST

Rohit Vaswani <rvaswani@xxxxxxxxxxxxxx> writes:

> Hi,
> We are trying to use cpu hotplug to turn off a cpu when it is not in
> use to improve power management.

It might not be a big issue on smaller systems, but CPU hotunplug
involves stop_machine() and that is a very costly thing
to do as systems become larger.

> I am trying to optimize the cpu
> hotplug add and cpu hotplug remove timings. Currently cpu hotplug add
> takes around 250ms and cpu hotplug remove takes 190 ms. For the
> current purposes we want to assume that we are removing and adding the
> same core. It seems that since we are actually not replacing the core
> ? there could be a lot of initialization overhead that could be
> saved and restored instead of calibrating the entire core again.
> One such thing we have been looking at is that once a core is powered
> up during cpu hotplug add, it runs the calibrate_delay routine to
> calculate the value of loops_per_jiffy. In such a case could we bypass
> the calibrate_delay function and just save and restore the value of
> loops_per_jiffy?
> Does this approach seem wrong to anyone?

It's wrong on a system that supports socket hotplug. The CPU you're
power up again might not be the same.

In theory you could have some low level interface that distingushes
these two cases, but right now that's not there.

> Can we safely assume that the core will start at the same clock speed
> at which the value was stored and then restored?

That neither.

ak@xxxxxxxxxxxxxxx -- Speaking for myself only.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at