FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
Redhat 7 cgroups学习笔记

一、准备

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直接删除。

二、实例

三、参考



打赏作者以资鼓励: