CGroup原理篇V1十一Memory子系统(Memcg)实现备忘录
Posted 高桐@BILL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CGroup原理篇V1十一Memory子系统(Memcg)实现备忘录相关的知识,希望对你有一定的参考价值。
写在前面
因为VM非常复杂(memcg就是其中一个原因)。memcg的行为也很复杂。这个文档描述了memcg的内部行为。该文档基于Linux 2.6.33-rc7-mm,所以其实现细节随着版本的发展可能会有改变。
一、如何记录使用情况?
常常使用下面的两个对象:
- page_cgroup:每个页的对象
在启动或者内存热插拔时分配。在内存热卸载时释放。
- swap_cgroup:每个swp_entry条目
swapon()分配,swapoff()释放。
page_cgroup具有 USED 位,并且对page_cgroup进行双重计数,但从未发生过。当管理的页面被换出时,swap_cgroup才被使用。
二、Charge(记录?)
一个page或swp_entry可能通过mem_cgroup_try_charge() (usage += PAGE_SIZE)被记录。
三、Uncharge(解除?)
一个page或swp_entry通过下面的函数被解除(usage -= PAGE_SIZE)
- mem_cgroup_uncharge()
当页的引用计数为0时调用。
- mem_cgroup_uncharge_swap()
当swp_entry的引用计数为0时调用。
四、charge-commit-cancel
memcg页通过下面两种方法记录:
-
mem_cgroup_try_charge()
try_charge()即usag
以上是关于CGroup原理篇V1十一Memory子系统(Memcg)实现备忘录的主要内容,如果未能解决你的问题,请参考以下文章