illiterate Asked: 2017-12-08 00:14:33 +0800 CST2017-12-08 00:14:33 +0800 CST 2017-12-08 00:14:33 +0800 CST 运行目标程序时(之前)如何设置“oom_score_adj”? 772 直接设置echo 1000 >/proc/<pid>/oom_score_adj不可靠,因为目标程序已经在运行,这种情况下可能是目标程序之前导致OOMecho 1000 >/proc/<pid>/oom_score_adj linux debian 2 个回答 Voted Best Answer Stephen Kitt 2017-12-08T01:16:19+08:002017-12-08T01:16:19+08:00 oom_score_adj在 fork 上继承,因此您可以通过在父进程上设置所需的值来为新子进程设置其初始值。 因此,如果您从 shell 脚本启动目标, echo 1000 > /proc/$$/oom_score_adj 会将 shell 的值更改为 1000,随后由 shell 派生的任何进程都将从oom_score_adj设置为 1000 开始。 JdeBP 2017-12-08T03:48:58+08:002017-12-08T03:48:58+08:00 作为在父进程上设置它的一种替代方法,如 M. Kitt 的回答,可以通过在子进程中运行程序,通过链加载工具将其设置在子进程上,该工具将设置强加于自身和然后简单地链式加载目标程序。 我在 2016 年为 nosh 工具集编写了一个这样的实用程序,它了解 Linux 操作系统和 FreeBSD/TrueOS 的机制。oom-kill-protect -- 1000 个目标程序的一些参数 当--有人决定调整它以使用负 OOM 分数时,它就在那里。☺ 进一步阅读 乔纳森·德博因·波拉德 (2016)。oom-kill-protect. nosh 工具集。软件。 乔纳森·德博因·波拉德 (2016-01-31)。带有 OOM Killer 保护的 syslogd(8)。FreeBSD 黑客。
oom_score_adj
在 fork 上继承,因此您可以通过在父进程上设置所需的值来为新子进程设置其初始值。因此,如果您从 shell 脚本启动目标,
会将 shell 的值更改为 1000,随后由 shell 派生的任何进程都将从
oom_score_adj
设置为 1000 开始。作为在父进程上设置它的一种替代方法,如 M. Kitt 的回答,可以通过在子进程中运行程序,通过链加载工具将其设置在子进程上,该工具将设置强加于自身和然后简单地链式加载目标程序。
我在 2016 年为 nosh 工具集编写了一个这样的实用程序,它了解 Linux 操作系统和 FreeBSD/TrueOS 的机制。
当
--
有人决定调整它以使用负 OOM 分数时,它就在那里。☺进一步阅读
oom-kill-protect
. nosh 工具集。软件。