[systemd-devel] [HEADSUP] systemd cgroup changes
lennart at poettering.net
Mon Jun 17 05:49:55 PDT 2013
in the past weeks we have been sitting down with the cgroup maintainer
in the kernel, Tejun Heo, at a number of conferences. During these
discussions it became very clear to us that the way systemd currently
exposes cgroups exposes too much of the guts of it, and is incompatible
with how the kernel cgroup subsystem will be cleaned up in the near-term
Hence I'd like to let everybody in the systemd community know that the
cgroup settings, commands and APIs in systemd will change soon. Please
be aware of this when you make use of advanced cgroup functionality.
- The functionality to define orthogonal cgroup trees for the various
controllers will be removed. In fact we'll likely remove the entire
API for setting abritrary per-controller paths for each unit. Instead
we will introduce a new concept of "Slices" which will allow you to
partition system resources in a tree and move units, users, and
machines to arbitrary places in it. There will only be a single cgroup
tree, but the various controllers may be enabled/disabled separately
for each group, so that individual controllers might only see a
subtree of the full tree, but not orthogonal trees anymore. The
ConrolGroup= unit setting will go away, and be replaced by Slice= plus
EnableControllers= or so.
- ControlGroupPersistent= will likely go away, systemd will be the only
component of the OS that sets up the cgroup tree.
- ControlGroupAttribute= will most likely go away entirely. Instead we
will introduce more high level controls like the existing CPUShares=,
MemoryLimit= and so on. (BTW, if there's a specific attribute we currently don't
cover but which you really need let us know and we will see if we can
add a high-level control for it.)
- CPUShares=, MemoryLimit= and so on will continue to exist as before.
- "systemctl set-cgroup" will go away, and be replaced by systemctl
"set-slice" or something similar.
- "systemctl set-cgroup-attr" will go away, and be replaced by
"systemctl set-attr" or so, which only can set the high level
- The (currently undocumented) bus APIs for cgroup controls will be
Sorry for this disruption. Thankfully we have not documented these APIs
yet and we haven't made the funcionality too widely known. We hate to
make incompatible changes like this, but in this case it's probably
better to clean this up early when it is not often used instead of late
when everybody already uses this.
This will remove a few bits of functionality but all in all give you a
lot more back. For example, the "slice" functionality will provide you
with a powerful and naturally built-in way to partition your resources
in arbitrary ways, and can be used to not only assign resource limits to
systemd units but also login users and machines.
We haven't hashed out all the details yet, but expect this to land very
soon in git.
Lennart Poettering - Red Hat, Inc.
More information about the systemd-devel