16.2. Managing NVIDIA vGPU devices
vGPU 기능을 사용하면 물리적 NVIDIA GPU 장치를 여러 가상 장치로 나눌 수 있습니다. 그러면 이러한 장치를 가상 GPU로 여러 VM(가상 머신)에 할당할 수 있습니다. 결과적으로 이러한 VM은 단일 물리적 GPU의 성능을 공유할 수 있습니다.
VM에 vGPU 장치를 할당하면 vGPU를 생성하는 데 사용된 물리적 GPU의 성능에 부정적인 영향을 미칠 수 있습니다.
16.2.1. NVIDIA vGPU 장치 설정 링크 복사링크가 클립보드에 복사되었습니다!
최신 NVIDIA 하드웨어가 있는 RHEL 10 호스트 시스템의 VM(가상 머신)에 NVIDIA 가상 GPU(vGPU)를 할당하려면 SR-IOV(Single-root I/O Virtualization)를 기반으로 장치 할당을 사용합니다.
SR-IOV 기반 vGPU를 구성하려면 GPU 장치의 NVIDIA vGPU 드라이버를 다운로드하고 물리적 GPU 장치의 가상 기능(VF)에 vGPU 인스턴스를 설정한 다음 인스턴스를 VM에 할당해야 합니다.
사전 요구 사항
- NVIDIA 소프트웨어 그래픽 드라이버를 설치했습니다. 자세한 내용은 NVIDIA 문서의 RPM 패키지에서 Red Hat 배포에 NVIDIA vGPU 소프트웨어 그래픽 드라이버 설치를 참조하십시오.
GPU 장치는 벤더별 SR-IOV 장치 할당을 지원합니다. 이 경우 NVIDIA 그래픽 드라이버와 함께 설치된
nvidia-smi도구를 사용하십시오.# nvidia-smi -q | grep "Host VGPU Mode"성공적인 출력:
Host VGPU Mode : SR-IOVSR-IOV 할당을 지원하지 않는 레거시 NVIDIA 장치를 기반으로 vGPU를 설정하려면 중재된 장치를 사용합니다. 자세한 내용은 레거시 장치에 NVIDIA vGPU 설정을 참조하십시오.
물리적 GPU 장치에 대한 VF(가상 기능)를 활성화하고 NVIDIA vGPU에 사용하려는 VF의 슬롯, 버스, 도메인 및 기능 식별자를 가져왔습니다. 자세한 내용은 NVIDIA 문서의 KVM 하이퍼바이저가 있는 Linux에서 SR-IOV를 지원하는 NVIDIA vGPU의 가상 기능 준비를 참조하십시오.
예를 들어 다음 절차에서는 도메인
0000, 버스41, 슬롯02, 기능3인 VF를 사용합니다. 이 VF의 전체 ID는0000:41:02.3입니다.
프로세스
NVIDIA 소프트웨어 설치 프로그램이 /etc/modprobe.d/nvidia-installer-disable-nouveau.conf 파일을 생성하지 않은 경우 /etc/modprobe.d/ 에 모든 이름의
conf파일을 생성하고 파일에 다음 행을 추가합니다.blacklist nouveau options nouveau modeset=0vGPU에 사용할 VF의 디렉터리로 변경합니다.
# cd /sys/bus/pci/devices/<domain>\:_<bus>_\:_<slot>_.<function>/nvidia예를 들면 다음과 같습니다.
# cd /sys/bus/pci/devices/0000\:41\:02.3/nvidia선택 사항: 디렉터리에
creatable_vgpu_types및current_vgpu_type파일이 포함되어 있는지 확인합니다.-r--r--r-- 1 root root 4096 Aug 3 00:39 creatable_vgpu_types -rw-r--r-- 1 root root 4096 Aug 3 00:39 current_vgpu_type선택 사항: vGPU 인스턴스가 VF에서 아직 생성되지 않았는지 확인합니다.
# cat current_vgpu_type이 명령의 출력이
0이면 VF에서 vGPU가 아직 생성되지 않은 것입니다.creatable_vgpu_types파일을 검사하여 VF에서 생성할 수 있는 vGPU 유형을 확인합니다.# cat current_vgpu_type출력 예:
NVIDIA A40-1Q 557 NVIDIA A40-2Q 558 NVIDIA A40-3Q 559 NVIDIA A40-4Q 560 NVIDIA A40-6Q 561사용할 vGPU 유형을 선택하고
current_vgpu_type파일에 해당 ID를 추가합니다.예를 들어 다음 명령은 VF에
A40-4QvGPU 유형의 인스턴스를 생성합니다.# echo 560 > current_vgpu_type선택 사항: vGPU 유형이 VF에 올바르게 설정되어 있는지 확인합니다.
# cat current_vgpu_type560-
선택 사항:
creatable_vgpu_types파일이 비어 있는지 확인합니다. 즉, VF에서 더 이상 vGPU 인스턴스를 생성할 수 없습니다. vGPU 장치를 할당할 VM의 XML 구성을 엽니다.
# virsh edit <vm-name>VM의 비디오 모델 유형 설정을
none으로 설정합니다.<video> <model type='none'/> </video>이전 단계에서 vGPU 인스턴스를 생성한 VF의 ID 값이 있는 <
hostdev> 섹션을 추가합니다.<hostdev mode='subsystem' type='pci' managed='no' display='on' ramfb='on'> <source> <address domain='0x0000' bus='0x41' slot='0x02' function='0x3'/> </source> </hostdev>VM에 여러 vGPU를 할당하려면 각각 다른 VF에 할당해야 합니다. 예를 들면 다음과 같습니다.
<hostdev mode='subsystem' type='pci' managed='no' display='on' ramfb='on'> <source> <address domain='0x0000' bus='0x41' slot='0x02' function='0x3'/> </source> </hostdev> <hostdev mode='subsystem' type='pci' managed='no'> <source> <address domain='0x0000' bus='0x41' slot='0x02' function='0x4'/> </source> </hostdev>- XML 구성을 저장합니다.
- VM이 실행 중인 경우 재부팅합니다.
검증
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
다음 단계