This Feature has been submitted *before* Feature Submission Deadline and it
required input/changes from the owner or it was queued.
= Features/ResourceManagementTools =
Feature owner(s): Daniel Berrange <berrange(a)fedoraproject.org>
This feature will provide a library and command line tools for OS resource
management, utilizing on cgroups and integrating with systemd and libvirt.
== Detailed description ==
The kernel cgroups capability provides a general purpose framework for
resource management of processes. Both libvirt and systemd make use of cgroups
and resource tunables to be set and the libcgroup project provides some
command line tools for managing croups. Despite this, however, it is
difficult/impossible for an admin to use these to do effective system
partitioning. The guidelines on how applications should co-operate in use of
the cgroups hiearchy are flawed, leading applications to setup a hiearchy that
cannot be used to do system partitioning. Another part of the problem is that
there is no single high level view for the admin across all the "objects"
using cgroups - the cgroups tools themselves are too low level, focusing on
controllers & processes, rather than concepts like "resource groups",
service', 'virtual machine', etc.
This feature will seek to address the manageability problems with cgroups to
facilitate system partitioning / workload isolation. The guidelines on using
the cgroup hiearchy will be updated to allow a more practical hiearchy to be
created by applications like systemd/libvirt out of the box. A library and
corresponding command line tool will be written to provide a high level view
of objects needing resource management. This will allow an administrator to
easily define resource groups with different performance characteristics and
control placement of system services and virtual machines into those groups.
Follow on work will also look at how to extend the controls to user sessions,
and ad-hoc commands which may be invoked by users, as well as other non-cgroup
based resource tunables under sysfs / procfs.