10.6. カーネル

特定の BCC ユーティリティーで安全性に問題のない警告を表示する

一部のコンパイラー固有のカーネルヘッダーでのマクロの再定義が原因一部の BPF Compiler Collection(BCC) ユーティリティーでは、以下の警告が表示されます。

warning: __no_sanitize_address' macro redefined [-Wmacro-redefined]

この警告は安全性に問題がないため、無視することができます。

(BZ#1907271)

vmcore キャプチャーはメモリーのホットプラグまたはアンプラグの操作後に失敗します。

メモリーのホットプラグまたはホットアンプラグ操作の実行後に、メモリーのレイアウト情報を含むデバイスツリーを更新するとイベントが発生します。これにより、makedumpfile ユーティリティーは存在しない物理アドレスにアクセスしようとします。以下の条件を満たすと問題が発生します。

  • IBM Power System (little endian) で RHEL 8 を実行する。
  • システムで kdump サービスまたは fadump サービスが有効になっている。

このような場合に、メモリーホットプラグまたはホットアンプラグの操作後にカーネルクラッシュが発生すると、カーネルのキャプチャーで vmcore の保存に失敗します。

この問題を回避するには、ホットプラグまたはホットアンプラグ後に kdump サービスを再起動します。

# systemctl restart kdump.service

これにより、上記のシナリオで vmcore が正常に保存されます。

(BZ#1793389)

kdump が SSH または NFS ダンプターゲットで vmcore のダンプに失敗する

新しいバージョンの dracut-network は、ipcalc を必要とする dhcp-client の依存関係を破棄します。したがって、NIC ポートが静的 IP に設定され、kdump が SSH または NFS のダンプ出力先でダンプするように設定されると、kdump が失敗し、以下のエラーメッセージが表示されます。

ipcalc: command not found

この問題を回避するには、以下を実行します。

  1. ipcalc パッケージを手動でインストールします。

    dnf install ipcalc
  2. kdump 用の initramfs を再構築します。

    kdumpctrl rebuild
  3. kdump サービスを再起動します。

    systemctl restart kdump

これにより、上記のシナリオで kdump が正常に実行されます。

(BZ#1931266)

RHEL 8 で、デバッグカーネルがクラッシュキャプチャー環境で起動に失敗します。

デバッグカーネルのメモリー要求の性質により、デバッグカーネルが使用中で、カーネルパニックが発生すると、問題が発生します。その結果、デバッグカーネルはキャプチャーカーネルとして起動できず、代わりにスタックトレースが生成されます。この問題を回避するには、クラッシュカーネルメモリーを適宜増やします。これにより、デバッグカーネルが、クラッシュキャプチャー環境で正常に起動します。

(BZ#1659609)

起動時にクラッシュカーネルのメモリー割り当てに失敗する

一部の Ampere Altra システムでは、BIOS 設定で 32 ビットのリージョンが無効になっていると、メモリー割り当てが失敗します。したがって、従来のメモリーではメモリー割り当てを確保するのに十分な大きさがないため、kdump サービスの起動に失敗します。

この問題を回避するには、以下のように BIOS で 32 ビット CPU を有効にします。

  1. システムで BIOS 設定を開きます。
  2. Chipset メニューを開きます。
  3. Memory Configuration で、Slave 32-bit オプションを有効にします。

これにより、クラッシュカーネルは 32 ビット領域内でメモリーを割り当て、kdump サービスが期待どおりに動作します。

(BZ#1940674)

特定のカーネルドライバーがそのバージョンを表示しません

RHEL 8.4 では、多くのネットワークカーネルドライバーに対応するモジュールバージョン管理の動作が変更になりました。そのため、これらのドライバーはバージョンを表示しません。また、ethtool -i コマンドを実行すると、ドライバーはドライバーバージョンではなく カーネル バージョンを表示します。この問題を回避するには、ユーザーは以下のコマンドを実行できます。

# modinfo <AFFECTED_DRIVER> | grep rhelversion

その結果、必要に応じて、影響を受けるカーネルドライバーのバージョンを判断できます。

ドライバーバージョンの文字列の変更量は、ドライバー自体の変更量には実際に行われないことに注意してください。

(BZ#1944639)

irqpoll を使用すると vmcore の生成に失敗する

Amazon Web Services (AWS) クラウドプラットフォームで実行している 64 ビット ARM アーキテクチャー上には nvme ドライバーの既存の問題があります。この問題により、最初のカーネルに irqpoll カーネルコマンドラインパラメーターを指定すると vmcore の生成に失敗します。したがって、カーネルクラッシュ後に vmcore/var/crash/ ディレクトリーにダンプされません。この問題を回避するには、以下を実行します。

  1. /etc/sysconfig/kdump ファイルの KDUMP_COMMANDLINE_REMOVEirqpoll を追加します。

    KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb"
  2. /etc/sysconfig/kdump ファイルの KDUMP_COMMANDLINE_APPEND から irqpoll を削除します。

    KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory udev.children-max=2 panic=10 swiotlb=noforce novmcoredd"
  3. systemctl restart kdump コマンドを実行して、kdump サービスを再起動します。

その結果、最初のカーネルが正常に起動し、カーネルクラッシュ時に vmcore がキャプチャーされることが予想されます。

kdump サービスは、大量のクラッシュカーネルメモリーを使用して vmcore ファイルをダンプできることに注意してください。キャプチャーカーネルには、kdump サービス用のメモリーが十分あることを確認します。

(BZ#1654962)

HP NMI ウォッチドッグが常にクラッシュダンプを生成しない

特定に場合において、HP NMI ウォッチドッグの hpwdt ドライバーは、マスク不可割り込み (NMI) が perfmon ドライバーにより使用されたため、HPE ウォッチドッグタイマーが生成した NMI を要求できません。

欠落している NMI は、以下の 2 つの条件のいずれかによって開始されます。

  1. Integrated Lights-Out (iLO) サーバー管理ソフトウェアの NMI 生成 ボタン。このボタンはユーザーがトリガーします。
  2. hpwdt ウォッチドッグ。デフォルトでは、有効期限により NMI がサーバーに送信されます。

通常、両方のシーケンスは、システムが応答しない場合に発生します。通常、これらの状況の NMI ハンドラーは kernel panic() 関数を呼び出します。また、設定されていれば、kdump サービスが vmcore ファイルを生成します。

ただし、NMI が見つからないため、kernel panic() は呼び出されず、vmcore が収集されません。

最初のケース (1.) でシステムが応答しない場合は、その状態のままになります。このシナリオを回避するには、仮想 電源 ボタンを使用してサーバーをリセットするか、電源を切って入れ直します。

2 つ目のケース (2.) では、欠落している NMI が Automated System Recovery (ASR) からのリセットの後 9 秒後に続きます。

HPE Gen9 Server ラインでは、1 桁台の割合でこの問題が発生します。Gen10 の周波数がさらに小さくなる。

(BZ#1602962)

tuned-adm profile powersave コマンドを使用すると、システムが応答しなくなります。

tuned-adm profile powersave コマンドを実行すると、古い Thunderx (CN88xx) プロセッサーを持つ Penguin Valkyrie 2000 2 ソケットシステムが応答しなくなります。これにより、作業を再開するためシステムを再起動することになります。この問題を回避するには、システムが上記の仕様と一致する場合には powersave プロファイルの使用を避けてください。

(BZ#1609288)

カーネル ACPI ドライバーは、PCIe ECAM メモリーリージョンにアクセスできないことを報告します。

ファームウェアが提供する Advanced Configuration and Power Interface (ACPI) テーブルは、PCI バスデバイスの現在のリソース設定 (_CRS) メソッドにおいて PCI バス上のメモリーリージョンを定義しません。したがって、システムの起動時に以下の警告メッセージが表示されます。

[    2.817152] acpi PNP0A08:00: [Firmware Bug]: ECAM area [mem 0x30000000-0x31ffffff] not reserved in ACPI namespace
[    2.827911] acpi PNP0A08:00: ECAM at [mem 0x30000000-0x31ffffff] for [bus 00-1f]

ただし、カーネルは依然として 0x30000000-0x31ffffff メモリーリージョンにアクセスできます。また、そのメモリーリージョンを PCI Enhanced Configuration Access Mechanism (ECAM) に適切に割り当てることができます。以下の出力で 256 バイトオフセットで PCIe 設定領域にアクセスして、PCI ECAM が正常に機能することを確認できます。

03:00.0 Non-Volatile memory controller: Sandisk Corp WD Black 2018/PC SN720 NVMe SSD (prog-if 02 [NVM Express])
 ...
        Capabilities: [900 v1] L1 PM Substates
                L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2+ ASPM_L1.1- L1_PM_Substates+
                          PortCommonModeRestoreTime=255us PortTPowerOnTime=10us
                L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
                           T_CommonMode=0us LTR1.2_Threshold=0ns
                L1SubCtl2: T_PwrOn=10us

これにより、警告メッセージを無視します。

問題の詳細は、Firmware Bug: ECAM area mem 0x30000000-0x31ffffff not reserved in ACPI namespace" appears during system boot を参照してください。

(BZ#1868526)

デフォルト設定の hwloc コマンドは、単一の CPU Power9 および Power10 LPAR で動作しません。

バージョン 2.2.0 の hwloc パッケージでは、Power9 / Power10 CPU を実行する単一ノードの Non-Uniform Memory Access (NUMA) システムは disallowed とみなされます。そのため、hwloc コマンドがすべて機能せず、以下のエラーメッセージが表示されます。

Topology does not contain any NUMA node, aborting!

この問題を回避するには、以下のいずれかのオプションを使用できます。

  • 環境変数 HWLOC_ALLOW=all を設定する
  • さまざまな hwloc コマンドで disallowed フラグを使用する

その結果、hwloc コマンドは上記のシナリオでエラーを返しなくなりました。

(BZ#1917560)

OPEN MPI ライブラリーは、デフォルトの PML でランタイムが失敗する可能性があります。

OPEN Message Passing Interface (OPEN MPI) 実装 4.0.x シリーズでは、UCX (Unified Communication X) がデフォルトの PPL (ポイントツーポイント) です。OPEN MPI 4.0.x シリーズの新しいバージョンでは、openib Byte Transfer Layer (BTL) が非推奨になりました。

ただし、OPEN MPI は 同種 クラスター (同じハードウェアおよびソフトウェア設定) で実行される場合も、UCX は MPI openlib の一方向操作に BTL を使用します。これにより、実行エラーが発生する可能性があります。この問題を回避するには、以下を実行します。

  • 以下のパラメーターを使用して mpirun コマンドを実行します。
-mca btl openib -mca pml ucx -x UCX_NET_DEVICES=mlx5_ib0

詳細は以下のようになります。

  • -mca btl openib パラメーターは openib BTL を無効にします。
  • -mca pml ucx パラメーターは、ucx PML を使用するように OPEN MPI を設定します。
  • x UCX_NET_DEVICES= パラメーターは、指定したデバイスを使用するように UCX を制限します。

OPEN MPI は、異種 クラスター (ハードウェアおよびソフトウェア設定に異なる) を実行する場合は、デフォルトの PML として UCX を使用します。これにより、OPEN MPI ジョブが不安定なパフォーマンス、応答しない動作で実行されたり、またはクラッシュによる不具合とともに実行される可能性があります。この問題を回避するには、UCX の優先度を以下のように設定します。

  • 以下のパラメーターを使用して mpirun コマンドを実行します。
-mca pml_ucx_priority 5

これにより、OPEN MPI ライブラリーは、UCX を介して利用可能な別のトランスポート層を選択することができます。

(BZ#1866402)

仮想マシンへの仮想機能の割り当て時に接続に失敗する

ionic デバイスドライバーを使用する Pensando ネットワークカードは、VLAN タグ設定要求を許可し、ネットワーク仮想機能 (VF) を VM に割り当てる間にネットワーク接続の設定を試行します。この機能はカードのファームウェアではサポートされていないため、このようなネットワーク接続は失敗します。

(BZ#1930576)