• Cliff Wickman's avatar
    hotplug cpu: migrate a task within its cpuset · 470fd646
    Cliff Wickman authored
    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
    
    It is typical of a multithreaded application running on a large NUMA system to
    have its tasks confined to a cpuset so as to cluster them near the memory that
    they share.  Furthermore, it is typical to explicitly place such a task on a
    specific cpu in that cpuset.  And in that case the task's cpus_allowed
    includes only a single cpu.
    
    This patch would insert a preference to migrate such a task to some cpu within
    its cpuset (and set its cpus_allowed to its entire 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...
    470fd646
cpuset.c 67.2 KB