Skip to content
Search

Cgroup

lastmod 2025-01-22created 2016-06-223 edits

cgroup (Control Groups) is a Linux kernel feature that lets you allocate, limit, and monitor system resources (CPU, memory, disk I/O, network, etc.) per process group. This makes it useful for container environments, virtualization, system resource distribution, and performance optimization.

Key features

Resource Limiting
Can limit usage of CPU, memory, disk I/O, etc.
Hierarchical Organization
Groups are created in parent-child relationships, so child groups can inherit the policies of parent groups.
Resource Accounting
Monitors the resources used by a specific process group and collects statistics.
Resource Isolation
Isolates different process groups so they use resources independently.

Main subsystems (Controller)

  • cpu - Controls CPU usage (priority, scheduling)
  • cpuacct - Tracks and reports CPU usage
  • memory - Limits memory usage and controls swap
  • blkio - Manages block device (I/O) resources
  • net_cls/net_prio - Allocates network bandwidth and adjusts priority
  • pids - Limits the number of processes
  • devices - Manages access permissions for specific devices

cgroup versions

  • cgroup v1 - Each controller is managed separately; flexible but complex.
  • cgroup v2 - Single hierarchy, provides a consistent resource management approach.

Main commands

  • cgcreate - Create a new cgroup
  • cgset - Allocate and configure specific resources
  • cgexec - Run a process in a specific cgroup
  • cgdelete - Delete a cgroup
  • /sys/fs/cgroup/ - File system for cgroup configuration and monitoring

Examples

Create a new cgroup and limit memory:

sudo cgcreate -g memory:/mygroup
echo 500M | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
sudo cgexec -g memory:mygroup ./my_program

Limit CPU usage:

sudo cgcreate -g cpu:/cpulimited
echo 50000 | sudo tee /sys/fs/cgroup/cpu/cpulimited/cpu.cfs_quota_us
sudo cgexec -g cpu:cpulimited my_program

Use cases

  • Docker and Kubernetes container resource management
  • Resource isolation in multi-tenant environments
  • Limiting CPU and memory usage of specific tasks
  • Performance analysis and resource distribution optimization

See also

Favorite site

author Zer0 sitemap