15.7.4. 仮想マシンでの NUMA の設定
以下の方法は、RHEL 9 ホストで、仮想マシンの Non-Uniform Memory Access (NUMA) 設定の設定に使用できます。
使いやすさのため、自動化ユーティリティーとサービスを使用して、仮想マシンの 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=preferrednumadサービスを使用して、メモリーリソースに合わせて仮想マシン CPU を自動的に調整します。# echo 1 > /proc/sys/kernel/numa_balancingnumadサービスを起動して、メモリーリソースに合わせて仮想マシン CPU を自動的に調整します。# systemctl start numad
手動方式
NUMA 設定を手動で調整する場合は、特定の仮想マシンにどのホスト NUMA ノードを割り当てるかを指定できます。これにより、仮想マシンの vCPU によるホストメモリーの使用率が向上します。
オプション:
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 ノードの最大メモリーサイズに従うことを推奨します。