OOM内存优先级调整

Posted by ZhangShun Blog on January 15, 2019

内存是不可压缩资源,当系统中内存没有可用空间时,系统会抛出OOM(out of memory)错误

当触发OOM(out of memory)时,系统根据进程当前使用的内存量跟进程的oom_score_adj优先级,通过一定的算法,计算出一个score,杀掉当前score最高的进程

有三个组件

  • /proc/$PID/oom_adj
  • /proc/$PID/oom_score
  • /proc/$PID/oom_score_adj

oom_score 表示最终的分数,该分数越大,越可能被 Killer 杀掉

而 oom_score_adj 是调整分数的,可以设置为负值,会对 oom_score减分,从Linux 2.6.36开始都安装了/proc/$PID/oom_score_adj,此后将替换为/proc/$PID/oom_adj

oom_score_adj优先级范围(-1000,1000)

查看进程的score,cat /proc/$pid/oom_score

查看进程的oom_score_adj,cat /proc/$pid/oom_score_adj

调整优先级,防止重要进程因为oom被杀死,echo “-500” > /proc/$pid/oom_score_adj