Show Table of Contents
A.12. 常用可调参数
无论 cgroup 使用哪个子系统,下列参数都将出现在每一个被创建的 cgroup 中。
- tasks
- 包含一系列在 cgroup 中运行的进程(由它们的 PID 表示)。PID 列表不一定是有序的,也不一定是特有的(也就是说,可能包含重复条目)。将 PID 写入一个 cgroup 的
tasks
文件,可将此进程移至该 cgroup。 - cgroup.procs
- 包含在 cgroup 中运行的线程群组列表(由它们的 TGID 表示)。TGID 列表不一定是有序的,也不一定是特有的(也就是说,可能包含重复条目)。将 TGID 写入 cgroup 的
cgroup.procs
文件,可将此线程组群移至该 cgroup。 - cgroup.event_control
- 与 cgroup 的通知 API 一起,允许 cgroup 的变更状态通知被发送。
- notify_on_release
- 包含 Boolean 值,
1
或者0
,分别可以启动和禁用释放代理的指令。如果notify_on_release
启用,当 cgroup 不再包含任何任务时(即,cgroup 的tasks
文件包含 PID,而 PID 被移除,致使文件变空),kernel 会执行release_agent
文件的内容。通向此空 cgroup 的路径会作为释放代理的参数被提供。notify_on_release
参数的默认值在 root cgroup 中是0
。所有非 root cgroup 从其父 cgroup 处继承notify_on_release
的值。 - release_agent (仅在 root group 中出现)
- 当 “notify on release” 被触发,它包含要执行的指令。一旦 cgroup 的所有进程被清空,并且
notify_on_release
标记被启用,kernel 会运行release_agent
文件中的指令,并且提供通向被清空 cgroup 的相关路径(与 root cgroup 相关)作为参数。例如,释放代理可以用来自动移除空 cgroup,更多信息,请参阅例 A.4 “自动移除空 cgroup”。例 A.4. 自动移除空 cgroup
参照以下步骤,可将空 cgroup 从cpu
cgroup 中自动移除:- 例如,创建一个 shell 脚本用来移除空
cpu
cgroups,将其放入/usr/local/bin
,并使其可运行。~]#
cat /usr/local/bin/remove-empty-cpu-cgroup.sh
#!/bin/sh rmdir /cgroup/cpu/$1 ~]#chmod +x /usr/local/bin/remove-empty-cpu-cgroup.sh
$1
变量包含到达已清空 cgroup 的相对路径。 - 在
cpu
cgroup,启动notify_on_release
标签:~]#
echo 1 > /cgroup/cpu/notify_on_release
- 在
cpu
cgroup 中,指定一个可用的释放代理:~]#
echo "/usr/local/bin/remove-empty-cpu-cgroup.sh" > /cgroup/cpu/release_agent
- 测试您的配置,以确保已清空 cgroup 被正确移除:
cpu]#
pwd; ls
/cgroup/cpu cgroup.event_control cgroup.procs cpu.cfs_period_us cpu.cfs_quota_us cpu.rt_period_us cpu.rt_runtime_us cpu.shares cpu.stat libvirt notify_on_release release_agent tasks cpu]#cat notify_on_release
1 cpu]#cat release_agent
/usr/local/bin/remove-empty-cpu-cgroup.sh cpu]#mkdir blue; ls
blue cgroup.event_control cgroup.procs cpu.cfs_period_us cpu.cfs_quota_us cpu.rt_period_us cpu.rt_runtime_us cpu.shares cpu.stat libvirt notify_on_release release_agent tasks cpu]#cat blue/notify_on_release
1 cpu]#cgexec -g cpu:blue dd if=/dev/zero of=/dev/null bs=1024k &
[1] 8623 cpu]#cat blue/tasks
8623 cpu]#kill -9 8623
cpu]#ls
cgroup.event_control cgroup.procs cpu.cfs_period_us cpu.cfs_quota_us cpu.rt_period_us cpu.rt_runtime_us cpu.shares cpu.stat libvirt notify_on_release release_agent tasks
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.