配置文件有如下两个:
/sys/module/lowmemorykiller/parameters/adj
/sys/module/lowmemorykiller /parameters/minfree
owmeme_adj 中各项数值代表阈值的警戒级数,
lowmem_minfree 代表对应级数的剩余内存。
adj 文件存放着 oom_adj 内存警戒值( 以 4K 为单位)
0 1536
1 2048
2 4096
7 5120
14 5632
15 6144
也就是说,当系统的剩余内存为小于
6MB 时候,警戒级数为 0,当系统内存剩余小于 8M
而大于
6M 的时候,警戒级数为 1,当内存小于 64M 大于 16MB 的时候,警戒级数为 12.
对于某些小内存设备,我们可以调整对应的门限值,例如:
一般调整后三个值。
echo “1536,2048,4096,15360,17920,20480″>/sys/module/lowmemorykiller/parameters/minfree
2.LMK 的工作机制
LMK 开始工作时,
首先根据阈值表确定当前的警戒级数,则高于警戒级数的进程是待杀的范围。
然后遍历所有进程的
oom_adj 值,找到大于 min_adj 的进程,若找到多个,则把占用进程
最大的进程存放在
selected 中。
最关键的一步就是,发送
SIGKILL 信息,杀掉该进程。