| |
SR-IOVを使うと、GPUもVMマシン間で共用できるらしい(リソースを分け合える)
N150の場合は最大7台のVMで共有できるらしいが、1リソースにつき2GB程度消費するらしいので12GBだと厳しい。
GPUとして使うというよりは、RDPやVNCの画像転送のアクセラレーション的な意味合いのほうが強いか?
ProxmoxVE 9.0.3
root@pve:~# uname -r
6.14.8-2-pve
# apt update && apt install git sysfsutils pve-headers mokutil -y
# rm -rf /usr/src/i915-sriov-dkms-*
# rm -rf /var/lib/dkms/i915-sriov-dkms
# find /lib/modules -regex ".*/updates/dkms/i915.ko" -delete
# apt install build-* dkms
ソースコードの修正とビルド
# cd ~
# git clone https://github.com/strongtz/i915-sriov-dkms.git
# cd ~/i915-sriov-dkms
https://github.com/strongtz/i915-sriov-dkms/issues/227
ファイル: ~/i915-sriov-dkms/drivers/gpu/drm/i915/intel_runtime_pm.c
行: 246
if (pm_runtime_get_if_active(rpm->kdev, ignore_usecount) <= 0)
を次のコードに置き換えます:
if (pm_runtime_get_if_active(rpm->kdev) <= 0)
# dkms add .
# VERSION=$(dkms status -m i915-sriov-dkms | cut -d':' -f1)
# dkms install -m $VERSION --force
# dkms status
i915-sriov-dkms/2025.07.22, 6.14.8-2-pve, x86_64: installed (Original modules exist)
パスワードを設定
mokutil --import /var/lib/dkms/mok.pub
Grubの更新
# cp -a /etc/default/grub{,.bak}
# sudo sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"' /etc/default/grub
# update-grub
# update-initramfs -u -k all
# lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
Perform MOK management の画面で、Enroll MOKを選択し、先ほどのパスワードを入力
# lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
00:02.1 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
00:02.2 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
00:02.3 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
00:02.4 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
00:02.5 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
00:02.6 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
00:02.7 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
# dmesg | grep IOMMU
[ 0.025897] DMAR: IOMMU enabled
[ 0.112209] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1
[ 0.433448] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics
[ 6.152747] pci 0000:00:02.1: DMAR: Skip IOMMU disabling for graphics
[ 6.160055] pci 0000:00:02.2: DMAR: Skip IOMMU disabling for graphics
[ 6.166706] pci 0000:00:02.3: DMAR: Skip IOMMU disabling for graphics
[ 6.174851] pci 0000:00:02.4: DMAR: Skip IOMMU disabling for graphics
[ 6.181345] pci 0000:00:02.5: DMAR: Skip IOMMU disabling for graphics
[ 6.187273] pci 0000:00:02.6: DMAR: Skip IOMMU disabling for graphics
[ 6.192464] pci 0000:00:02.7: DMAR: Skip IOMMU disabling for graphics
ここで8台の仮想GPUデバイスが追加されるが、0は使用不可、重複無く1-7のいずれかをVMに割り当てることでGPUを共有できるようになる。ただし、1デバイス使用するたびに2G程度のメモリを消費するらしく、12Gのマシンでは2,3個使うのが限界だと思われる。
Windowsを起動
リモートデスクトップを有効化
他のPCからRDPできることを確認
VMを終了させProxmoxの標準ディスプレイ出力を無効化
以降RDPにて使用(ドライバを入れればRDPにGPUアクセラレーションが効く)
Windowsなら下記ドライバをインストール。
インテル® Arc™ & Iris® Xe Graphics - Windows*
# mkdir /mnt/nvme
# mount /dev/nvme0n1 /mnt/nvme
/etc/fstab
/dev/nvme0n1 /mnt/nvme ext4 defaults 0 2
Proxmox VEのWebUIにログイン
Datacenter -> Storage -> Add -> Directoryを選択
IDにストレージの名前を入力
Directoryにマウントポイント(例: /mnt/nvme)を指定
Contentでストレージに保存するデータの種類を選択
Addボタンをクリックして追加を完了
ローカルグループポリシーエディターを起動する
gpedit.msc
コンピューターの構成\管理用テンプレート\Windows コンポーネント\リモートデスクトップサービス\リモートデスクトップ セッション ホスト\リモートセッション環境\すべてのリモートデスクトップ サービス セッションにハードウェア グラフィックス アダプターを使用します```
をチェック
私の場合は効果が薄かったので下記レジストリをWin11に適用した。やらないよりはかなり効果が感じられると思う。