从网上的找了一个比较全面的如下:
OOM Killer在内存耗尽时,会查看所有进程,并分别为每个进程计算分数。将信号发送给分数最高的进程。 计算分数的方法 在OOM Killer计算分数时要考虑很多方面。首先要针对每个进程确认下列1~9个事项再计算分数。 1. 首先,计算分数时是以进程的虚拟内存大小为基准的,虚拟内存大小可以使用ps命令的VSZ或/proc/<PID>/status的 VmSize来确认。对于正在消耗虚拟内存的进程,其最初的得分较高,单位是将1KB作为1个得分,消耗1GB内存的进程,得分约为1024*1024。 2. 如果进程正在执行swapoff系统调用,则得分设置为最大值(unsigned long的最大值)。这是因为禁用swap的行为与消除内存不足是相反的,会立刻将其作为OOM Killer的对象进程。 3. 如果是母进程,则将所有子进程内存大小的一半作为分数。 4. 根据进程的cpu使用时间和进程启动时间调整得分,这是因为在这里认为越是长时间运行或从事越多工作的进程越重要,需保持得分较低。 5. 对于通过nice命令等将优先级设置得较低的进程,要将得分翻倍。nice-n中设置为1~19的命令的得分翻倍。 6. 特权进程普遍较为重要,因此将其得分设置为1/4。 7. 通过capset(3)等设置了功能(capability)CAP_SYS_RAWIO注3的进程,其得分为1/4,将直接对硬件进行 *** 作的进程判断为重要进程。 8. 关于Cgroup,如果进程只允许与促使OOM Killer运行的进程所允许的内存节点完全不同的内存节点,则其得分为1/8。 9. 最后通过proc文件系统oom_adj的值调整得分。 依据以上规则,为所有进程打分,向得分最高的进程发送信号SIGKILL(到linux 2.6.10为止,在设置了功能CAP_SYS_RAWIO的情况下,发送SIGTERM,在没有设置的情况下,发送SIGKILL)。 各进程的得分可以使用/proc/<PID>/oom_score来确认。 来自: https://blog.csdn.net/JeffreyNicole/article/details/47263235总结
以上是内存溢出为你收集整理的Linux 如何选择要kill掉的进程全部内容,希望文章能够帮你解决Linux 如何选择要kill掉的进程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)