Cgroups Memory子系统数据不正确的问题
工作中,需要对单个MySQL进程进行限制,并且对MySQL进程消耗的IO,CPU Time,Memory等进行统计,首先想到的就是使用Cgroups对进程进行限制,同时,Cgroups提供的一些接口,也可以非常方便地读取到进程消耗的IO,CPU Time, Memory等数据。
但是在实现自动化之后(使用了自己编写的一套管理程序来对MySQL进程进行管理),却发现了一个非常奇怪的问题:从Cgroups中读取的进程Memory消耗完全是一个不正确的值,使用ps命令查看到的MySQL进程内存大概是2G左右,可是通过读取memory子系统下memory.usage_in_bytes接口获得的数据大概只有几十KB,基本上是一个完全不相干的数值,这个就非常的奇怪了,虽然在官方的文档中