这两天研究memory zone的水位问题涉及到两个参数分别是/proc/sys/vm/extra_free_kbytes以及min_free_kbytes(在kernel-4.4)。
而通过代码发现min_free_kbytes这个值由normal zone下的managed pages决定。
先说总的关系:
spanned:表示当前zone所包含的所有的pages
present:表示当前zone在去掉第一阶段kernel reserve的内存之后剩下的pages。
managed:表示当前zone去掉初始化完成以后所有的kernel reserve的内存剩下的pages。
其中min_free_kbytes由normal zone去掉第一阶段初始化完成后的kernel reserve的内存后所剩余的pages来计算得出min_free_kbytes
ps:kernel reserve部分内存的初始化在kernel启动过程中可能会而分为两个阶段。
(1)这里的值为所有zone的managed pages之和乘4将单位换算成KB,但是此时的memory reserve还没完成,所以得到的managed pages和最后系统完全起来之后打出的值不一致,此时的managed pages为总的spanned pages减去reserved pages。
(2)然后乘16在开方,最后这个值就是min_free_kbytes的值。
(3)得出min_free_kbytes的值。
from: https://blog.csdn.net/zsj100213/article/details/80696451
memory zone spanned/present/managed区别
原文:https://www.cnblogs.com/aspirs/p/13977599.html