[Rocky] KVM pGPU 설정






1. 개요

KVM에서 pGPU 설정하여 VM에서 GPU를 사용할 수 있도록 설정합니다.







2. 버전

Rocky 9.4 Minimal







3. 참고 링크





3-1. [Rocky] KVM 설치

YouTube
Blog




3-2. [Rocky] KVM VM 생성(Linux) – GUI, CLI

YouTube
Blog




3-3. [Rocky] KVM VM 생성(Windows) – GUI, CLI

YouTube
Blog




3-4. [Rocky] KVM NAT 생성 및 삭제

YouTube
Blog




3-5. [Rocky] KVM Bridge 설정

YouTube
Blog




3-6. [Rocky] KVM VirtIO 설정(Windows VM 생성)

YouTube
Blog







4. 내용





4-1. pGPU(Passthrough GPU) 란?

실제 GPU(그래픽 처리 장치)를 가상 머신(VM)에 직접 할당하여 사용하는 방식입니다.
일반적인 가상화 환경에서는 GPU가 호스트 머신에서 공유되어 여러 VM이 사용할 수 있지만, pGPU 설정을 통해 GPU 자원을 특정 VM에 전용으로 할당할 수 있습니다.
VM은 마치 물리 서버처럼 GPU를 직접 접근하여 고성능 그래픽 처리가 필요한 작업이나 머신러닝과 같은 작업을 수행할 수 있습니다.







5. Nouveau





5-1. Nouveau 블랙리스트 설정

# cp /etc/default/grub /etc/default/grub.org
# sed -i ‘s@GRUB_CMDLINE_LINUX=”@GRUB_CMDLINE_LINUX=”modprobe.blacklist=nouveau @g’ /etc/default/grub
# cat << EOL >> /etc/modprobe.d/nouveau-blacklist.conf
blacklist nouveau
options nouveau modeset=0
EOL







6. 호스트에서 GPU 분리

GPU가 호스트 커널 드라이버에 바인딩 된 경우 GPU를 가상 머신에 추가할 수 없습니다.
가상 머신에 GPU 장치를 추가하기 전에 GPU 장치를 바인딩 해제합니다.





6-1. 장치 슬롯 이름과 ID 식별

장치 슬롯 이름: 000:31:00.0
그래픽 컨트롤러 vendor-id:device-id: 10de:20f1


# lspci -Dnn | grep -i NVIDIA

0000:31:00.0 3D controller [0302]: NVIDIA Corporation GA100 [A100 PCIe 40GB] [10de:20f1] (rev a1)
0000:b1:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:26b9] (rev a1)




6-2. 호스트에서 GPU 장치를 사용하지 못하게 설정

intel_iommu: IOMMU를 활성화하여, PCI 패스스루가 가능하게 설정합니다.
vfio-pci: VFIO 프레임워크의 PCI 드라이버를 사용하여 PCI 장치를 관리합니다.
ids: 패스스루할 특정 PCI 장치의 벤더 ID와 디바이스 ID를 지정합니다.
pci-stub.ids: NVIDIA 장치를 호스트 시스템에서 예약하여, 해당 장치를 가상 머신에 패스스루할 수 있게 설정합니다.


# lspci -nn | grep NVIDIA

31:00.0 3D controller [0302]: NVIDIA Corporation GA100 [A100 PCIe 40GB] [10de:20f1] (rev a1)


# vim /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=UUID=6e95fbbb-535d-4d78-946c-b51a2c2eb6b2 nomodeset biosdevname=0 net.ifnames=0 modprobe.blacklist=nouveau intel_iommu=on pci-stub.ids=10de:20f1 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true


# grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg







7. 확인





7-1. 커널 부팅 명령줄 매개변수 확인

# cat /proc/cmdline

BOOT_IMAGE=(hd0,gpt3)/boot/vmlinuz-4.18.0-425.3.1.el8.x86_64 root=UUID=7eb8cbd9-b881-45c1-9670-1c4a4354132b ro modprobe.blacklist=nouveau crashkernel=auto resume=UUID=6e95fbbb-535d-4d78-946c-b51a2c2eb6b2 nomodeset biosdevname=0 net.ifnames=0 rhgb quiet intel_iommu=on pci-stub.ids=10de:20f1




7-2. IOMMU 활성화 확인

# dmesg | grep -E “DMAR|IOMMU” | grep enabled

[    0.000000] DMAR: IOMMU enabled




7-3. GPU에 올바른 커널 드라이버가 사용 중인지 확인

# lspci -nnk | grep -A 2 NVIDIA

libkmod: kmod_config_parse: /etc/modprobe.d/vfio-pci.conf line 1: ignoring bad line starting with 'vfio-pci'
31:00.0 3D controller [0302]: NVIDIA Corporation GA100 [A100 PCIe 40GB] [10de:20f1] (rev a1)
        Subsystem: NVIDIA Corporation Device [10de:145f]
        Kernel driver in use: pci-stub
        Kernel modules: nouveau




7-4. 가상 머신에 GPU 연결

  1. Add Hardware를 클릭합니다.


  1. PCI Host Device를 클릭합니다.
  2. Passthrough 설정한 GPU를 선택합니다.
  3. Finish를 클릭합니다.


  1. 장착된 GPU를 확인합니다.




7-5. VM 확인

# lspci | grep NVIDIA

08:00.0 3D controller: NVIDIA Corporation GA100 [A100 PCIe 40GB] (rev a1)


# nvidia-smi

+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01             Driver Version: 535.183.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA A100-PCIE-40GB          Off | 00000000:08:00.0 Off |                  Off |
| N/A   67C    P0              53W / 250W |      0MiB / 40960MiB |     42%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+



“[Rocky] KVM pGPU 설정”에 대한 1개의 생각

댓글 남기기