OOM Killerが動いているのでスワップ領域追加

目的

dnf list等のコマンドを実行すると強制終了するようになった。

dnfコマンドを正常に実行できるようにする。

確認すると、メモリとスワップ領域が足りないのでOOM Killerが動いていた。

スワップ領域を増やすことでOOM Killerが動かないようにする。

環境

$ cat /etc/redhat-release
> Rocky Linux release 9.3 (Blue Onyx)

OOM Killer の概要

OOM Killer = Out Of Memory Killer

メモリが枯渇した場合、プロセスを強制終了させてメモリ確保を行う仕組み。

ログの確認

下記コマンドを実行する。

$ sudo grep 'Killed' /var/log/message

下記のようなログがあれば、OOM Killerが動いている。

Apr 17 10:47:28 srv kernel: Out of memory: Killed process 261831 (dnf) total-vm:695628kB, anon-rss:553620kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:1260kB oom_score_adj:0

スワップ領域について確認

下記コマンドを実行する。

$ sudo swapon --show

結果は下記の通りだった。

NAME      TYPE SIZE USED PRIO
/swapfile file 256M 229M   -2

ついでにfree -lmの実行結果は下記の通りだった。

               total        used        free      shared  buff/cache   available
Mem:             769         331         420           7         138         437
Low:             769         348         420
High:              0           0           0
Swap:            255         200          55

推奨スワップ領域のサイズ

上記ページを参考にすると、
メモリ領域が700MBほどなのでとりあえず2GBのスワップ領域に変更する。

既存のスワップ領域を無効化

下記コマンドを実行する。

$ sudo swapoff /swapfile

スワップ領域が無効化されたことを確認するために、下記コマンドを実行する。

$ sudo swapon --show // 何も表示されないはず。
$ sudo free -lm // Swapのtotalが0になっているはず。

スワップファイルを作成

下記コマンドを実行する。

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
$ sudo mkswap /swapfile

スワップ領域を有効化

下記コマンドを実行する。

$ sudo swapon /swapfile

スワップ領域が有効化されたことを確認するために、下記コマンドを実行する。

$ sudo swapon --show
$ sudo free -lm

dnfコマンドが実行できることを確認

下記コマンドを実行する。

$ dnf -y list

強制終了せずに実行できたことを確認後、free -lm コマンドを実行すると結果は下記の通りだったので、
変更前のスワップ領域のサイズ(255MB)では足りなかったことがわかる。

               total        used        free      shared  buff/cache   available
Mem:             769         320         381           6         188         448
Low:             769         387         381
High:              0           0           0
Swap:           2047         263        1784

そもそもスワップ領域使わないようメモリ増やした方が良いけれども、予算がががが…。

コメント

タイトルとURLをコピーしました