15.2. NVIDIA vGPU 장치 관리
vGPU 기능을 사용하면 물리적 NVIDIA GPU 장치를 중재 장치라고 하는 여러 가상 장치로 나눌 수 있습니다
. 그런 다음 이러한 중재된 장치를 가상 GPU로 여러 VM(가상 머신)에 할당할 수 있습니다. 결과적으로 이러한 VM은 단일 물리 GPU의 성능을 공유할 수 있습니다.
중재 장치를 사용하거나 사용하지 않고 VM에 물리적 GPU를 할당하면 호스트가 GPU를 사용할 수 없습니다.
15.2.1. NVIDIA vGPU 장치 설정
NVIDIA vGPU 기능을 설정하려면 GPU 장치에 대해 NVIDIA vGPU 드라이버를 다운로드하여 중재 장치를 생성하여 원하는 가상 머신에 할당해야 합니다. 자세한 지침은 아래를 참조하십시오.
사전 요구 사항
GPU는 vGPU 중재 장치를 지원합니다. vGPU 생성을 지원하는 NVIDIA GPU의 최신 목록은 NVIDIA vGPU 소프트웨어 설명서를 참조하십시오.
호스트가 사용 중인 GPU를 모르는 경우 lshw 패키지를 설치하고
lshw -C display
명령을 사용하십시오. 다음 예에서는 해당 시스템이 NVIDIAether P4 GPU를 사용하며 vGPU와 호환되는 것입니다.# lshw -C display *-display description: 3D controller product: GP104GL [Tesla P4] vendor: NVIDIA Corporation physical id: 0 bus info: pci@0000:01:00.0 version: a1 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress cap_list configuration: driver=vfio-pci latency=0 resources: irq:16 memory:f6000000-f6ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff
절차
- NVIDIA vGPU 드라이버를 다운로드하여 시스템에 설치합니다. 자세한 내용은 NVIDIA 문서를 참조하십시오.
NVIDIA 소프트웨어 설치 관리자가 /etc/modprobe.d/nvidia-installer-disable-nouveau.conf 파일을 생성하지 않은 경우 /etc/modprobe.d/ 에 이름의
conf
파일을 생성하고 파일에 다음 행을 추가합니다.blacklist nouveau options nouveau modeset=0
현재 커널의 초기 램디스크를 다시 생성한 다음 재부팅합니다.
# dracut --force # reboot
커널이
nvidia_vgpu_vfio
모듈을 로드하고nvidia-vgpu-mgr.service
서비스가 실행 중인지 확인합니다.# lsmod | grep nvidia_vgpu_vfio nvidia_vgpu_vfio 45011 0 nvidia 14333621 10 nvidia_vgpu_vfio mdev 20414 2 vfio_mdev,nvidia_vgpu_vfio vfio 32695 3 vfio_mdev,nvidia_vgpu_vfio,vfio_iommu_type1 # systemctl status nvidia-vgpu-mgr.service nvidia-vgpu-mgr.service - NVIDIA vGPU Manager Daemon Loaded: loaded (/usr/lib/systemd/system/nvidia-vgpu-mgr.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2018-03-16 10:17:36 CET; 5h 8min ago Main PID: 1553 (nvidia-vgpu-mgr) [...]
또한 NVIDIA Ampere GPU 장치를 기반으로 vGPU를 생성하는 경우, 물리 GPU에 가상 기능을 사용하도록 설정해야 합니다. 자세한 내용은 NVIDIA 문서 를 참조하십시오.
장치 UUID를 생성합니다.
# uuidgen 30820a6f-b1a5-4503-91ca-0c10ba58692a
감지된 GPU 하드웨어에 따라 중재된 장치의 구성으로 XML 파일을 준비합니다. 예를 들어, 다음은 0000:01:00.0 PCI 버스에서 실행되고 이전 단계에서 생성된 UUID를 사용하는 NVIDIA Tesla P4 카드에서 중재된
nvidia-63
vGPU 유형의 중재 장치를 구성합니다.<device> <parent>pci_0000_01_00_0</parent> <capability type="mdev"> <type id="nvidia-63"/> <uuid>30820a6f-b1a5-4503-91ca-0c10ba58692a</uuid> </capability> </device>
준비한 XML 파일을 기반으로 vGPU 조정 장치를 정의합니다. 예를 들면 다음과 같습니다.
# virsh nodedev-define vgpu-test.xml Node device mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 created from vgpu-test.xml
선택 사항: 중재 장치가 비활성으로 나열되는지 확인합니다.
# virsh nodedev-list --cap mdev --inactive mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
생성한 vGPU 중재 장치를 시작합니다.
# virsh nodedev-start mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 Device mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 started
선택 사항: 중재 장치가 활성 상태로 나열되어 있는지 확인합니다.
# virsh nodedev-list --cap mdev mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
호스트가 재부팅된 후 자동으로 시작하도록 vGPU 장치 설정
# virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 Device mdev_d196754e_d8ed_4f43_bf22_684ed698b08b_0000_9b_00_0 marked as autostarted
vGPU 리소스를 공유하려는 VM에 중재 장치를 연결합니다. 이렇게 하려면 이전에 의도했던 UUID와 함께 다음 행을 VM의 XML 구성의 < devices/ > 섹션에 추가합니다.
<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='on'> <source> <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/> </source> </hostdev>
각 UUID는 한 번에 하나의 VM에만 할당할 수 있습니다. 또한 VM에
virtio-vga
와 같은 QEMU 비디오 장치가 없는 경우 <hostdev
> 행에ramfb='on'
매개변수도 추가합니다.- 할당된 VM에서 사용할 수 있는 vGPU 조정 장치의 모든 기능을 사용하려면 VM에서 NVIDIA vGPU 게스트 소프트웨어 라이선스를 설정합니다. 자세한 내용 및 지침은 NVIDIA Virtual GPU 소프트웨어 라이센스 서버 사용자 가이드를 참조하십시오.
검증
생성한 vGPU의 기능을 쿼리하고 활성 및 지속적으로 나열되는지 확인합니다.
# virsh nodedev-info mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 Name: virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 Parent: pci_0000_01_00_0 Active: yes Persistent: yes Autostart: yes
VM을 시작하고 게스트 운영 체제가 중재 장치를 NVIDIA GPU로 감지하는지 확인합니다. 예를 들어 VM에서 Linux를 사용하는 경우 다음을 실행합니다.
# lspci -d 10de: -k 07:00.0 VGA compatible controller: NVIDIA Corporation GV100GL [Tesla V100 SXM2 32GB] (rev a1) Subsystem: NVIDIA Corporation Device 12ce Kernel driver in use: nvidia Kernel modules: nouveau, nvidia_drm, nvidia
알려진 문제
- RHEL 9 게스트 운영 체제를 사용하는 VM에 NVIDIA vGPU 미디어를 할당하면 현재 해당 VM에서 Wayland 세션이 비활성화되고 대신 Xorg 세션을 로드합니다. 이는 NVIDIA 드라이버와 Wayland 간의 비호환성 때문입니다.
추가 리소스
- NVIDIA vGPU 소프트웨어 문서
-
man virsh
명령