Redhat 7 cgroups学习笔记
一、准备
systemd
先了解systemd:
libcgroup工具
libcgroup 数据包, 在 Red Hat Enterprise Linux 之前版本中是管理 cgroup 的主要工具,但现已过时。为避免冲突,请不要将 libcgroup 工具应用于默认资源管控器,它们现在是 systemd 的专属域。这就让 libcgroup 工具的应用空间变得有限,只有当您需要管理目前不受systemd 支持的控制器时,请再使用它,例如 net_prio。
安装lib
如果执行lscgroup报告以下错误,则需要安装相关库:
- snippet.bash
[root@bogon ~]# lscgroup bash: lscgroup: : command not found...
yum安装lib:
- snippet.bash
[root@bogon ~]# yum install libcap-devel.x86_64, libcgroup-tools.x86_64, bridge-utils.x86_64
lssubsys
列出子系统挂载点:
- snippet.bash
[root@bogon ~]# lssubsys -am cpuset /sys/fs/cgroup/cpuset cpu,cpuacct /sys/fs/cgroup/cpu,cpuacct memory /sys/fs/cgroup/memory devices /sys/fs/cgroup/devices freezer /sys/fs/cgroup/freezer net_cls,net_prio /sys/fs/cgroup/net_cls,net_prio blkio /sys/fs/cgroup/blkio perf_event /sys/fs/cgroup/perf_event hugetlb /sys/fs/cgroup/hugetlb pids /sys/fs/cgroup/pids
或者,
- snippet.bash
[root@yz219 blkio]# grep -wi cgroup /proc/mounts | grep -wi cpu | head -n 1 | awk '{print $2}' /sys/fs/cgroup/cpu,cpuacct
cgset与cgget
libcgroup工具之一。
例如:
- snippet.bash
# 设置值: [root@yz219 boot]# cgset -r cpuset.cpus="1-3" yz # 读取值: [root@yz219 boot]# cgget -r cpuset.cpus yz yz: cpuset.cpus: 1-3
删除用户自己创建的资源组
假设用户yz
创建了以下资源组:
/sys/fs/cgroup/cpu/ff/cgdemo/
在 shell 中,直接使用rm
命令是无法删除cgdemo
的,报错:
- snippet.bash
yz@yz219:/sys/fs/cgroup/cpu/ff$ rm -rf cgdemo rm: 无法删除'cgdemo/cgroup.procs': 不允许的操作 rm: 无法删除'cgdemo/cpu.cfs_period_us': 不允许的操作 rm: 无法删除'cgdemo/cpu.stat': 不允许的操作 ……
但是,可以使用rmdir
删除:
- snippet.bash
yz@yz219:/sys/fs/cgroup/cpu/ff$ rmdir cgdemo
或者,使用cgdelete
命令删除:
- snippet.bash
yz@yz219:/sys/fs/cgroup/cpu$ cgdelete cpu:ff/cgdemo
如果是在 c 语言里,可以使用rmdir
直接删除。
二、实例
三、参考
打赏作者以资鼓励: