Cgroup介绍
Cgroup介绍
Cgroup,全称是控制组(Control Group),是Linux内核中的一个特性,用于限制、记录和隔离进程组的资源使用。它可以管理的资源包括CPU、内存、磁盘I/O等。以下是一些主要功能:
- 限制资源:可以限制进程组使用的CPU时间、内存大小和I/O带宽等。
- 优先级管理:为不同的进程组设置资源使用优先级。
- 隔离:确保不同cgroup的进程不会互相影响。
- 监控:跟踪进程组的资源使用情况。
- 控制:可以暂停、恢复或终止进程组。
基本概念
- 控制器:管理特定资源类型的模块,如cpu或memory。
- 层级结构:cgroup以层级结构组织,每个节点代表一个cgroup,继承父节点的资源限制。
- 子系统:与控制器同义,附加到层级结构以强制执行资源限制。
常用命令
创建cgroup:
mkdir /sys/fs/cgroup/<controller>/my_cgroup
将进程加入cgroup:
echo <pid> > /sys/fs/cgroup/<controller>/my_cgroup/cgroup.procs
设置资源限制:
echo <limit> > /sys/fs/cgroup/<controller>/my_cgroup/<resource>.limit
示例
限制一组进程的CPU使用:
1、创建cgroup:
mkdir /sys/fs/cgroup/cpu/my_cgroup
2、设置CPU限制(例如,限制为50%):
echo 50000 > /sys/fs/cgroup/cpu/my_cgroup/cpu.cfs_quota_us
echo 100000 > /sys/fs/cgroup/cpu/my_cgroup/cpu.cfs_period_us
3、将进程加入cgroup:
echo <pid> > /sys/fs/cgroup/cpu/my_cgroup/cgroup.procs
使用场景
- 容器化:cgroup是Docker和Kubernetes等容器技术的基础,提供资源隔离。
- 性能管理:确保关键应用程序的资源分配。
- 系统稳定性:防止进程过度消耗系统资源。
通过cgroup,管理员可以更有效地管理Linux系统资源,确保进程的高效执行。