まだ最新のハードウェアでirqbalanceを使用していますか?


39

この質問は以前に尋ねられたことがありますが、世界は再び質問されるほどに変化したと思います。

irqbalanceは、コア間でメモリを共有するNUMA対応CPUを備えた今日のシステムで使用できますか?

実行irqbalance --oneshot --debugすると、最新のVMware ESXi環境の仮想ゲストがコア間でNUMAノードを共有していることがわかります。

# irqbalance --oneshot --debug 3
Package 0:  numa_node is 0 cpu mask is 0000000f (load 0)
    Cache domain 0:  numa_node is 0 cpu mask is 0000000f  (load 0)
            CPU number 0  numa_node is 0 (load 0)           
            CPU number 1  numa_node is 0 (load 0)
            CPU number 2  numa_node is 0 (load 0)
            CPU number 3  numa_node is 0 (load 0)

この場合、irqbalanceはNUMAシステムで実行されていることを検出し、終了します。これは、プロセスの監視を台無しにします。

このようなシステムでirqbalanceではなくnumadを実行することを検討する必要がありますか?

これは、VMwareの仮想化されたサーバーにとって最も興味深いものです。

回答:


27

以下は、RedHatの技術者からの回答の1つです。ほとんどのエンタープライズハードウェアはNUMAに対応していると思いますが。私の知る限り、VMwareはCPU構成が適合する限り、同じNUMAノードにVMを適合させようとします。

経験(特にVMwareに関する)は大歓迎です。

これは、最新のサーバーの真の「理由」です。Multi-CPU / Muli-CoreはNUMAと同じではないことに注意してください。NUMAを持たない多くのマルチCPU /コアシステムがあります。

以下の説明を読む前に、上記のIRQアフィニティドキュメントと以下のガイドをお読みください。

RHEL 6パフォーマンスチューニングガイド

RHEL 6の低遅延パフォーマンスチューニング

すべて読んだことがありますか?素晴らしい、あなたは私からこれ以上何も聞く必要がない!;-)しかし、あなたが焦ってしまった場合に備えて、ここにあなたがそれらを望む理由があります...

IRQbalanceは、すべてのIRQ要求が単一のCPUでバックアップされないようにします。さまざまなCPUのすべてのプロセスが、ネットワークまたはストレージIRQ要求を処理するためにCPU 0で待機しているため、4 + CPUコアを搭載した多くのシステムのパフォーマンスが低下しているのを見てきました。CPU 0は非常にビジーに見え、他のすべてのCPUはビジーではありませんが、アプリは非常に低速です。CPU 0からのIOリクエストを待機しているため、アプリは低速です。

IRQbalanceは、これをすべてのCPUでインテリジェントな方法でバランスさせようとし、可能であれば、IRQ処理を可能な限りプロセスに近づけます。これは、同じコア、同じキャッシュを共有する同じダイのコア、または同じNUMAゾーンのコアである可能性があります。

次の場合を除き、irqbalanceを使用する必要があります。

非常に適切な理由(低遅延、リアルタイム要件など)で、アプリ/ IRQを特定のコアに手動で固定しています。

仮想ゲスト。ゲストを特定のCPUとIRQ、および専用のネット/ストレージハードウェアに固定しない限り、ベアメタルで得られるメリットが見られない可能性があるため、実際には意味がありません。ただし、KVM / RHEVホストはirqbalanceとnumadを使用し、調整する必要があります

他の非常に重要な調整ツールは、調整されたプロファイルとnumadです。それらについて読んでください!それらを使用してください!

Numadは、プロセスとそのメモリが同じnumaゾーンにあることを確認しようとする点でirqbalanceと似ています。多くのコアを使用すると、レイテンシが大幅に削減され、負荷がかかった状態での信頼性の高いパフォーマンスがはるかにスムーズになります。

熟練し、勤勉で、定期的に監視するか、非常に予測可能なワークロードがある場合、プロセス/ IRQをCPUに手動で固定することでパフォーマンスを向上させることができます。これらの状況でも、irqbalanceとnumadはマッチングに非常に近くなります。ただし、不確実な場合やワークロードが予測できない場合は、irqbalanceとnumadを使用する必要があります。


5
FWIW、一部の10GbEマニュアルは、irqbalanceを無効にしてスループットを向上させることを推奨しています...
rogerdpack

8
ベンチマークの数値と一致する絶対最大値を取得するには、はい、特定の方法で物事をまとめる必要がありますが、これらのベンチマークは通常、実際の作業負荷と一致しません。非常に予測可能な使用パターンで非常に遅延に敏感な要件を持つサーバーで実行されている1つのアプリケーションがある場合は、先に進み、物事のプロセッサアフィニティを手動で構成します。しかし、アプリケーションが実世界のユースケースであり、さまざまなプロセスや負荷で状況が変化する場合は、Red Hatの技術に同意します。LinuxのNUMAバランシングは順調に進んでいます。
GeorgeB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.