Re: [PATCH] cpusets+hotplug+preepmt broken

From: Paul Jackson (pj_at_sgi.com)
Date: 05/14/05

  • Next message: Paul Jackson: "Re: [Lse-tech] Re: [PATCH] cpusets+hotplug+preepmt broken"
    Date:	Sat, 14 May 2005 10:44:29 -0700
    To: Paul Jackson <pj@sgi.com>
    
    

    This patch removes the entwining of cpusets and hotplug code in the "No
    more Mr. Nice Guy" case of sched.c move_task_off_dead_cpu().

    This is the same patch I sent last hour, with this patch comment cleaned
    up, and Documentation/cpusets.txt fixed as well.

    Since the hotplug code is holding a spinlock at this point, we cannot
    take the cpuset semaphore, cpuset_sem, as would seem to be required
    either to update the tasks cpuset, or to scan up the nested cpuset
    chain, looking for the nearest cpuset ancestor that still has some CPUs
    that are online. So we just punt and blast the tasks cpus_allowed with
    all bits allowed.

    This reverts these lines of code to what they were before the cpuset
    patch. And it updates the cpuset Doc file, to match. This patch is
    untested.

    The one known alternative to this that seems to work came from Dinakar
    Guniguntala, and required the hotplug code to take the cpuset_sem
    semaphore much earlier in its processing. So far as we know, the
    increased locking entanglement between cpusets and hot plug of this
    alternative approach is not worth doing in this case.

    Signed-off-by: Paul Jackson <pj@sgi.com>

    diff -Naurp 2.6.12-rc1-mm4.orig/Documentation/cpusets.txt 2.6.12-rc1-mm4/Documentation/cpusets.txt
    --- 2.6.12-rc1-mm4.orig/Documentation/cpusets.txt 2005-05-14 10:20:27.000000000 -0700
    +++ 2.6.12-rc1-mm4/Documentation/cpusets.txt 2005-05-14 10:24:13.000000000 -0700
    @@ -252,8 +252,7 @@ in a tasks processor placement.
     There is an exception to the above. If hotplug funtionality is used
     to remove all the CPUs that are currently assigned to a cpuset,
     then the kernel will automatically update the cpus_allowed of all
    -tasks attached to CPUs in that cpuset with the online CPUs of the
    -nearest parent cpuset that still has some CPUs online. When memory
    +tasks attached to CPUs in that cpuset to allow all CPUs. When memory
     hotplug functionality for removing Memory Nodes is available, a
     similar exception is expected to apply there as well. In general,
     the kernel prefers to violate cpuset placement, over starving a task
    diff -Naurp 2.6.12-rc1-mm4.orig/kernel/sched.c 2.6.12-rc1-mm4/kernel/sched.c
    --- 2.6.12-rc1-mm4.orig/kernel/sched.c 2005-05-13 18:39:54.000000000 -0700
    +++ 2.6.12-rc1-mm4/kernel/sched.c 2005-05-14 09:06:29.000000000 -0700
    @@ -4301,7 +4301,7 @@ static void move_task_off_dead_cpu(int d
     
             /* No more Mr. Nice Guy. */
             if (dest_cpu == NR_CPUS) {
    - tsk->cpus_allowed = cpuset_cpus_allowed(tsk);
    + cpus_setall(tsk->cpus_allowed);
                     dest_cpu = any_online_cpu(tsk->cpus_allowed);
     
                     /*

    -- 
                      I won't rest till it's the best ...
                      Programmer, Linux Scalability
                      Paul Jackson <pj@engr.sgi.com> 1.650.933.1373, 1.925.600.0401
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at  http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at  http://www.tux.org/lkml/
    

  • Next message: Paul Jackson: "Re: [Lse-tech] Re: [PATCH] cpusets+hotplug+preepmt broken"

    Relevant Pages

    • Re: [PATCH] cpusets+hotplug+preepmt broken
      ... This patch removes the entwining of cpusets and hotplug code in the "No ... take the cpuset semaphore, cpuset_sem, as would seem to be required ... looking for the nearest cpuset ancestor that still has some CPUs ...
      (Linux-Kernel)
    • Re: [PATCH] ia64 cpuset + build_sched_domains() mangles structures
      ... Please include the patch below into -mm. ... > completely ignore the isolated CPUs when doing load-balancing. ... > belong in both an isolated cpuset and a non-isolated cpuset. ... > #ifdef CONFIG_NUMA ...
      (Linux-Kernel)
    • Re: [RFC PATCH] Dynamic sched domains (v0.5)
      ... Thanks for the minimalist patch. ... It looks promising, more promising than before. ... overlap of allowed cpus with its parent or any other cpuset ... To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ ...
      (Linux-Kernel)
    • [patch 1/8] cpusets v3 - Table of Contents
      ... The following patch set is being offered for review and comment. ... impact on existing kernel code than my previous cpumask patch set;). ... This version of the cpuset patch set is against 2.6.7-mm4. ...
      (Linux-Kernel)
    • Re: [PATCH] task containersv11 add tasks file interface fix for cpusets
      ... then the kernel will automatically update the cpus_allowed of all ... tasks attached to CPUs in that cpuset to allow all CPUs ... Does my patch cause any problems ...
      (Linux-Kernel)