目的
dnf list等のコマンドを実行すると強制終了するようになった。
dnfコマンドを正常に実行できるようにする。
確認すると、メモリとスワップ領域が足りないのでOOM Killerが動いていた。
スワップ領域を増やすことでOOM Killerが動かないようにする。
環境
1 2 | $ cat /etc/redhat-release > Rocky Linux release 9.3 (Blue Onyx) |
OOM Killer の概要
OOM Killer = Out Of Memory Killer
メモリが枯渇した場合、プロセスを強制終了させてメモリ確保を行う仕組み。
ログの確認
下記コマンドを実行する。
1 | $ sudo grep 'Killed' /var/log/message |
下記のようなログがあれば、OOM Killerが動いている。
1 | 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 |
スワップ領域について確認
下記コマンドを実行する。
1 | $ sudo swapon --show |
結果は下記の通りだった。
1 2 | NAME TYPE SIZE USED PRIO /swapfile file 256M 229M -2 |
ついでにfree -lmの実行結果は下記の通りだった。
1 2 3 4 5 | 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のスワップ領域に変更する。
既存のスワップ領域を無効化
下記コマンドを実行する。
1 | $ sudo swapoff /swapfile |
スワップ領域が無効化されたことを確認するために、下記コマンドを実行する。
1 2 | $ sudo swapon --show // 何も表示されないはず。 $ sudo free -lm // Swapのtotalが0になっているはず。 |
スワップファイルを作成
下記コマンドを実行する。
1 2 | $ sudo dd if = /dev/zero of= /swapfile bs=1M count=2048 $ sudo mkswap /swapfile |
スワップ領域を有効化
下記コマンドを実行する。
1 | $ sudo swapon /swapfile |
スワップ領域が有効化されたことを確認するために、下記コマンドを実行する。
1 2 | $ sudo swapon --show $ sudo free -lm |
dnfコマンドが実行できることを確認
下記コマンドを実行する。
1 | $ dnf -y list |
強制終了せずに実行できたことを確認後、free -lm コマンドを実行すると結果は下記の通りだったので、
変更前のスワップ領域のサイズ(255MB)では足りなかったことがわかる。
1 2 3 4 5 | 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 |
そもそもスワップ領域使わないようメモリ増やした方が良いけれども、予算がががが…。