background image

配置文件有如下两个:

/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 信息,杀掉该进程。