Re: [PATCH 1/1] hotplug cpu: migrate a task within its cpuset
From: Randy Dunlap
Date: Wed Mar 07 2007 - 13:28:59 EST
On Wed, 07 Mar 2007 08:24:44 -0600 Cliff Wickman wrote:
>
> From: Cliff Wickman <cpw@xxxxxxx>
>
> When a cpu is disabled, move_task_off_dead_cpu() is called for tasks
> that have been running on that cpu.
>
> Currently, such a task is migrated:
> 1) to any cpu on the same node as the disabled cpu, which is both online
> and among that task's cpus_allowed
> 2) to any cpu which is both online and among that task's cpus_allowed
>
> But the task's cpus_allowed may have been a single cpu.
>
> This patch would insert a preference to migrate such a task to a cpu within
> its cpuset (and set its cpus_allowed to its cpuset).
>
> With this patch, migrate the task to:
> 1) to any cpu on the same node as the disabled cpu, which is both online
> and among that task's cpus_allowed
> 2) to any online cpu within the task's cpuset
> 3) to any cpu which is both online and among that task's cpus_allowed
>
>
> Diffed against 2.6.16.37
Wow. Why?
or did you want this applied only to the 2.6.16.* stable kernel?
|--- linux.orig/kernel/sched.c
|+++ linux/kernel/sched.c
--------------------------
Patching file kernel/sched.c using Plan A...
Hunk #1 succeeded at 5032 with fuzz 2 (offset 430 lines).
Hmm... Ignoring the trailing garbage.
done
<me checks>
I'm surprised that none of Documentation/SubmittingPatches or
The Perfect Patch (http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt)
or Jeff Garzik's patch-format page (http://linux.yyz.us/patch-format.html)
(AFAICT) mention that patches should be made against "current" or
"recent" or "head of tree" or some such words.
I'll "fix" Doc/SubmittingPatches... and/or Doc/SubmitChecklist.
> Signed-off-by: Cliff Wickman <cpw@xxxxxxx>
>
> ---
> kernel/sched.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> Index: linux/kernel/sched.c
> ===================================================================
> --- linux.orig/kernel/sched.c
> +++ linux/kernel/sched.c
> @@ -4602,6 +4602,12 @@ static void move_task_off_dead_cpu(int d
> if (dest_cpu == NR_CPUS)
> dest_cpu = any_online_cpu(tsk->cpus_allowed);
>
> + /* try to stay on the same cpuset */
> + if (dest_cpu == NR_CPUS) {
> + tsk->cpus_allowed = cpuset_cpus_allowed(tsk);
> + dest_cpu = any_online_cpu(tsk->cpus_allowed);
> + }
> +
> /* No more Mr. Nice Guy. */
> if (dest_cpu == NR_CPUS) {
> cpus_setall(tsk->cpus_allowed);
> -
> 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/
>
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
-
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/