summaryrefslogtreecommitdiffstats
path: root/sys-utils/choom.1
blob: def31d5f0b783d0453aeb75fc1a4fd676cc1d8ec (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
.TH CHOOM 1 "April 2018" "util-linux" "User Commands"
.SH NAME
choom \- display and adjust OOM-killer score.
.SH SYNOPSIS
.B choom
.B \-p
.I pid
.sp
.B choom
.B \-p
.I pid
.B \-n
.I number
.sp
.B choom
.B \-n
.I number
.B [\-\-]
.IR command\  [ argument ...]

.SH DESCRIPTION
The \fBchoom\fP command displays and adjusts Out-Of-Memory killer score setting.

.SH OPTIONS
.TP
.BR \-p ", " \-\-pid " \fIpid\fP
Specifies process ID.
.TP
.BR \-n , " \-\-adjust " \fIvalue\fP
Specify the adjust score value.
.TP
.BR \-h ", " \-\-help
Display help text and exit.
.TP
.BR \-V ", " \-\-version
Display version information and exit.
.SH 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.

.SH AUTHORS
.nf
Karel Zak <kzak@redhat.com>
.fi
.SH SEE ALSO
.BR proc (5)
.SH AVAILABILITY
The \fBchoom\fP command is part of the util-linux package and is available from
.UR https://\:www.kernel.org\:/pub\:/linux\:/utils\:/util-linux/
Linux Kernel Archive
.UE .