- 博客(5)
- 收藏
- 关注
原创 memcg 水位线
触发超过high,就是执行一个回收,由内核直接回收/返回用户态的时候回收,不管是哪种,对用户态都有延迟。从中可以看出,开始时,并不会去扫描low以下的cgroup,尽量保护他们,但是实在回收不上来,那没办法了,还是得回收。memcg计数入口是try_charge_memcg。注意,cgroup级别的水位线与全局的水位线是反过来的,全局水位线是指reserve多少,cgroup水位是指用了多少。例如,一个cgroup,设置max=10G, high是8G,low是4G,min是2G,这个代表什么意思呢?
2025-12-09 21:46:21
312
原创 cgroup 关键数据结构
例子:层级结构A->B->C, 在v2中只有A的memory使能,task 放到C中,那么subsys[mem_id]能找到A中memcg,但是cgroup应该是C,所以需要。如果cgroup不是那么复杂,比如cgroup与css一一对应,那么有subsys[CGROUP_SUBSYS_COUNT]就可以了,但是偏偏cgroup搞得很复杂。这个结构体是关联task 与 cgroup,v1比较复杂,是n(cgroup)对m(task)关系,v2简单一点,是1(cgroup)对n(task)
2025-09-14 13:23:31
368
原创 cgroup 关键数据结构
/ 有效的eset节点,加到cgroup->e_csets[id], css 可能在某些cgroup没有使能,指向的最近的祖先,这样就提供了一种方式,在cgroup某个子系统具体控制了哪些任务,可以遍历cgroup->e_csets 的cset得到。+ 为了兼容v1 v2还有对应字段 dfl_cgrp,这字段表示在dfl层级的cgroup,如果是v2,那么与管理的cgroup是一样的,因为cset与cgroup是1 对 1. 但是v1是1对多。// v2 指向的是对应cgroup,1对1关系;
2025-09-14 13:21:15
544
原创 Linux内核开发环境搭建:win11 + wsl + vscode
参考:https://blog.csdn.net/itas109/article/details/107737843。配置config:需要打开debug info, 关闭地址随机化,不然无法调试。ctrl + , 搜索file.exclude,然后排除对应.o文件。编译成功后,可以确认一下是否有debug info。vscode 安装:直接下载即可。
2025-08-31 14:33:01
865
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅