18.6.4. 仮想マシンでの NUMA の設定
仮想マシン (VM) の Non-Uniform Memory Access (NUMA) 設定を行うには、自動化されたユーティリティーを使用する方法と、手動でセットアップする方法があります。NUMA 設定を行うことで、NUMA 互換ホスト上の仮想 CPU とメモリーリソースを整合させ、仮想マシンのパフォーマンスを向上させることができます。
使いやすさのため、自動化ユーティリティーとサービスを使用して、仮想マシンの NUMA を設定できます。ただし、手動で NUMA を設定すると、パフォーマンスが大幅に向上する可能性が高くなります。
前提条件
ホストが NUMA 対応のマシンである。これを確認するには、
virsh nodeinfoコマンドを使用して、NUMA cell(s)の行を確認します。# virsh nodeinfo CPU model: x86_64 CPU(s): 48 CPU frequency: 1200 MHz CPU socket(s): 1 Core(s) per socket: 12 Thread(s) per core: 2 NUMA cell(s): 2 Memory size: 67012964 KiB行の値が 2 以上であると、そのホストは NUMA に対応しています。
オプション:
numactlパッケージがホストにインストールされている。# dnf install numactl
手順
仮想マシンの NUMA ポリシーを
Preferredに設定します。たとえば、testguest5 仮想マシンを設定するには、次のコマンドを実行します。# virt-xml testguest5 --edit --vcpus placement=auto # virt-xml testguest5 --edit --numatune mode=preferred仮想マシンの CPU とメモリーリソースを自動的に整合させるために、
numadサービスを設定します。# echo 1 > /proc/sys/kernel/numa_balancingnumadサービスを起動します。# systemctl start numadオプション: NUMA 設定を手動でチューニングします。特定の仮想マシンに明示的に割り当てるホストの NUMA ノードを指定します。これにより、仮想マシンの仮想 CPU によるホストメモリーの使用率が向上します。
numactlコマンドを使用して、ホスト上の NUMA トポロジーを表示します。# numactl --hardware available: 2 nodes (0-1) node 0 size: 18156 MB node 0 free: 9053 MB node 1 size: 18180 MB node 1 free: 6853 MB node distances: node 0 1 0: 10 20 1: 20 10仮想マシンの XML 設定を編集して、特定の NUMA ノードに CPU およびメモリーリソースを割り当てます。たとえば、次の設定では、testguest6 が NUMA ノード
0の仮想 CPU 0 - 7 と NUMA ノード1の仮想 CPU 8 - 15 を使用するように指定します。両方のノードに 16 GiB の仮想マシンメモリーも割り当てます。# virsh edit <testguest6> <domain type='kvm'> <name>testguest6</name> ... <vcpu placement='static'>16</vcpu> ... <cpu ...> <numa> <cell id='0' cpus='0-7' memory='16' unit='GiB'/> <cell id='1' cpus='8-15' memory='16' unit='GiB'/> </numa> ... </domain>注記最高のパフォーマンス結果を得るために、ホスト上の各 NUMA ノードの最大メモリーサイズに従うことを推奨します。
- 仮想マシンが実行中の場合は、再起動して設定を適用します。