PCI 패스스루 사용¶
PCI 패스스루는 물리 NPU를 하나의 VM에 직접 할당하는 방식입니다. 이 모드에서는 할당된 VM에서 실행되는 드라이버만 NPU에 독점적으로 접근하며, NPU는 VM 간에 공유되지 않습니다.
IOMMU 활성화 및 권장 커널 파라미터 구성¶
먼저 서버 플랫폼의 BIOS에서 다음 설정을 활성화합니다.
- VT-D/IOMMU
BIOS 메뉴 이름과 구성 절차는 시스템 제조사에 따라 일부 다를 수 있습니다.
PCI 패스스루는 IOMMU를 통해 VM에 할당된 NPU 장치의 DMA 접근을 격리하여 호스트 및 다른 VM의 메모리를 보호합니다. IOMMU가 비활성화된 경우 PCI 패스스루가 동작하지 않습니다.
Note
현재 지원되는 배포판의 기본 커널에는 IOMMU가 이미 활성화되어 있습니다.
NPU PCI 패스스루 환경에서 권장하는 커널 파라미터는 다음과 같으며, /etc/default/grub의 GRUB_CMDLINE_LINUX에 추가합니다.
Note
아래 예시는 RBLN-CA22가 장착된 Intel 프로세서 기반 서버 기준입니다. AMD 프로세서의 경우 intel_iommu=on 대신 amd_iommu=on을 사용하며, 서버 제품에 따라 일부 커널 파라미터가 달라질 수 있습니다.
GRUB 설정을 업데이트하고 재부팅합니다.
Linux KVM에서 PCI 패스스루 사용하기¶
virsh 명령을 사용하여 Ubuntu Linux Kernel-based Virtual Machine(KVM)에서 NPU 패스스루를 구성할 수 있습니다.
NPU 패스스루를 구성하기 전에 다음 사전 요구 사항을 충족해야 합니다.
- Ubuntu Linux KVM이 설치되어 있어야 합니다(
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils). - VM의 머신 타입은 q35여야 합니다. q35는 PCIe 네이티브 토폴로지를 지원하므로 NPU 패스스루에 필요합니다.
virsh로 VM에 NPU 패스스루 구성¶
이 절차에서는 q35 머신 타입으로 구성된 기존 VM에 NPU를 패스스루로 할당하는 방법을 다룹니다. VM 생성 및 기본 구성은 이 문서의 범위에 포함되지 않으며, 자세한 내용은 아래 문서를 참조하십시오.
자세한 내용은 Ubuntu Virtualization - virsh 및 libvirt - PCI passthrough of host devices를 참조하십시오.
-
패스스루 모드로 VM에 할당할 NPU의 PCI 장치 BDF(bus/device/function)를 확인합니다.
다음 예시에서 NPU의 PCI 장치 BDF는
1b:00.0입니다. -
1단계에서 확인한 BDF를
domain,bus,slot,function형식으로 변환하여 XML에 지정하고, 해당 XML 파일을 사용하여 NPU 장치를 VM에 할당합니다.Note
virsh edit으로 VM XML을 직접 편집하여<hostdev>항목을 추가해도 동일하게 구성할 수 있습니다. -
NPU가 할당된 VM을 시작합니다.
-
VM에 접속하여 NPU가 정상적으로 할당되었는지 확인합니다.