参考文档:
https://www.sohu.com/a/252263523_609423
https://blog.csdn.net/kongxx/article/details/98329891
https://www.cnblogs.com/opama/p/4712139.html
官方文档:
https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt
https://www.kernel.org/doc/Documentation/cgroup-v2.txt
安装cgroup和管理命令
yum install libcgroup libcgroup-tools # Centos
apt-get install cgroup-bin # Ubuntu
cgroup 的文件系统默认会挂载到/sys/fs/cgroup/
目录下
cgroup管理命令
cgclassify -- cgclassify命令是用来将运行的任务移动到一个或者多个cgroup。
cgclear -- cgclear 命令是用来删除层级中的所有cgroup。
cgconfig.conf -- 在cgconfig.conf文件中定义cgroup。
cgconfigparser -- cgconfigparser命令解析cgconfig.conf文件和并挂载层级。
cgcreate -- cgcreate在层级中创建新cgroup。
cgdelete -- cgdelete命令删除指定的cgroup。
cgexec -- cgexec命令在指定的cgroup中运行任务。
cgget -- cgget命令显示cgroup参数。
cgred.conf -- cgred.conf是cgred服务的配置文件。
cgrules.conf -- cgrules.conf 包含用来决定何时任务术语某些 cgroup的规则。
cgrulesengd -- cgrulesengd 在 cgroup 中发布任务。
cgset -- cgset 命令为 cgroup 设定参数。
lscgroup -- lscgroup 命令列出层级中的 cgroup。
lssubsys -- lssubsys 命令列出包含指定子系统的层级
查看cgroup子系统
lssubsys -am
内存cgroup
# 创建内存cgroup
cgcreate -g memory:/freeze_test
# 查看刚刚创建的cgroup
ls /sys/fs/cgroup/memory/freeze_test
# 查看当前cgroup设置
cgget -g memory:freeze_test
# 限制内存为10M
cgset -r memory.limit_in_bytes=10M freeze_test
# 可以看到已经设置到该文件
cat /sys/fs/cgroup/memory/freeze_test/memory.limit_in_bytes
# 使用设置的内存cgroup来运行python
cgexec -g memory:freeze_test python3
# 在解析器中执行:
test = ' ' * 1024 * 1024 * 1 # 不会退出
test = ' ' * 1024 * 1024 * 10 # 内存超过cgroup限制,会被kill掉
CPU cgroup
# 创建CPU cgroup
cgcreate -g cpu:/freeze_test
# 查看刚刚创建的cgroup
ls /sys/fs/cgroup/cpu/freeze_test
# 查看当前cgroup设置
cgget -g cpu:freeze_test
#参数说明:
# cpu.cfs_period_us:cpu分配的周期(微秒),默认为100000。
# cpu.cfs_quota_us:表示该control group限制占用的时间(微秒),默认为-1,表示不限制。如果设为50000,表示占用50000/10000=50%的CPU。
# 限制cpu使用率10%
cgset -r cpu.cfs_period_us=100000 freeze_test
cgset -r cpu.cfs_quota_us=10000 freeze_test
# 使用设置的CPU cgroup来运行python
cgexec -g cpu:freeze_test python3
# 在解析器中执行:
while True: a=1+1
通过top命令可以看到,python3进程使用10%的CPU
限制CPU个数,使用cpuset.cpus,这里不展开介绍
IO cgroup
# 创建IO cgroup
cgcreate -g blkio:/freeze_test
# 查看刚刚创建的cgroup
ls /sys/fs/cgroup/blkio/freeze_test
# 查找块设备号
lsblk
# 限制读写为1000bps
cgset -r blkio.throttle.read_bps_device="253:0 1000000" freeze_test
cgset -r blkio.throttle.write_bps_device="253:0 1000000" freeze_test
# 查看当前cgroup设置
cgget -g blkio:freeze_test
# 测试
cgexec -g blkio:freeze_test dd if=/dev/vda of=/dev/null
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏