17.6.3. 가상 머신에서 NUMA 구성

다음 방법을 사용하여 RHEL 9 호스트에서 VM(가상 머신) 설정을 NUMA(Non-Uniform Memory Access) 설정을 구성할 수 있습니다.

사전 요구 사항

  • 호스트는 NUMA 호환 시스템입니다. 이 경우 virsh nodeinfo 명령을 사용하여 NUMA 셀 을 확인합니다.

    # 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와 호환됩니다.

절차

쉽게 사용할 수 있도록 자동 유틸리티 및 서비스를 사용하여 VM의 NUMA 구성을 설정할 수 있습니다. 그러나 수동 NUMA 설정은 상당한 성능을 향상시킬 가능성이 높습니다.

자동 방법

  • VM의 NUMA 정책을 Preferred 로 설정합니다. 예를 들어 testguest5 VM에 대해 다음을 수행하려면 다음을 수행합니다.

    # virt-xml testguest5 --edit --vcpus placement=auto
    # virt-xml testguest5 --edit --numatune mode=preferred
  • 호스트에서 자동 NUMA 분산을 활성화합니다.

    # echo 1 > /proc/sys/kernel/numa_balancing
  • numad 명령을 사용하여 VM CPU를 메모리 리소스와 자동으로 정렬합니다.

    # numad

수동 방법

  1. 특정 호스트 CPU 또는 CPU 범위에 특정 vCPU 스레드를 고정합니다. 이는 NUMA가 아닌 호스트 및 VM에서도 발생할 수 있으며 vCPU 성능 향상을 위한 안전한 방법으로 권장됩니다.

    예를 들어 다음 명령은 vCPU 스레드 0~5개의 testguest6 VM을 각각 고정하여 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 스레드를 고정한 후 지정된 VM과 연결된 QEMU 프로세스 스레드를 특정 호스트 CPU 또는 CPU 범위에 고정할 수도 있습니다. 예를 들어 다음 명령은 testguest6 의 QEMU 프로세스 스레드를 CPU 13 및 15에 고정하고 이것이 성공했는지 확인합니다.

    # virsh emulatorpin testguest6 13,15
    # virsh emulatorpin testguest6
    emulator: CPU Affinity
    ----------------------------------
           *: 13,15
  3. 마지막으로 특정 VM에 할당할 호스트 NUMA 노드를 지정할 수도 있습니다. 이렇게 하면 VM의 vCPU에서 호스트 메모리 사용량이 향상될 수 있습니다. 예를 들어 다음 명령은 호스트 NUMA 노드 3을 5로 사용하도록 testguest6 을 설정하고 이것이 성공했는지 확인합니다.

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

최상의 성능 결과를 얻으려면 위에 나열된 모든 수동 튜닝 방법을 사용하는 것이 좋습니다.

추가 리소스