[lkml]   [2012]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCH v2 0/7] CPU hotplug, cpusets: Fix issues with cpusets handling upon CPU hotplug
There are several issues related to how cpusets are handled during CPU
hotplug. One of the most annoying and noticeable consequences of this flaw
is that, after a suspend/resume or hibernation/restore, all non-root cpusets
will have only 1 cpu (the boot cpu) in their cpusets. Hence the tasks in
those cpusets get pinned to the boot cpu alone, leading to a drastic
performance degradation of those tasks/workloads.

One major user of cpusets is libvirt, which means that after a
suspend/hibernation cycle, all VMs suddenly end up running terribly slow!

This patchset solves these problems by reworking the way cpusets are handled
during CPU hotplug.

Patches 1 & 2 are cleanups that separate out hotplug handling so that we can
implement different logic for different hotplug events (CPU/Mem
online/offline). This also leads to some optimizations and more importantly
prepares the ground for implementing the cpuset fix for CPU hotplug.

Patches 3 & 4 are the core of the new solution for cpuset handling for
CPU hotplug. Patch 3 introduces the infrastructure needed, and Patch 4
exploits it for hotplug handling.

Patch 5 adds documentation for the new cpuset handling.
Patch 6 is an optimization opened up by the previous patches.
Patch 7 is a trivial removal of an outdated comment.

Srivatsa S. Bhat (7):
cpusets, hotplug: Implement cpuset tree traversal in a helper function
cpusets, hotplug: Restructure functions that are invoked during hotplug
cpusets: Introduce 'user_cpus_allowed' and rework the semantics of 'cpus_allowed'
CPU hotplug, cpusets: Workout hotplug handling for cpusets
Docs, cpusets: Update the cpuset documentation
cpusets: Optimize the implementation of guarantee_online_cpus()
cpusets: Remove out-dated comment about cpuset_track_online_cpus

Documentation/cgroups/cpusets.txt | 43 +++--
include/linux/cpuset.h | 4
kernel/cpuset.c | 317 ++++++++++++++++++++++++++++---------
kernel/sched/core.c | 4
4 files changed, 274 insertions(+), 94 deletions(-)

Srivatsa S. Bhat
IBM Linux Technology Center

 \ /
  Last update: 2012-05-04 21:41    [W:0.072 / U:17.620 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site