virsh allows the grouping and allocation of resources on a per guest virtual machine basis. This is managed by the libvirt daemon which creates cgroups and manages them on behalf of the guest virtual machine. The only thing that is left for the system administrator to do is to either query or set tunables against specified guest virtual machines. The
libvirt service uses the following cgroups for tuning and monitoring virtual machines:
memory - The memory controller allows for setting limits on RAM and swap usage and querying cumulative usage of all processes in the group
cpuset - The CPU set controller binds processes within a group to a set of CPUs and controls migration between CPUs.
cpuacct - The CPU accounting controller provides information about CPU usage for a group of processes.
cpu -The CPU scheduler controller controls the prioritization of processes in the group. This is similar to granting
nice level privileges.
devices - The devices controller grants access control lists on character and block devices.
freezer - The freezer controller pauses and resumes execution of processes in the group. This is similar to
SIGSTOP for the whole group.
net_cls - The network class controller manages network utilization by associating processes with a
tc network class.
cgroups are set up by
systemd in libvirt. The following
virsh tuning commands affect the way cgroups are configured: