第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)