Hitachi

概要

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が実行された際に本現象が発生します。

対象バージョン

バージョン依存はありません。

対象OS

Red Hat Enterprise Linux

更新情報

2021年5月28日 (公開)

*
本ページで記載している内容を予告なく変更することがありますので、あらかじめご了承ください。

文書番号

ADV-2021-0040