Ubuntu 24.04
Sponsored Link

KVM : GPU パススルー2024/05/10

 

仮想マシンの GPU パススルーの設定です。

設定により、仮想マシン上で GPU が利用できるようになり、GPU の高い処理性能を活かした GPU コンピューティングが仮想マシン上でも実行できるようになります。

前提として、BIOS の設定で VT-d (Intel) または AMD IOMMU (AMD) を有効にしておく必要があります。

[1] KVM ホストで IOMMU 機能を有効化します。
# グラフィックカードの PCI 識別番号と [ベンダー ID : デバイス ID] を調べる
# 下例の場合
# PCI 識別番号 ⇒ [01:00.*]
# ベンダー ID : デバイス ID ⇒ [10de:***]

root@dlp:~#
lspci -nn | grep -i nvidia

81:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3060] [10de:2487] (rev a1)
81:00.1 Audio device [0403]: NVIDIA Corporation GA104 High Definition Audio Controller [10de:228b] (rev a1)

root@dlp:~#
vi /etc/default/grub
# 11行目 : 追記
# AMD CPU の場合は [amd_iommu=on] を指定
# Intel CPU の場合は [intel_iommu=on] を指定
# [vfio-pci.ids==***] には上で調べた [ベンダー ID : デバイス ID] を指定

GRUB_CMDLINE_LINUX="
intel_iommu=on iommu=pt vfio-pci.ids=10de:2487,10de:228b
"
root@dlp:~#
update-grub

root@dlp:~#
echo 'vfio-pci' > /etc/modules-load.d/vfio-pci.conf

root@dlp:~#
reboot
# 起動時に [IOMMU enabled] になっていれば OK

root@dlp:~#
dmesg | grep -E "DMAR|IOMMU"

[    0.010922] ACPI: DMAR 0x000000007A5C3130 000108 (v01 ALASKA A M I    00000001 INTL 20091013)
[    0.010958] ACPI: Reserving DMAR table memory at [mem 0x7a5c3130-0x7a5c3237]
[    0.401716] DMAR: IOMMU enabled
[    0.916024] DMAR: Host address width 46
[    0.916026] DMAR: DRHD base: 0x000000fbffc000 flags: 0x0
[    0.916041] DMAR: dmar0: reg_base_addr fbffc000 ver 1:0 cap d2078c106f0466 ecap f020df
[    0.916046] DMAR: DRHD base: 0x000000c7ffc000 flags: 0x1
[    0.916052] DMAR: dmar1: reg_base_addr c7ffc000 ver 1:0 cap d2078c106f0466 ecap f020df
[    0.916056] DMAR: RMRR base: 0x0000007dbcf000 end: 0x0000007dbddfff
[    0.916060] DMAR: ATSR flags: 0x0
[    0.916064] DMAR: RHSA base: 0x000000c7ffc000 proximity domain: 0x0
[    0.916067] DMAR: RHSA base: 0x000000fbffc000 proximity domain: 0x1
[    0.916072] DMAR-IR: IOAPIC id 10 under DRHD base  0xfbffc000 IOMMU 0
[    0.916076] DMAR-IR: IOAPIC id 8 under DRHD base  0xc7ffc000 IOMMU 1
[    0.916079] DMAR-IR: IOAPIC id 9 under DRHD base  0xc7ffc000 IOMMU 1
[    0.916082] DMAR-IR: HPET id 0 under DRHD base 0xc7ffc000
[    0.916085] DMAR-IR: x2apic is disabled because BIOS sets x2apic opt out bit.
[    0.916086] DMAR-IR: Use 'intremap=no_x2apic_optout' to override the BIOS setting.
[    0.916979] DMAR-IR: Enabled IRQ remapping in xapic mode
[    1.299542] DMAR: No SATC found
[    1.299546] DMAR: dmar0: Using Queued invalidation
[    1.299553] DMAR: dmar1: Using Queued invalidation
[    1.312667] DMAR: Intel(R) Virtualization Technology for Directed I/O

# 起動時に [vfio-pci] が有効になっていれば OK

root@dlp:~#
dmesg | grep -i vfio

[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.8.0-31-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro intel_iommu=on iommu=pt vfio-pci.ids=10de:2487,10de:228b
[    0.395931] Kernel command line: BOOT_IMAGE=/vmlinuz-6.8.0-31-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro intel_iommu=on iommu=pt vfio-pci.ids=10de:2487,10de:228b
[    4.612664] VFIO - User Level meta-driver version: 0.3
[    4.625530] vfio-pci 0000:81:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=none
[    4.625878] vfio_pci: add [10de:2487[ffffffff:ffffffff]] class 0x000000/00000000
[    4.650349] vfio_pci: add [10de:228b[ffffffff:ffffffff]] class 0x000000/00000000
[2] 以上で準備完了です。
稼働マシン作成時には [--host-device] には使用したい GPU を指定し, [--machine] には [q35], [--features] には [kvm_hidden=on] を指定します。
root@dlp:~# virt-install \
--name ubuntu2404 \
--ram 8192 \
--disk path=/var/kvm/images/ubuntu2404.img,size=30 \
--vcpus 4 \
--os-variant ubuntu24.04 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0,password=password \
--video vga \
--console pty,target_type=serial \
--location /home/ubuntu-24.04-live-server-amd64.iso,kernel=casper/vmlinuz,initrd=casper/initrd \
--extra-args 'console=ttyS0,115200n8' \
--host-device 81:00.0 \
--features kvm_hidden=on \
--machine q35 
[3] 仮想マシン作成後、仮想マシン上からグラフィックカードが認識されていれば OK です。
ubuntu@ubuntu:~$
lspci | grep -i nvidia

05:00.0 VGA compatible controller: NVIDIA Corporation GA104 [GeForce RTX 3060] (rev a1)
関連コンテンツ