使用 cgroups 进行资源控制
什么是Cgroup
自 Linux 2.6.24 以来已被合并以来,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘、输入输出等)的内核功能。
主要子系统有
-
Cpu:CPU使用
-
Cpuacct:自动生成报告统计控制组所使用的CPU资源
-
Cpuset:通过调度程序来管理cgroup中任务对CPU访问
-
Memory:用于任务内存使用限制,并自动生成控制组内内存资源使用报告
-
Blkio:块输入输出子系统
-
Devices:允许或者拒绝cgroup的任务对指定设备的访问
-
Net_cls:对网络包进行标签化
-
Net_prio:动态设置应用程序网络流量优先级
-
Freezer:用于挂起和恢复cgroup中的进程
安装Cgroup
安装Cgroup
yum install libcgroup libcgroup-tools
Cgroup启动设定
systemctl enable cgconfig
systemctl enable cgred
通过命令设置Cgroup
首先,创建一个组
创建一个名为 [CPU75_Mem_Group] 的控制组,目标为 CPU 和内存。
cgcreate -g cpu,memory:/CPU75_Mem_Group
设置限制值
为创建的控制组设置资源限制。
限制的使用率 75% x 核心数(在 4 核心的情况下)
当你计算[cpu.cfs_quota_us]
[ c p u . c f s q u o t a u s ] = 0.75 ∗ 4 c o r e ∗ 100000 ( 将 s