18.6.5. 仮想 CPU ピニングの設定
仮想マシン (VM) の CPU パフォーマンスを向上させるために、ホスト上の特定の物理 CPU スレッドに仮想 CPU (vCPU) をピニングすることができます。これにより、仮想 CPU に専用の物理 CPU スレッドが確保され、仮想 CPU のパフォーマンスが大幅に向上します。
CPU パフォーマンスをさらに最適化するために、指定の仮想マシンに関連付けられた QEMU プロセススレッドを、特定のホスト CPU にピニングすることもできます。
手順
ホストの CPU トポロジーを確認します。
# lscpu -p=node,cpu Node,CPU 0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7この例では、NUMA ノードとホスト上の使用可能な物理 CPU スレッドが出力に含まれています。
仮想マシン内の仮想 CPU スレッドの数を確認します。
# lscpu -p=node,cpu Node,CPU 0,0 0,1 0,2 0,3この例では、NUMA ノードと仮想マシン内の使用可能な仮想 CPU スレッドが出力に含まれています。
仮想マシンの特定の仮想 CPU スレッドを、特定のホスト CPU または CPU の範囲にピニングします。これは、仮想 CPU のパフォーマンスを向上させる安全な方法として推奨されます。
たとえば、次のコマンドは、testguest6 仮想マシンの仮想 CPU スレッド 0 - 3 を、それぞれホスト CPU 1、3、5、7 にピニングします。
# virsh vcpupin testguest6 0 1 # virsh vcpupin testguest6 1 3 # virsh vcpupin testguest6 2 5 # virsh vcpupin testguest6 3 7オプション: 仮想 CPU スレッドが CPU に正常にピニングされているかどうかを確認します。
# virsh vcpupin testguest6 VCPU CPU Affinity ---------------------- 0 1 1 3 2 5 3 7オプション: 仮想 CPU スレッドのピニング後に、指定の仮想マシンに関連付けられた QEMU プロセススレッドを、特定のホスト CPU、または CPU の範囲にピニングすることもできます。これにより、QEMU プロセスが物理 CPU 上でより効率的に実行されるようになります。
たとえば、次のコマンドは、testguest6 の QEMU プロセススレッドを CPU 2 および 4 にピニングし、これが成功したことを確認します。
# virsh emulatorpin testguest6 2,4 # virsh emulatorpin testguest6 emulator: CPU Affinity ---------------------------------- *: 2,4