查找应用程序在什么状态或 OOM 分数值时被杀死
Finding at what state or OOM score value an app is killed
应用程序在某些 oom_score 上被 OOM Killer 杀死。
OOM是否有特定的值设置,达到设置的值后何时终止进程或如何决定何时终止?
如果它用某个固定值完成 oom_score 有没有办法改变这个值。
有人可以通过如何处理 OOM 的详细方式来了解当 OOM 杀手杀死我的应用程序时到底发生了什么吗?
Is there any specific value set for OOM when to kill the process after reaching the value set or how it takes a decision when to kill?
没有。 OOM killer 仅在系统内存不足时使用。当发生这种情况时,它首先会终止 OOM 分数最高的进程。该分数基于进程使用的内存量,并根据各种启发式方法进行了一些调整。
一般来说,如果 OOM 杀手被激活,要么是你的系统内存太少,要么是某个进程 运行 失控。这永远不会发生在嵌入式设备中——这是某种问题的征兆。
综上所述,您可以通过将值写入 /proc/$pid/oom_score_adj
来调整进程的 OOM 分数。该文件中的值将添加到进程的 OOM 分数中,因此正值将使 OOM 杀手更有可能更频繁地以该进程为目标,而负值将使 OOM 杀手避免该进程。
应用程序在某些 oom_score 上被 OOM Killer 杀死。 OOM是否有特定的值设置,达到设置的值后何时终止进程或如何决定何时终止?
如果它用某个固定值完成 oom_score 有没有办法改变这个值。
有人可以通过如何处理 OOM 的详细方式来了解当 OOM 杀手杀死我的应用程序时到底发生了什么吗?
Is there any specific value set for OOM when to kill the process after reaching the value set or how it takes a decision when to kill?
没有。 OOM killer 仅在系统内存不足时使用。当发生这种情况时,它首先会终止 OOM 分数最高的进程。该分数基于进程使用的内存量,并根据各种启发式方法进行了一些调整。
一般来说,如果 OOM 杀手被激活,要么是你的系统内存太少,要么是某个进程 运行 失控。这永远不会发生在嵌入式设备中——这是某种问题的征兆。
综上所述,您可以通过将值写入 /proc/$pid/oom_score_adj
来调整进程的 OOM 分数。该文件中的值将添加到进程的 OOM 分数中,因此正值将使 OOM 杀手更有可能更频繁地以该进程为目标,而负值将使 OOM 杀手避免该进程。