​cgroup2相关文件节点介绍

可能以前是通过cgroup的方式限制的,定义一个分组不给任何cpu,将被冻的线程加到这个分组就实现了冻结。现在的逻辑有些变化,每个进程有freeze节点,如果被冻将这个节点置为1,通知kernel执行相关冻结逻辑,cpu调度的时候发现处于冻结状态不给调度,进程状态不一样,还是s状态,堆栈处于do_freeze_trip。

0

核心接口文件

所有 cgroup 核心文件均以 cgroup.为前缀。

1. cgroup.type

类型:读写单值文件(仅非根 cgroup 存在)

读取值:

"domain":普通有效的域 cgroup

"domain threaded":作为线程化子树根的域 cgroup

"domain invalid":处于无效状态的 cgroup(无法填充或启用控制器,但可转为线程化 cgroup)

"threaded":线程化 cgroup(属于线程化子树成员)写入操作:写入 "threaded"可将 cgroup 转为线程化(单向操作)。

例如我的手机是domain

0


2. cgroup.procs

类型:读写换行分隔值文件(所有 cgroup 存在)

读取:列出属于该 cgroup 的所有进程 PID(无序,可能重复)。

写入:写入 PID 可迁移对应进程至该 cgroup。需满足:

对目标 cgroup.procs有写入权限

对源和目标 cgroup 的共同祖先 cgroup.procs有写入权限线程化 cgroup:读取返回 EOPNOTSUPP(因所有进程属于线程根),写入会迁移进程的所有线程。

0


3. cgroup.threads

类型:读写换行分隔值文件(所有 cgroup 存在)

读取:列出属于该 cgroup 的所有线程 TID(无序,可能重复)。

写入:写入 TID 可迁移对应线程至该 cgroup。需满足:

对目标 cgroup.threads有写入权限

源 cgroup 与目标 cgroup 在同一资源域

对共同祖先 cgroup.procs有写入权限

0


4. cgroup.controllers

类型:只读空格分隔值文件(所有 cgroup 存在)

内容:列出该 cgroup 可用的所有控制器(无序)。

实测如下:

0


5. cgroup.subtree_control

类型:读写空格分隔值文件(初始为空)

读取:列出已启用控制器(控制资源分配到子 cgroup)。

写入:以 +(启用)或 -(禁用)前缀操作控制器(如 "+cpu -memory")。多次操作同一控制器时,最后一次生效。

0


6. cgroup.events

类型:只读扁平键值文件(非根 cgroup 存在)

键值:

populated:1(含存活进程或其子 cgroup 含进程)或 0

frozen:1(已冻结)或 0事件:值变更时触发文件修改事件。

0


7. cgroup.max.descendants

类型:读写单值文件(默认 "max")

功能:限制子 cgroup 的最大数量(超限时创建失败)。

0


8. cgroup.max.depth

类型:读写单值文件(默认 "max")

功能:限制当前 cgroup 下的最大嵌套深度(超限时创建子 cgroup 失败)。

0


9. cgroup.stat

类型:只读扁平键值文件

键值:

nr_descendants:可见子 cgroup 总数

nr_dying_descendants:待销毁子 cgroup 总数(删除后进入此状态)

nr_subsys_:当前及子 cgroup 的活动子系统数(如 memory)

nr_dying_subsys_:当前及子 cgroup 的待销毁子系统数

0


10. cgroup.freeze

类型:读写单值文件(非根 cgroup 存在,默认 "0")

操作:

写入 "1":冻结该 cgroup 及所有子 cgroup(进程停止运行)

写入 "0":解冻特性:

冻结状态传播:祖先 cgroup 冻结会导致后代冻结

进程可被终止或迁移(迁入停止,迁出恢复运行)

不影响 cgroup 树操作(可删除冻结的空 cgroup 或创建子 cgroup)

0


11. cgroup.kill

类型:只写单值文件(非根 cgroup 存在)

操作:写入 "1"杀死该 cgroup 及所有子 cgroup 中的进程(发送 SIGKILL)。

线程化 cgroup:写入返回 EOPNOTSUPP(因需操作整个线程组)。

0


12. cgroup.pressure

类型:读写单值文件(默认 "1")

操作:

"0":禁用 PSI(Pressure Stall Information)统计

"1":启用 PSI 统计特性:非层级化(不影响后代 cgroup)。

我的android 15 手机没有该文件节点

0


13. irq.pressure

类型:读写嵌套键值文件

功能:显示 IRQ/SOFTIRQ 的压力停滞信息(详见 Documentation/accounting/psi.rst)。

我的android 15 手机没有该文件节点

0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值