2

次のシナリオを達成しようとしています。

それぞれに 6 つの CPU を持つ 4 つの numa ノードを備えた Linux ボックスがあります。kvm ゲストのパフォーマンスを向上させるために、各 vcpu を一連の CPU に、できれば同じ Numa セルに固定します。

たとえば、12 コアのゲストを開始する場合、最初の 6 個の vcpus を NUMA ノード 1 の cpuset に固定し、2 番目の 6 個を NUMA ノード 2 の cpuset に固定します。

これまでのところ、そのトポロジをゲストに公開しようとすると、問題が発生し始めます。つまり、2 つの NUMA ノードに 2 つの cpuset があることをゲストに認識させます。

qemu-kvmのオプションを使用する-smp 12,sockets=2,cores=6,threads=1と、最初の 6 つを 1 つのソケットに、2 つ目の 6 つを別のソケットにグループ化し、-numaオプションを使用して適切な vcpus に 2 つの numa ノードを設定することで、それらを半分に分割する可能性が高いと思います。だから私の質問は次のとおりです:

  1. -numaオプションはその役目を果たしますか?ドキュメントでは、numa シミュレーション用であると言われています。そのシミュレーションなら、それはパフォーマンスを損なうことを意味しませんか? 私が必要としているのは、ゲストに「これらの CPU は同じ NUMA ノード上にあります」と言う方法です (そうでない場合でも)。これはそれを達成する方法ですか?

  2. qemu (1.2.0) にバグがあり、トポロジーがひどく公開されているようです。CPU トポロジを (たとえば) に設定すると-smp 9,sockets=3,cores=3,threads=1、何らかの奇妙な理由で、ゲスト内で ( lstopo を使用して) 3 つのソケットに配置されていることがわかりますが、最初のソケットに 4 コア、2 番目のコアに 4 コア、3 番目のコアに 1 コアが配置されています。 ( 4|4|1 )。私は、それらを均等ではなく、2のべき乗に分割すると考えました。sockets=2,cores=10;でも同じ動作を観察しました。sockets=2,cores=18、名前を付けると、常に半分ではなく、2 のべき乗 (つまり 8|2 と 16|2 ) で分割されます。sockets=2,cores=8ただし、正常に動作します(これは一種の予想です)。誰かがそのようなことを経験したことがありますか?

4

1 に答える 1

1

0.9.8 以降、numa 要素を使用してゲスト NUMA トポロジを指定できます。必要に応じて、cputune 要素の下の vcpupin と組み合わせると、ホストとゲストの間で目的の CPU/メモリ マッピングを実現できるはずです。

http://libvirt.org/formatdomain.html#elementsCPU

于 2013-03-29T19:05:08.510 に答える