earlyoom
1. OOM
了解earlyoom之前要先了解一下OOM机制,然后为什么要使用earlyoom。
内存不足(OOM
) :out of memory,指由于系统内存压力,系统会选择保护一些系统进程,而将一些其他的进程kill掉,释放内存。
之所以会有系统Hang 住的情况,也是因为OOM之前会做一些清理,比如 Linux
会尝试清理内存页缓存会清空所有 buffer
,但是这种危急情况下系统会进入呆滞状态,响应非常缓慢。
为了避免这种情况发生,我们希望在一定的条件下,我们可以让进程"自杀"。所以,当我们监控到系统内存不足的情况下,决定通过earlyoom完成这个过程。
2.earlyoom安装配置与参数说明
安装与配置
# 安装
yum install -y earlyoom
# 配置
vi /etc/default/earlyoom
EARLYOOM_ARGS="-r 0 -m 5 -s 5 --avoid '^(dnf|packagekitd|gnome-shell|gnome-session-c|gnome-session-b|lightdm|sddm|sddm-helper|gdm|gdm-wayland-ses|gdm-session-wor|gdm-x-session|Xorg|Xwayland|systemd|systemd-logind|dbus-daemon|dbus-broker|cinnamon|cinnamon-sessio|kwin_x11|kwin_wayland|plasmashell|ksmserver|plasma_session|startplasma-way|xfce4-session|mate-session|marco|lxqt-session|openbox)$'"
# 设置自启
sudo systemctl start earlyoom
sudo systemctl enable earlyoom
参数说明
-m PERCENT[,KILL_PERCENT] set available memory minimum to PERCENT of total
(default 10 %).
earlyoom sends SIGTERM once below PERCENT, then
SIGKILL once below KILL_PERCENT (default PERCENT/2).
-s PERCENT[,KILL_PERCENT] set free swap minimum to PERCENT of total (default
10 %).
Note: both memory and swap must be below minimum for
earlyoom to act.
-M SIZE[,KILL_SIZE] set available memory minimum to SIZE KiB
-S SIZE[,KILL_SIZE] set free swap minimum to SIZE KiB
-i user-space oom killer should ignore positive
oom_score_adj values
-n enable d-bus notifications
-d enable debugging messages
-v print version information and exit
-r INTERVAL memory report interval in seconds (default 1), set
to 0 to disable completely
-p set niceness of earlyoom to -20 and oom_score_adj to
-100
--prefer REGEX prefer to kill processes matching REGEX
--avoid REGEX avoid killing processes matching REGEX
--dryrun dry run (do not kill any processes)
-h, --help this help text