总的来说,oom_score_adj是Linux系统中一个用于调节OOM机制的参数,通过合理设置可以提高系统的稳定性和可靠性。在实际应用中,建议根据具体情况慎重选择合适的oom_score_adj值,以达到最佳效果。
在实际分配内存,发现物理内存不够用时,内核报OOM,杀掉最该死进程(根据oom_score打分),释放内存; 打分机制,主要看消耗内存多少(先杀大户),mm/oom_kill.c的badness()给每个进程一个oom_score,一般取决于:驻留内存、pagetable和swap的使用; oom_score_adj:oom_score会加上oom_score_adj这个值; oom_adj:-17~15...
在实际分配内存,发现物理内存不够用时,内核报OOM,杀掉最该死进程(根据oom_score打分),释放内存; 打分机制,主要看消耗内存多少(先杀大户),mm/oom_kill.c的badness()给每个进程一个oom_score,一般取决于:驻留内存、pagetable和swap的使用; oom_score_adj:oom_score会加上oom_score_adj这个值; oom_adj:-17~15...
(1)对某一个task进行打分(oom_score)主要有两部分组成,一部分是系统打分,主要是根据该task的内存使用情况。另外一部分是用户打分,也就是oom_score_adj了,该task的实际得分需要综合考虑两方面的打分。如果用户将该task的 oom_score_adj设定成OOM_SCORE_ADJ_MIN(-1000)的话,那么实际上就是禁止了OOM killer杀死该...
在实际分配内存,发现物理内存不够用时,内核报OOM,杀掉最该死进程(根据oom_score打分),释放内存; 打分机制,主要看消耗内存多少(先杀大户),mm/oom_kill.c的badness()给每个进程一个oom_score,一般取决于:驻留内存、pagetable和swap的使用; oom_score_adj:oom_score会加上oom_score_adj这个值;oom_adj:-17~15的...
关键词:OOM、oom_adj、oom_score、badness。 Linux内核为了提高内存的使用效率采用过度分配内存(over-commit memory)的办法,造成物理内存过度紧张进而触发OOM机制来杀死一些进程回收内存。 该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽会把该进程杀掉。
if (oom_unkillable_task(p, memcg, nodemask)) return 0; p = find_lock_task_mm(p); if (!p) return 0; /* 获取该进程的 oom_score_adj, 这个是用户为进程设置的 badness score * 调整值,假如这个值为-1000或者进程被标记为不可被kill,或者进程处于 ...
可以通过 /proc/{pid}/oom_score_adj 文件来设置进程的 OOM 建议值(取值范围为 -1000 ~ 1000)。建议值越小,进程被杀的机会越低。如果将其设置为 -1000 时,进程将被禁止杀掉。 统计进程使用的物理内存数,包括实际使用的物理内存、页表占用的物理内存和 swap 机制占用的物理内存。
nodemask, "Out of memory (oom_kill_allocating_task)"); goto out; } …… } 当然也不能说杀就杀,还是要考虑是否用户空间进程(不能杀内核线程)、是否unkillable task(例如init进程就不能杀),用户空间是否通过设定参数(oom_score_adj)阻止kill该task。如果万事俱备,那么就调用oom_kill_process干掉当前进程。
/proc//oom_score 系统计算出来的oom_score值,只读文件,取值范围0 –- 1000,0代表never kill,1000代表aways kill,值越大,进程被选中的概率越大。 /proc//oom_score_adj 让用户空间调节oom_score的接口,root可读写,取值范围 -1000 --- 1000,默认为0,若为 -1000,则oom_score加上此值一定小于等于0,从而变...