choom [OPTION] [--] [COMMAND] [ARGS ...]
!subtitle:功能
查看或调整进程的 OOM(Out-Of-Memory)评分;或以指定的 OOM 调整评分执行命令。
Linux 内核在内存耗尽时会启动 OOM Killer,选择一个 OOM 评分最高的进程杀掉。
!subtitle:类型
可执行文件(/usr/bin/choom),属于 util-linux。
!subtitle:参数
OPTION 选项:
-p, --pid - 要查看或调整 OOM 评分的的进程ID
-n, --adjust - 要设置的 OOM 调整评分,取值范围是 0 到 1000,越大越容易被杀
--help - 显示帮助
--version - 显示版本
COMMAND - 要执行的命令
ARGS - 命令的参数列表
!subtitle:查看和调整进程的 OOM 评分
$ choom -p $$ # 查看当前 shell 进程的 oom 评分
pid 944375's current OOM score: 666
pid 944375's current OOM score adjust value: 0
$ choom -p $$ -n 500 # 将调整评分设为 500
pid 944375's OOM score adjust value changed from 0 to 500
$ choom -p $$ # 再次查看当前 shell 进程的 oom 评分
pid 944375's current OOM score: 1000
pid 944375's current OOM score adjust value: 500
原始评分为 666
调整评分被设为 500
调整后评分为 666 + 500,超过了上限 1000 因此缩限到 1000
!subtitle:以指定的 OOM 调整评分执行命令
$ choom -n 1000 -- tail -f /var/log/syslog # 以 1000 的调整评分执行 tail -f /var/log/syslog
以 1000 的调整评分执行 tail -f /var/log/syslog,内存不足时会优先杀死此进程
CHOOM(1) User Commands CHOOM(1)
NAME
choom - display and adjust OOM-killer score.
choom -p PID
choom -p PID -n number
choom -n number [--] command [argument ...]
DESCRIPTION
The choom command displays and adjusts Out-Of-Memory killer score
setting.
OPTIONS
-p, --pid pid
Specifies process ID.
-n, --adjust value
Specify the adjust score value.
-h, --help
Display help text and exit.
-V, --version
Print version and exit.
NOTES
Linux kernel uses the badness heuristic to select which process gets
killed in out of memory conditions.
The badness heuristic assigns a value to each candidate task ranging
from 0 (never kill) to 1000 (always kill) to determine which process is
targeted. The units are roughly a proportion along that range of
allowed memory the process may allocate from based on an estimation of
its current memory and swap use. For example, if a task is using all
allowed memory, its badness score will be 1000. If it is using half of
its allowed memory, its score will be 500.
There is an additional factor included in the badness score: the
current memory and swap usage is discounted by 3% for root processes.
The amount of "allowed" memory depends on the context in which the oom
killer was called. If it is due to the memory assigned to the
allocating task’s cpuset being exhausted, the allowed memory represents
the set of mems assigned to that cpuset. If it is due to a mempolicy’s
node(s) being exhausted, the allowed memory represents the set of
mempolicy nodes. If it is due to a memory limit (or swap limit) being
reached, the allowed memory is that configured limit. Finally, if it is
due to the entire system being out of memory, the allowed memory
represents all allocatable resources.
The adjust score value is added to the badness score before it is used
to determine which task to kill. Acceptable values range from -1000 to
+1000. This allows userspace to polarize the preference for oom killing
either by always preferring a certain task or completely disabling it.
The lowest possible value, -1000, is equivalent to disabling oom
killing entirely for that task since it will always report a badness
score of 0.
Setting an adjust score value of +500, for example, is roughly
equivalent to allowing the remainder of tasks sharing the same system,
cpuset, mempolicy, or memory controller resources to use at least 50%
more memory. A value of -500, on the other hand, would be roughly
equivalent to discounting 50% of the task’s allowed memory from being
considered as scoring against the task.
AUTHORS
Karel Zak <[email protected]>
SEE ALSO
proc(5)
REPORTING BUGS
For bug reports, use the issue tracker at
https://github.com/util-linux/util-linux/issues.
AVAILABILITY
The choom command is part of the util-linux package which can be
downloaded from Linux Kernel Archive
<https://www.kernel.org/pub/linux/utils/util-linux/>.
util-linux 2.39.3 2023-10-23 CHOOM(1)