Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第57章 カーネル

カーネルの更新後にアプリケーションのパフォーマンスが低下します。

以前は、CONFIG_RCU_NOCB_CPU_ALL カーネル設定オプションが RHEL 7 カーネル用に設定されていました。RHEL 7.3 以降では、CONFIG_RCU_NOCB_CPU_ALL は設定されなくなりました。したがって、割り込み要求(IRQ)が特定の CPU にピニングされる環境では、バージョン 3.10.0-327 から 3.10.0-693 または 3.10.0-693 へのカーネルの更新後にアプリケーションのパフォーマンスが低下します。この問題を回避するには、利用可能なすべての CPU コアに対して、システムの起動時に rcu_nocbs カーネルコマンドラインパラメーターを設定します。その結果、回避策により、ビルド時に CONFIG_RCU_NOCB_CPU_ALL が設定されたのと同じ動作が生成されます。
詳細は、以下のソリューション記事 Increased softirq usage in RHEL 7.3 and RHEL 7.4 Kernel を参照してください。(BZ#1551632)

SCTP パフォーマンスの改善および転送率の改善

SCTP (Stream Control Transmission Protocol)実装は、大量の CPU リソースを消費することが知られています。そのため、CPU リソースが不十分なと、1 つの関連付けで 10Gbps などの高転送レートに到達できなくなります。今回の更新で、特定の SCTP 処理での CPU 使用率を減らす改善が行われ、SCTP のパフォーマンスが向上し、状況によっては転送速度が向上します。
今回の更新で、SCTP が 10Gbps の転送速度を実現できるようになりました。(BZ#1058148)

トランスポートまたは関連付けを検索するとカーネルパニックが発生する可能性があります。

使用後解放のバグにより、カーネルの SCTP (Stream Control transmission Protocol)の実装では、使用中のトランスポートパスへのポインターが保持されません。これにより、別の CPU はポインターを解放し、利用できないメモリーにアクセスし、カーネルパニックが発生する可能性があります。Work to address this issue is being tracked in https://bugzilla.redhat.com/show_bug.cgi?id=1368884.(BZ#1368884)

dracut は、存在しない /etc/hba.confに関する無害なエラーメッセージを表示します。

dracut がファイバーチャネルオーバーイーサネット(FCoE)サポートを備えた初期 RAM ファイルシステム(initramfs)を作成すると、/etc/hba.conf ファイルが存在しない場合に、dracut にエラーメッセージが表示されます。このメッセージは無視しても問題ありません。(BZ#1373129)

kdump がレガシー Type 12 永続メモリーでは機能しません。

レガシータイプ 12 の Non-Volatile Dual In-line Memory Modules (NVDIMMs) (実際のデュアルインラインメモリーモジュール(DIMM)、または _memmap=XG!YG カーネルコマンドラインパラメーターを使用してエミュレート)を持つシステムは、カーネルクラッシュダンプを正常にキャプチャーできません。実際の NVDIMM を使用するシステムでは、カーネルクラッシュダンプをキャプチャーしようとするとデータが破損することがあります。このようなシステムで kdump 機能を無効にすることで、この問題を回避できます。(BZ#1351098)

megaraid_sas の更新により、パフォーマンスが低下する可能性があります。

megaraid_sas ドライバーがバージョン 06.811.02.00-rh1 に更新され、以前のバージョンに比べて多くのパフォーマンスが向上しました。ただし、ソリッドステートドライブ(SSD)に基づく設定を使用すると、パフォーマンスが低下します。この問題を回避するには、/sys/ ディレクトリーの対応する queue_depth パラメーターを最大 256 の値に設定します。これにより、パフォーマンスが元のレベルに戻ります。(BZ#1367444)

xgene-enet が、空きメモリーが少ない状況を処理しない

xgene_enet ドライバーは現在、メモリー不足エラーを適切に処理しません。このようなエラーが発生すると、ドライバーは予期せず終了し、カーネルコマンドラインおよび dmesg ログにカーネルバックトレースを返すことがあります。したがって、システムはネットワーク経由で通信できなくなるため、再起動する必要があります。(BZ#1248185)

bnx2xで特定の NIC ファームウェアが応答しなくなる可能性がある

起動前ドライバーのアンロードシーケンスのバグにより、bnx2x ドライバーがデバイスを通過すると、一部のインターネットアダプターのファームウェアが応答しなくなることがあります。bnx2x ドライバーは問題を検出し、カーネルログの storm 統計が 3 回更新されなかった メッセージを返します。この問題を回避するには、ハードウェアベンダーが提供する最新の NIC ファームウェア更新を適用します。その結果、ブート前のファームウェアのアンロードが期待どおりに機能し、bnx2x がデバイスを通過した後にファームウェアがハングしなくなりました。(BZ#1315400)

FCoE サーバーのデフォルト設定を変更して、kdump メカニズムの正しい機能に到達します。

FCoE (Fibre Channel over Ethernet)サーバーのディスクはマルチパスストレージシステムを使用します。これにより、ディスクは別のインターフェイスからシステムに接続できます。複数の論理ディスクがシステムに存在しますが、これらは 1 つの実際のディスクにのみマッピングされます。したがって、デフォルト設定では、FCoE サーバーを kdump カーネルで起動できません。kdump メカニズムの正しい機能にアクセスするには、FCoE ディスクの Universally Unique Identifier (UUID)を指定することが推奨されます。また、ディスクをより効率的に管理できるように、multipath オプションを有効にすることが推奨されます。(BZ#1293520)

iSCSI コネクションが I/O エラーを生成する

Red Hat Enterprise Linux 7.3 では、SCSI ディスクの I/O 要求の上限が最大 512Kib になりました。これにより、Red Hat Enterprise Linux 7.3 で実行しているゲストが fileio バックストアを使用するように設定された iSCSI ターゲットに接続し、古いバージョンの Red Hat Enterprise Linux で実行すると、一部の警告メッセージがログに表示され、パフォーマンスにも悪影響を及ぼします。この問題を回避するには、システムに udev ルールをインストールして、I/O 要求サイズを最大 4096Kib に制限します。fileio バックストアの問題は、iSCSI ターゲットを Red Hat Enterprise Linux 7.3 にアップグレードすることで修正できます。(BZ#1387858)

ディスプレイポートケーブルがプラグインされると MST が応答しなくなる

以前は、ディスプレイポートケーブルがプラグインされると、DEll MST が応答しなくなりました。これは、I2C デバイスの読み取りおよび書き込みを実装する dp-aux メッセージシーケンスが中断されたためです。今回の更新で、関連のない MST 設定メッセージにより、I2C-over-dp-aux シーケンスが中断されなくなりました。その結果、上記のシナリオで MST が応答しなくなることはなくなりました。(BZ#1274157)

IBM Power Systems では、fadump が以前使用され、いずれもネットワークターゲットを使用すると kdump が失敗します。

同じシステムがファームウェア支援ダンプ(fadump)を使用するように設定されていた場合、kdump カーネルクラッシュダンプメカニズムは、ダンプをネットワーク上の場所に保存せず、ダンプをリモートで保存します。これは、メカニズムが kdump に戻ったときに、 kdump - 接頭辞が設定済みのネットワークインターフェイスに追加されますが、fadump を設定すると以前に同じ接頭辞がすでに追加されているためです。作成されるインターフェイス名は kdump-kdump-eth0 になり、最終的な 0 は切り捨てられます。これにより、無効なインターフェイス名 kdump-kdump-eth が生成され、kdump がインターフェイスにアクセスして、リモートのターゲットにクラッシュダンプを保存します。
この問題を回避するには、以下を実行します。
1.現在の /boot/initramfs-$kver.img initrd を /boot /initramfs-$kver.img.default ファイルに置き換えます。
2.touch /etc/kdump.conf コマンドを実行して、再起動後に kdump initrd を強制的に再構築します。
3.システムを再起動します。(BZ#1372464)