Re: CPU Hotplug: Hotplug Script And SIGPWR

From: Tim Hockin
Date: Tue Jan 20 2004 - 02:57:12 EST


On Tue, Jan 20, 2004 at 06:45:37PM +1100, Nick Piggin wrote:
> >I guess a hotplug script MAY fail. I don't think it's a good idea to make
> >your CPU hotplug script fail. May and Misght are different. It's up to
> >the
> >implementor whether the script can get into a failure condition.
> >
>
> Sorry bad wording. The script may fail to be executed.

Under what conditions? Not arbitrary entropy, surely. If a hotplug script
is present and does not blow up, it should be safe to assume it will be run
upon an event being delivered. If not, we have a WAY bigger problem :)

> >What if <which> process needs guaranteed scheduling latency? Do we really
> >_guarantee_ scheduling latency *anywhere*?
>
> We do guarantee that a realtime task won't be blocked waiting for
> a hotplug script to fault in and start it up again (which may not
> happen). Not sure how important this issue is.

We have a conflict of priority here. If an RT task is affined to CPU A and
CPU A gets yanked out, what do we do?

Obviously the RT task can't keep running as it was. It was affined to A.
Maybe for a good reason. I see we have a few choices here:

* re-affine it automatically, thereby silently undoing the explicit
affinity.
* violate it's RT scheduling by not running it until it has been re-affined
or CPU A returns to the pool/

Sending it a SIGPWR means you have to run it on a different CPU that it was
affined to, which is already a violation.

Basically, RT tasks + CPU affinity + hotplug CPUs do not play nicely
together. I don't see much that can be done to solve that. With the
procstate stuff I did, and with planned CPU unplugs we *do* have time before
the CPU really goes offline in which to act. With unplanned CPU offlining,
we don't.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/