Red Hat Training

A Red Hat training course is available for RHEL 8

16.5.3. 仮想マシンでの NUMA の設定

以下の方法は、RHEL 8 ホストで、仮想マシンの Non-Uniform Memory Access (NUMA) 設定の構成に使用できます。

前提条件

  • ホストが NUMA 対応のマシンである。これを確認するには、virsh nodeinfo コマンドを使用して、NUMA cell(2) の行を確認します。

    # 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 に対応しています。

手順

使いやすさのため、自動化ユーティリティーとサービスを使用して、仮想マシンの NUMA を設定できます。ただし、手動で NUMA を設定すると、パフォーマンスが大幅に向上する可能性が高くなります。

自動方式

  • 仮想マシンの NUMA ポリシーを Preferred に設定します。たとえば、仮想マシン testguest5 に対してこれを行うには、次のコマンドを実行します。

    # virt-xml testguest5 --edit --vcpus placement=auto
    # virt-xml testguest5 --edit --numatune mode=preferred
  • ホストで NUMA の自動負荷分散を有効にします。

    # echo 1 > /proc/sys/kernel/numa_balancing
  • numad コマンドを使用して、メモリーリソースで仮想マシンの CPU を自動的に調整します。

    # numad

手動方式

  1. 特定ホストの CPU、またはある範囲の CPU に特定の vCPU スレッドをピニングします。これは、NUMA 以外のホストおよび仮想マシンでも可能で、vCPU のパフォーマンスを向上させる安全な方法として推奨されています。

    たとえば、次のコマンドでは、仮想マシン testguest6 の vCPU スレッドの 0 から 5 を、ホストの CPU 1、3、5、7、9、11 にそれぞれピニングします。

    # virsh vcpupin testguest6 0 1
    # virsh vcpupin testguest6 1 3
    # virsh vcpupin testguest6 2 5
    # virsh vcpupin testguest6 3 7
    # virsh vcpupin testguest6 4 9
    # virsh vcpupin testguest6 5 11

    その後、これが成功したかどうかを確認できます。

    # virsh vcpupin testguest6
    VCPU   CPU Affinity
    ----------------------
    0      1
    1      3
    2      5
    3      7
    4      9
    5      11
  2. vCPU スレッドのピニング後に、指定の仮想マシンに関連付けられた QEMU プロセススレッドを、特定ホスト CPU、またはある範囲の CPU に固定することもできます。たとえば、以下のコマンドは、testguest6 の QEMU プロセススレッドを CPU 13 および 15 にピニングし、これが成功したことを確認します。

    # virsh emulatorpin testguest6 13,15
    # virsh emulatorpin testguest6
    emulator: CPU Affinity
    ----------------------------------
           *: 13,15
  3. これで、特定の仮想マシンに対して割り当てられるホストの NUMA ノードを指定することができます。これにより、仮想マシンの vCPU によるホストメモリーの使用率が向上します。たとえば、次のコマンドでは、ホスト NUMA ノード 3 ~ 5 を使用するように testguest6 を設定し、これが成功したかどうかを確認します。

    # virsh numatune testguest6 --nodeset 3-5
    # virsh numatune testguest6

関連情報