web-dev-qa-db-ja.com

最新のハードウェアでのirqbalanceの使用はまだありますか?

この質問は以前に尋ねられたことがありますが、世界は、もう一度尋ねられるように十分に変化したと思います。

コア間でメモリを共有するNUMA対応CPUが搭載されている今日のシステムでirqbalanceを使用できますか?

ランニング 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仮想化サーバーにとって主に興味深いものです。

41
espenfjo

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

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

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

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

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

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

全部読んだ?すばらしい、あなたは私からこれ以上何も聞く必要はありません! ;-)しかし、あなたがせっかちだった場合に備えて、ここにあなたがそれらを欲する理由があります...

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

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

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

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

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

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

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

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

28
espenfjo