본문 바로가기
IT생활

Proxmox에서 PCIe 패스스루로 GPU 사용 시 오버헤드 최소화 방법

by 우물 밖 개구리. 2025. 3. 16.
반응형

Proxmox에서 PCIe 패스스루로 GPU 사용 시 오버헤드 최소화 방법

PCIe 패스스루를 사용하면 VM에서 물리적인 GPU를 직접 사용할 수 있지만, 잘못 설정하면 성능 저하나 추가적인 오버헤드가 발생할 수 있어. 최소한의 성능 손실로 GPU 패스스루를 최적화하는 방법을 정리해볼게.


🔹 1. CPU 설정 최적화

✅ (1) CPU 모델을 "Host"로 설정

  • 기본적으로 KVM은 가상 CPU 모델을 제공하는데, **"host"**로 설정하면 실제 CPU의 모든 기능을 활용할 수 있어.
  • VM 설정 → Hardware → Processor → Type에서 **"host"**로 변경
qm set <VMID> -cpu host

이렇게 하면 VM이 물리 CPU의 명령어 세트를 최대한 활용할 수 있어 오버헤드를 줄일 수 있어.


🔹 2. IOMMU(입출력 메모리 관리) 설정

IOMMU는 PCIe 패스스루의 핵심이야. 올바르게 설정하지 않으면 성능 저하가 발생할 수 있어.

✅ (1) IOMMU 활성화

BIOS에서 VT-d(Intel) / AMD-Vi(AMD) 활성화

이후, Proxmox에서 IOMMU를 활성화하려면 /etc/default/grub을 수정해야 해.

nano /etc/default/grub

다음 줄을 찾고 수정:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

AMD의 경우:

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

설정 적용 후:

update-grub
reboot

✅ (2) VFIO 드라이버 활성화

PCIe 패스스루를 사용하려면 VFIO 드라이버를 활성화해야 해.
아래 내용을 /etc/modules에 추가:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

그리고 적용:

update-initramfs -u
reboot

🔹 3. PCIe 패스스루 관련 설정

✅ (1) GPU를 "PCIe" 모드로 설정

  • Proxmox에서 VM 설정 → Add Hardware → PCI Device
  • "All Functions" 체크
  • "PCI-Express" 체크 ✅

CLI로 설정할 경우:

qm set <VMID> -hostpci0 0000:03:00.0,pcie=1

이렇게 하면 GPU가 PCIe 모드로 동작하여 성능 저하가 최소화됨.

✅ (2) romfile을 사용하여 부팅 오류 방지

  • NVIDIA GPU는 UEFI VM에서 패스스루할 때 문제가 생길 수 있어.
  • 이를 해결하려면, GPU의 vBIOS ROM 파일을 제공해야 해.
qm set <VMID> -hostpci0 0000:03:00.0,pcie=1,romfile=/usr/share/kvm/vbios.rom

GPU의 vBIOS 덤프 방법:

echo 1 > /sys/bus/pci/devices/0000:03:00.0/rom
cat /sys/bus/pci/devices/0000:03:00.0/rom > /usr/share/kvm/vbios.rom
echo 0 > /sys/bus/pci/devices/0000:03:00.0/rom

🔹 4. NVIDIA/AMD 드라이버 최적화

✅ (1) NVIDIA 코드 43 오류 해결 (GeForce 사용자용)

NVIDIA는 가상 환경에서 GPU 사용을 막기 위해 "코드 43" 오류를 발생시키는데, 이를 우회하려면 다음 옵션을 추가해야 해.

qm set <VMID> -args "-cpu host,kvm=off"

이렇게 하면 KVM이 감지되지 않아 정상적으로 GPU를 사용할 수 있어.

✅ (2) AMD GPU 성능 최적화

AMD GPU는 NVIDIA보다 가상 환경에서 우호적이지만, 성능을 최적화하려면 메모리 Overcommit 방지가 필요해.

qm set <VMID> -balloon 0

이렇게 하면 VM의 메모리가 동적으로 조절되지 않으면서 안정적인 성능을 유지할 수 있어.


🔹 5. vGPU (가상 GPU) & ReBAR 활성화 (고급)

vGPU (Virtual GPU) 기술을 활용하면 GPU를 여러 VM에 나누어 사용할 수 있어.

  • NVIDIA GRID, vGPU 라이센스가 필요하지만, RTX 카드에서도 우회해서 사용할 수 있는 방법이 있음.
  • AMD의 경우 SR-IOV 지원 GPU(예: MI100, MI200 시리즈)를 사용하면 가능.

또한 **Resizable BAR(ReBAR)**를 활성화하면 성능이 더 좋아질 수 있음.

  • BIOS에서 Resizable BAR 활성화
  • NVIDIA의 경우 최신 드라이버 사용

🚀 최종 정리: 오버헤드 최소화 핵심 정리

CPU를 host로 설정하여 가상화 오버헤드 제거
IOMMU 활성화 (iommu=pt 사용)
PCIe 패스스루 설정 (pcie=1, all functions on)
NVIDIA "코드 43" 우회 (-cpu host,kvm=off)
메모리 Overcommit 방지 (-balloon 0)
vGPU, SR-IOV, ReBAR 활용하면 성능 추가 향상 가능

➡️ 이 설정들을 적용하면 PCIe 패스스루 성능을 최대한 끌어올릴 수 있어!

반응형