Since RHEL 6, CGroups have been a work in progress. So, in RHEL 7 features evolved through new Systemd commands like systemd-cgls, systemd-cgtop, and mainly systemctl set-property.
Still through Systemd, RHEL 7.0 brought the CPUShares (percentage of CPU), MemoryLimit (memory quota), and BlockIOWeight (percentage of block IO) main properties, allowing you to set some constraints on system resources.
RHEL 7.2 added StartupCPUShares, StartupBlockIOWeight, and most importantly CPUQuota.
Marc Richter, Technical Account Manager at Red Hat, recently published a series of articles helping you better understand CGroups:
- CGroup basics presents some basics and theory behind CGroups,
- Turning knobs investigates the current state of active CGroups,
- Thanks for the memory looks at the Memory controller.
But CGroups are still evolving: Chris Down from Facebook presented the new CGroupsv2 interface at the 2017 FOSDEM conference at the beginning of February. This new interface changes the way the CGroups hierarchy works and globally removes several existing inconsistencies. This interface is stable since the kernel 4.5 and requires a recent version of Systemd (>=v226) not available in RHEL 7 until now (but unofficial options exist).
As usual, you can find all these details and more at the CGroups page.