1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RHEL 9 (互換 OS) をメモリ 1GB の環境で使うときは kdump の設定にご用心

Posted at

はじめに

RHEL 9 のバイナリ互換 OS をメモリ 1GB の VPS インスタンスで動かしたとき、カーネル予約領域を大量に持って行かれたのでメモ。

OS Rocky Linux release 9.1 (Blue Onyx)
(Red Hat Enterprise Linux 9.1 互換)
サーバ環境 WebARENA Indigo 1GB プラン

生じた現象

メモリ 1GB 契約なのに free で確認すると 0.75GB しかない!

$ free
               total        used        free      shared  buff/cache   available
Mem:          783012      218668      521272        5708      161148      564344
Swap:              0           0           0

一方で、メモリ割り当て自体は確かに 1GB になっている。

$ dmesg | grep Memory:
[    0.024424] Memory: 254716K/1048164K available (14344K kernel code, 6001K rwdata, 9208K rodata, 2740K init, 7196K bss, 337100K reserved, 0K cma-reserved)

対処

上記 dmesg の Memory の行で 337100K reserved と言っているので誰かが予約してるのは間違いなさそう。

kdump (crashkernel) の設定を見てみると…

$ dmesg | grep crashkernel
[    0.000000] Command line: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-5.14.0-162.12.1.el9_1.0.2.x86_64 root=UUID=ea04cdfa-052b-49b2-a501-72637011cc66 ro console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M console=tty0
[    0.006655] Reserving 192MB of memory at 576MB for crashkernel (System RAM: 1023MB)

crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M とある。
メモリ 1GB だから Reserving 192MB of memory のログ通り 192MB 予約されている模様。

Red Hat の資料にも、

64 ビット ARM アーキテクチャーでは、利用可能なメモリーが 1 GB を超える場合にのみ crashkernel のデフォルトパラメーターが機能します

と記載されている。

いくらカーネルクラッシュ時の解析がしづらくなると言われても、メモリ 0.75GB じゃ普通に動かすだけでもメモリ不足になりそうなので kdump を無効化する。

/etc/default/grub
 GRUB_DISABLE_SUBMENU=true
 GRUB_TERMINAL_OUTPUT="console"
-GRUB_CMDLINE_LINUX="console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M console=tty0"
+GRUB_CMDLINE_LINUX="console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=2G-4G:192M,4G-64G:256M,64G-:512M console=tty0"
 GRUB_DISABLE_RECOVERY="true"
 GRUB_ENABLE_BLSCFG=true

crashkernel=1G... を全部消してもいいけど、1G2G にすることで結果的にメモリの予約を無効にする消極的対応とした。

kdump 自体が起動しないようにして、GRUB の設定変更を反映して再起動。

# systemctl disable kdump
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot

再起動後、メモリの状況を確認してみる。

$ free
               total        used        free      shared  buff/cache   available
Mem:          979620      253756      743780        4492      110764      725864
Swap:              0           0           0

これでよさそう。解決。

補足

当然ながら、本家本元の RHEL 9.1 でも同じ設定となっている。
Red Hat Developer でタダで使ってる自宅サーバの RHEL で確認。

$ grep crashkernel /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=UUID=c2f63eb5-965f-4cf8-bcd4-ad550c2724c6"

$ cat /etc/redhat-release
Red Hat Enterprise Linux release 9.1 (Plow)
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?