-
Notifications
You must be signed in to change notification settings - Fork 48
/
nohang.conf.in
374 lines (265 loc) · 10.8 KB
/
nohang.conf.in
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
## This is the configuration file of the nohang daemon.
## The configuration includes the following sections:
## 0. Check kernel messages for OOM events
## 1. Common zram settings
## 2. Common PSI settings
## 3. Poll rate
## 4. Warnings and notifications
## 5. Soft (SIGTERM) threshold
## 6. Hard (SIGKILL) threshold
## 7. Customize victim selection: adjusting badness of processes
## 8. Customize soft corrective actions
## 9. Misc settings
## 10. Verbosity, debug, logging
## WARNING!
## - Lines starting with #, tabs and whitespace characters are comments.
## - Lines starting with @ contain optional parameters that may be repeated.
## - All values are case sensitive.
## - nohang doesn't forbid you to shoot yourself in the foot. Be careful!
## - Restart the daemon after editing the file to apply the new settings.
## - You can find the file with default values here: :TARGET_DATADIR:/nohang/nohang.conf
## To find config keys descriptions see man(8) nohang
###############################################################################
## 0. Check kernel messages for OOM events
# @check_kmsg
## Type: boolean
## Comment/uncomment to disable/enable checking kmsg for OOM events
# @debug_kmsg
## Type: boolean
## Comment/uncomment to disable/enable debug checking kmsg
###############################################################################
## 1. Common zram settings
zram_checking_enabled = False
## Type: boolean, valid values: True | False
## Default value: False
###############################################################################
## 2. Common PSI settings
psi_checking_enabled = False
## Type: boolean, valid values: True | False
## Default value: False
psi_path = /proc/pressure/memory
## Type: string; valid values: any string
## Default value: /proc/pressure/memory
psi_metrics = full_avg10
## Type: string; valid values: some_avg10, some_avg60, some_avg300,
## full_avg10, full_avg60, full_avg300
## Default value: full_avg10
psi_excess_duration = 30
## Type: float; valid values: >= 0
## Default value: 30
psi_post_action_delay = 15
## Type: float; valid values: >= 10
## Default value: 15
###############################################################################
## 3. Poll rate
fill_rate_mem = 6000
## Type: float; valid values: >= 100
## Default value: 6000
fill_rate_swap = 2000
## Type: float; valid values: >= 100
## Default value: 2000
fill_rate_zram = 4000
## Type: float; valid values: >= 100
## Default value: 4000
max_sleep = 3
## Type: float; valid values: >= 0.01 and >= min_sleep
## Default value: 3
min_sleep = 0.1
## Type: float; valid values: >= 0.01 and <= max_sleep
## Default value: 0.1
###############################################################################
## 4. Warnings and notifications
## 4.1. GUI notifications after corrective actions
post_action_gui_notifications = False
## Type: boolean; valid values: True | False
## Default value: False
hide_corrective_action_type = False
## Type: boolean; valid values: True | False
## Default value: False
## 4.2. Low memory warnings
low_memory_warnings_enabled = False
## Type: boolean; valid values: True | False
## Default value: False
warning_exe =
## Type: string; valid values: any string
## Default value: (empty string)
warning_threshold_min_mem = 20 %
## Type: float (with % or M); valid values: from the range [0; 100] %
## Default value: 20 %
warning_threshold_min_swap = 25 %
## Type: float (with % or M); valid values: [0; 100] % or >= 0 M
## Default value: 20 %
warning_threshold_max_zram = 45 %
## Type: float (with % or M); valid values: from the range [0; 100] %
## Default value: 45 %
warning_threshold_max_psi = 10
## Type: float; valid values: from the range [0; 100]
## Default value: 10
min_post_warning_delay = 60
## Type: float; valid values: >= 1
## Default value: 60
env_cache_time = 300
## Type: float; valid values: >= 0
## Default value: 300
###############################################################################
## 5. Soft threshold (thresholds for sending the SIGTERM signal or
## implementing other soft corrective action)
soft_threshold_min_mem = 5 %
## Type: float (with % or M); valid values: from the range [0; 50] %
## Default value: 5 %
soft_threshold_min_swap = 10 %
## Type: float (with % or M); valid values: [0; 100] % or >= 0 M
## Default value: 10 %
soft_threshold_max_zram = 55 %
## Type: float (with % or M); valid values: from the range [10; 90] %
## Default value: 55 %
soft_threshold_max_psi = 40
## Type: float; valid values: from the range [5; 100]
## Default value: 40
###############################################################################
## 6. Hard threshold (thresholds for sending the SIGKILL signal)
hard_threshold_min_mem = 2 %
## Type: float (with % or M); valid values: from the range [0; 50] %
## Default value: 2 %
hard_threshold_min_swap = 4 %
## Type: float (with % or M); valid values: [0; 100] % or >= 0 M
## Default value: 4 %
hard_threshold_max_zram = 60 %
## Type: float (with % or M); valid values: from the range [10; 90] %
## Default value: 60 %
hard_threshold_max_psi = 90
## Type: float; valid values: from the range [5; 100]
## Default value: 90
###############################################################################
## 7. Customize victim selection: adjusting badness of processes
## 7.1. Ignore positive oom_score_adj
ignore_positive_oom_score_adj = False
## Type: boolean; valid values: True | False
## Default value: False
## 7.2. Matching process properties with regular expressions to change their
## badness.
## Syntax:
## @BADNESS_ADJ_RE_PROPERTY badness_adj /// RE_pattern
## New badness value will be added to process's badness_adj
## It is possible to compare multiple patterns
## with different badness_adj values.
## 7.2.1. Matching process names with RE patterns to change their badness
## Example:
# @BADNESS_ADJ_RE_NAME 200 /// ^Web Content$
## 7.2.2. Matching CGroup_v1-line with RE patterns
# @BADNESS_ADJ_RE_CGROUP_V1 50 /// /foo\.service$
# @BADNESS_ADJ_RE_CGROUP_V1 -50 /// ^/user\.slice/
## 7.2.3. Matching CGroup_v2-line with RE patterns
# @BADNESS_ADJ_RE_CGROUP_V2 100 /// ^/workload
## 7.2.4. Matching eUIDs with RE patterns
# @BADNESS_ADJ_RE_UID -100 /// ^0$
## 7.2.5. Matching /proc/[pid]/exe realpath with RE patterns
## Example:
# @BADNESS_ADJ_RE_REALPATH 900 /// ^(/usr/bin/stress|/usr/bin/stress-ng)$
## 7.2.6. Matching /proc/[pid]/cwd realpath with RE patterns
# @BADNESS_ADJ_RE_CWD 200 /// ^/home/
## 7.2.7. Matching cmdlines with RE patterns
## WARNING: using this option can greatly slow down the search for a victim
## in conditions of intense swapping.
## Prefer Chromium tabs and Electron-based apps
# @BADNESS_ADJ_RE_CMDLINE 200 /// --type=renderer
## Prefer Firefox tabs (Web Content and WebExtensions)
# @BADNESS_ADJ_RE_CMDLINE 100 /// -appomni
## Avoid Virtualbox processes
# @BADNESS_ADJ_RE_CMDLINE -200 /// ^/usr/lib/virtualbox
## 7.2.8. Matching environ with RE patterns
## WARNING: using this option can greatly slow down the search for a victim
## in conditions of heavy swapping.
# @BADNESS_ADJ_RE_ENVIRON 100 /// USER=user
# Note that you can control badness also via systemd units via
# OOMScoreAdjust, see
# www.freedesktop.org/software/systemd/man/systemd.exec.html#OOMScoreAdjust=
###############################################################################
## 8. Customize soft corrective actions
## Run the command instead of sending a signal with at soft corrective action
## if the victim's name or cgroup matches the regular expression.
## Syntax:
## KEY REGEXP SEPARATOR COMMAND
# @SOFT_ACTION_RE_NAME ^foo$ /// kill -USR1 $PID
# @SOFT_ACTION_RE_CGROUP_V1 ^/system\.slice/ /// systemctl restart $SERVICE
# @SOFT_ACTION_RE_CGROUP_V2 /foo\.service$ /// systemctl restart $SERVICE
## $PID will be replaced by process PID.
## $NAME will be replaced by process name.
## $SERVICE will be replaced by .service if it exists (overwise it will be
## relpaced by empty line)
###############################################################################
## 9. Misc settings
max_soft_exit_time = 10
## Type: float; valid values: >= 0.1
## Default value: 10
post_kill_exe =
## Type: string; valid values: any string
## Default value: (empty string)
min_badness = 1
## Type: integer; valid values: >= 1
## Default value: 1
## nohang will do nothing if the badness of all processes is below min_badness
## (actualy it will spam to stdout/log)
post_soft_action_delay = 3
## Type: float; valid values: >= 0.1
## Default value: 3
post_zombie_delay = 0.1
## Type: float; valid values: >= 0
## Default value: 0.1
victim_cache_time = 10
## Type: float; valid values: >= 0
## Default value: 10
exe_timeout = 20
## Type: float; valid values: >= 0.1
## Default value: 20
###############################################################################
## 10. Verbosity, debug, logging
print_config_at_startup = False
## Type: boolean; valid values: True | False
## Default value: False
print_mem_check_results = False
## Type: boolean; valid values: True | False
## Default value: False
min_mem_report_interval = 60
## Type: float; valid values: >= 0
## Default value: 60
print_proc_table = False
## Type: boolean; valid values: True | False
## Default value: False
extra_table_info = None
## Type: string; valid values: None, cgroup_v1, cgroup_v2, realpath, cwd,
## cmdline, environ
## Default value: None
## WARNING: using "cmdline" or "environ" keys can greatly slow down the search
## for a victim in conditions of heavy swapping.
print_victim_status = True
## Type: boolean; valid values: True | False
## Default value: True
print_victim_cmdline = False
## Type: boolean; valid values: True | False
## Default value: False
max_victim_ancestry_depth = 3
## Type: integer; valid values: >= 1
## Default value: 3
print_statistics = True
## Type: boolean; valid values: True | False
## Default value: True
debug_psi = False
## Type: boolean; valid values: True | False
## Default value: False
debug_gui_notifications = False
## Type: boolean; valid values: True | False
## Default value: False
debug_sleep = False
## Type: boolean; valid values: True | False
## Default value: False
debug_threading = False
## Type: boolean; valid values: True | False
## Default value: False
separate_log = False
## Type: boolean; valid values: True | False
## Default value: False
###############################################################################
## Use cases, feature requests and any questions are welcome:
## https://github.com/hakavlad/nohang/issues
##