728x90
🚀 개요
최근 GPU 가상화 기술이 발전하면서 하나의 물리 GPU(PGPU)를 여러 개의 가상 GPU(vGPU)로 인식하여 사용할 수 있는 Nvidia SR_IOV(Single Boot I/O Virtualization) 기능이 주목 받고 있습니다. 이 글에서는 Passthrough GPU를 vGPU처럼 인식하도록 설정하는 방법을 다룹니다.
🖥️ NVIDIA SR-IOV란 ?
📌 SR-IOV란?
SR-IOV(Single Root I/O Virtualization)는 PCIe 디바이스를 물리적으로 분할하여 가상머신에 독립적으로 사용할 수 있도록 해주는 기술입니다. 특히 GPU 가상화에서 활용되며, 하나의 GPU를 여러 개의 가상 GPU(vGPU)로 나눠서 여러 VM이 사용할 수 있도록 합니다.
📌 왜 NVIDIA SR-IOV를 사용하는가?
✅ GPU 자원 효율 극대화: 여러 개의 VM이 단일 GPU를 공유 가능.
✅ 고성능 GPU 가상화: SR-IOV를 활용하면 Passthrough와 유사한 성능을 제공.
✅ 물리 GPU 분할 기능: 1개의 GPU를 여러 개의 가상 GPU처럼 인식 가능.
🖥️ NVIDIA SR-IOV 활성화를 위한 시스템 설정
1️⃣ GRUB 설정 (IOMMU 및 VFIO 활성화)
- 아래 내용을 추가합니다.
# vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt vfio-pci.ids=0000:0d:00.0"
🔹 설명
- intel_iommu=on: Intel VT-d(IOMMU) 활성화 (AMD의 경우 amd_iommu=on 사용).
- iommu=pt: IOMMU를 pass-through 모드로 설정하여 성능 최적화.
- vfio-pci.ids=0000:0d:00.0: 특정 GPU를 VFIO 드라이버로 바인딩하여 Passthrough 가능하게 함.
🔹 반영방법
# update-grub
2️⃣ 커널 모듈 설정 (VFIO 활성화)
- 아래 내용을 추가합니다.
# vi /etc/modules
```
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
```
🔹 설명
- vfio: VFIO(Virtual Function I/O) 활성화.
- vfio_iommu_type1: IOMMU 지원 추가.
- vfio_pci: VFIO-Passthrough 모듈 활성화.
- vfio_virqfd: 가상 IRQ 처리 지원.
3️⃣ Nouveau 드라이버 블랙리스트 설정
# vi /etc/modprobe.d/blacklist.conf
---------------------------------
blacklist nouveau
🔹 설명
- nouveau(오픈소스 NVIDIA 드라이버) 사용을 차단하여 NVIDIA 공식 드라이버를 강제 사용.
4️⃣ VFIO 바인딩 설정
# nano /etc/modprobe.d/vfio.conf
--------------------------------
options vfio-pci ids=10de:26b9 disable_vga=1
🔹 설명
- 10de:26b9: NVIDIA GPU의 PCI ID(Vendor ID: 10de, Device ID: 26b9).
- disable_vga=1: VGA 기능 비활성화하여 GPU Passthrough 충돌 방지.
5️⃣ NVIDIA SR-IOV 서비스 생성
# vi /etc/systemd/system/nvidia-sriov.service
[Unit]
Description=Enable NVIDIA SR-IOV
After=network.target nvidia-vgpud.service nvidia-vgpu-mgr.service
Before=pve-guests.service
[Service]
Type=oneshot
ExecStart=/usr/lib/nvidia/sriov-manage -e b5:00.0
ExecStartPre=/bin/sleep 5
[Install]
WantedBy=multi-user.target
🔹 설명
- ExecStart=/usr/lib/nvidia/sriov-manage -e b5:00.0
- SR-IOV를 GPU(b5:00.0)에 적용하여 vGPU처럼 사용.
- ExecStartPre=/bin/sleep 5
- NVIDIA vGPU 서비스 실행 전에 5초 대기하여 안정성 확보.
- After=network.target nvidia-vgpud.service nvidia-vgpu-mgr.service
- NVIDIA 가상 GPU 매니저 서비스 이후 실행.
- Before=pve-guests.service
- VM 실행 전에 SR-IOV 적용.
🔹 서비스 활성화
# systemctl daemon-reload
# systemctl enable nvidia-sriov.service
# systemctl start nvidia-sriov.service
🖥️ 설정 적용 및 확인
1️⃣ GRUB 및 Initramfs 업데이트
update-grub
update-initramfs -u -k all
2️⃣ 재부팅
reboot
3️⃣ GPU 상태 확인
- SR-IOV가 정상적으로 활성화되었다면, GPU 하나가 여러 개의 vGPU처럼 인식될 것입니다.
# lspci -nn | grep NVIDIA
# nvidia-smi
🚀 NVIDIA SR-IOV 설정의 최종 효과
✅ 하나의 Pgpu(물리 GPU)를 여러 개의 vGPU처럼 사용 가능
✅ VM에 vGPU 할당 가능 → GPU 자원을 효율적으로 활용
✅ IOMMU 및 VFIO 설정을 통해 안정적인 GPU Passthrough 구현
'NVIDIA' 카테고리의 다른 글
[Nvidia] VMware ESXI VM에서 그래픽 카드 인식하기(GPU Passthrough) (0) | 2025.03.07 |
---|---|
[NVIDIA] Cuda Toolkit 설치 (1) | 2024.10.22 |
[NVIDIA] In use by another client(프로세스 충돌) (0) | 2024.10.18 |
[NVIDIA] MIG(Multi-Instance-GPU) Docker 컨테이너에 할당 (0) | 2024.08.03 |
[NVIDIA] MIG(Multi-Instance-GPU) 설정 및 생성 삭제 (0) | 2024.08.02 |