RHEL環境においてMellanox製Infinibandアダプターを搭載している場合にkdumpに失敗する場合があります。
低
RHEL環境において、Mellanox製Infinibandアダプターを搭載している場合、kernel crash dump (kdump)が停止し、”out of memory”が表示される場合があります。
本問題は、クラッシュカーネルサイズを変更しても発生する場合があります。例えばRHEL7.6ではデフォルトの512MBや、最大の800MBでも発生します。
Infiniband用のOFEDドライバモジュールに関するメモリ管理で問題が起きるため、クラッシュダンプの生成が停止します。
RHEL7.6環境でMellanox OFEDドライババージョン4.6-1.0.1.0を使用している場合の例を以下に示します。
1. Kdump確認手順を含むコンソールログ
# cat /proc/cmdline BOOT_IMAGE=/vmlinuz-4.14.0-115.7.1.el7a.aarch64 root=/dev/mapper/rhel-rootro crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swapLANG=en_US.UTF-8 # cat /proc/iomem | grep -i crash a0000000-bfffffff : Crash kernel # dmesg | grep crash [ 0.000000] crashkernel reserved: 0x00000000a0000000 -0x00000000c0000000 (512 MB) |
Note: クラッシュカーネルサイズはデフォルトでautoに設定されています。(この場合は512MB)
# cat /etc/sysconfig/kdump KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 swiotlb=noforcecma=0reset_devices cgroup_disable=memory udev.children-max=2 panic=10rootflags=nofail" KDUMP_BOOTDIR="/boot" KDUMP_IMG="vmlinuz" # systemctl start kdump.service a kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service;enabled; vendorpreset: enabled) Active: active (exited) since Mon 2019-07-08 12:46:29 EDT;20min ago Process: 18644 ExecStart=/usr/bin/kdumpctl start(code=exited,status=0/SUCCESS) Main PID: 18644 (code=exited, status=0/SUCCESS) CGroup: /system.slice/kdump.service Jul 08 12:46:26 apache5 systemd[1]: Starting Crash recoverykernelarming... Jul 08 12:46:29 apache5 kdumpctl[18644]: kexec: loaded kdump kernel Jul 08 12:46:29 apache5 systemd[1]: Started Crash recovery kernel arming. Jul 08 12:46:29 apache5 kdumpctl[18644]: Starting kdump: [OK] # cat /sys/kernel/kexec_crash_loaded 1 |
Note: "1"が出力されて、kexecがロードされています。
2. クラッシュダンプの収集手順
# echo 8 > /proc/sysrq-trigger # echo s > /proc/sysrq-trigger # echo u > /proc/sysrq-trigger # echo c > /proc/sysrq-trigger |
3. クラッシュダンプ後のOut of Memoryエラーのログ
[ 25.001062] Kernel panic - not syncing: Out of memory and nokillableprocesses... [ 25.001062] [ 25.010095] CPU: 0 PID: 162 Comm: kworker/u2:3 Tainted:G OE ---------4.14.0-115.7.1.el7a.aarch64 #1 [ 25.020687] Hardware name: HPE Apollo70 /C01_APACHE_MB ,BIOSL50_5.13_1.0.6 07/10/2018 [ 25.030623] Workqueue: mlx5_page_allocator pages_work_handler[mlx5_core] [ 25.037398] Call trace: [ 25.039833] [<ffff000008089df4>]dump_backtrace+0x0/0x23c [ 25.045218] [<ffff00000808a054>] show_stack+0x24/0x2c [ 25.050257] [<ffff000008848b9c>] dump_stack+0x84/0xa8 [ 25.055296] [<ffff0000080d4890>] panic+0x138/0x2a0 [ 25.060074] [<ffff00000820f8fc>] out_of_memory+0x37c/0x484 [ 25.065547] [<ffff0000082154a8>] _alloc_pages_nodemask+0xa78/0xec0 [ 25.071920] [<ffff0000011bef40>] give_pages+0x2d8/0x8a8[mlx5_core] [ 25.085066] [<ffff0000080f0df0>]process_one_work+0x168/0x3a4 [ 25.090799] [<ffff0000080f1090>]worker_thread+0x64/0x46c [ 25.096184] [<ffff0000080f7ffc>] kthread+0x10c/0x138 [ 25.101135] [<ffff000008084f34>] ret_from_fork+0x10/0x18 [ 25.106437] Kernel Offset: disabled [ 25.109912] CPU features: 0x5000c38 [ 25.113386] Memory Limit: none [ 25.116429] Rebooting in 10 seconds.. |
クラッシュカーネル(セカンダリカーネル)からMellanox ConnectX-5 coreドライバ ”mlx5_core”をブラックリストに登録し、クラッシュダンプ中のメモリ制限の問題を回避してください。
以下に示す手順で、kdump config /proc/sysconfig/kdumpを編集し、“KDUMP_COMMANDLINE_APPEND”に“rd.driver.blacklist=mlx5_core”を追加します。
例:
#vi /proc/sysconfig/kdump
KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 swiotlb=noforcecma=0reset_devices cgroup_disable=memory udev.children-max=2 panic=10rootflags=nofail rd.driver.blacklist=mlx5_core"
kdumpサービスを再起動し、sysrqクラッシュダンプを開始します。
# systemctl restart kdump.service
# echo 8 > /proc/sysrq-trigger
# echo s > /proc/sysrq-trigger
# echo u > /proc/sysrq-trigger
# echo c > /proc/sysrq-trigger
Note: 本回避策では、Mellanox ConnectX-5 coreドライバがクラッシュカーネル上でのみブラックリスト化され、ブートカーネル上で実行されるIBドライバや関連アプリケーションの機能には影響しません。モジュールのブラックリスト化はクラッシュカーネルにのみ適用されるため、Mellanox EthernetとInfinibandドライバのデバッグデータはクラッシュダンプに引き続き含まれます。
対策方法はありません。
対象製品名 |
InfiniBand EDR / EN 100Gb 2ポート 841QSFP28 アダプター (TQ-xxx-872726-B21) ※「xxx」はお客さまのご購入製品により相違します。 |
---|---|
対象装置 |
HA8000V/DL360 Gen10 HA8000V/DL380 Gen10 HA8000V/DL580 Gen10 |
Infiniband用のMellanox OFEDドライバを使用し、kdumpが実行された際に本現象が発生します。
バージョン依存はありません。
Red Hat Enterprise Linux
2021年5月28日 (公開)
ADV-2021-0040