vnc での表示 (proxmox)2024年10月11日 08:23

表示が遅いです

以下の構成のvm を spiceで表示すると、foot の描画は問題ありませんが、壁紙や、firefox、youtube などで、描画が遅くなりました。

  • sway on alpine linux 3.20 with display spice(qxl) / proxmox
  • sway on alpine linux 3.18 with display spice(qxl) / proxmox

以下は、遅くありません。

  • sway on alpine linux 3.18 with display spice(qxl) / local kvm
  • gnome on alpine linux 3.20 with display spice(qxl) / proxmox

解決?

以下に、”SPICEの為、Xorgセッションを使う”とありました。 Wayland の 描画は、Proxmox の SPICE では、遅いのかもしれません。

proxmox の novnc は、Windowキーの入力がしづらい為、 別のvnc clientで接続すると遅くありませんでした。

proxmox の spice が、X / Wayland の違いで影響を受けたのだと思うのですが、 gnome の表示が遅くなかったのが、何故かは、判りません。:D

Baldur's Gate 3 の画像2024年10月01日 18:24

Baldur's Gate 3の動作画像を別記事でUPしておきます。

  • remmina のスクリーンショットで取得
  • 2MBの制限があるので、ImageMagickのconvert で resize

Ubuntu 24.04 on Proxmox 8.2.7 with ADM Radeon RX 7600 (GPU PassThrough)2024年09月30日 20:16

Windows環境で、Baldur's Gate 3を遊んだPCに、Proxmoxを入れて、UbuntuのVMで動作するかを確認しました。

ベアメタル上に Ubuntu を入れて動作確認

まずは、ベアメタル上にUbuntu 24.04をインストールして、動作を確認。noble用のamdgpu-insatll_6.2.*.debをインストールして、Baldur's Gate 3 が動作することを確認しました。

Proxmox の構築

BIOS の設定

後で記載します

Proxmox のインストール

ISO から、インストールしました

Activating IOMMU for GRUB

video=efifb:off は、不要かもしれません。

  • /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt amd_iommu=on video=efifb:off"
  • update-grub

ROM の取得

GPU passthrough の設定(/etc/modules の vfio設定等)の前に、AMD GPU の romをダンプします。

cd /sys/bus/pci/devices/0000:03:00.0/
echo 1 > rom
cat rom > /tmp/image.rom
echo 0 > rom

vfio設定後等だと、cat でエラーが出て取得できませんでした。

rom-parser で、確認すると、正しく取得できたかわかりやすいです。 以下の様なエラーや、Invalid が出ていると正しく読めないと思います。

rom-parser ./vbios_1002_7480.bin 
Valid ROM signature found @0h, PCIR offset 3c0h
	PCIR: type 0 (x86 PC-AT), vendor: 1002, device: 7480, class: 030000
	PCIR: revision 0, vendor revision: 1603
Error, ran off the end

romファイルは、以下に配置します。

/usr/share/kvm

vendor-reset インストール

AMD Reset Bug対応として、Proxmoxに、 gnif/vendor-resetをインストールし、service 登録します。

service 登録の方法は、 [TUTORIAL] PCI/GPU Passthrough on Proxmox VE 8 のとおり。ただ、device_specific の書き込みに失敗したので、'echo device_specific' の範囲をシングルクォートで囲むようにしました。

 ExecStart=/usr/bin/bash -c 'echo device_specific' > /sys/bus/pci/devices/0000\:03\:00.0/reset_method

vfio設定

blacklistや、vfioのsoftdep設定も、試しましたが、 現時点では、以下の設定のみを行っています。

> cat /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
vendor-reset

lspci -v で、driver が vfio かを確認します。

03:00.0 VGA compatible controller: Advanced Micro Devices, Inc.[AMD/ATI] Navi 33 [Radeon RX 7600/7600 XT/7600M XT/7600S/7700S / PRO W7600] (rev cf) (prog-if 00 [VGA controller])
(中略)
        Kernel driver in use: vfio-pci
        Kernel modules: amdgpu
(中略)
03:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 HDMI/DP Audio
(中略)
        Kernel driver in use: vfio-pci
        Kernel modules: snd_hda_intel

VMの設定

Ubuntu のインストール

以下のマシン構成でUbuntu 24.04 を ISOからインストールします。

  • CPU : hostを選択
  • BIOS: OVMF(UEFI)を選択
  • マシン:q35 を選択(バージョンは最新、vIOMMUは起点(None))
  • Pre-Enroll keys:未選択
  • TPM追加:未選択
  • ディスプレイ:VirIO-GPU

リモートログインと、sshdのインストール

ディスプレイがなくなっても、GUIの操作ができるように、 Ubuntu24.04のリモートログインを有効にします。

加えて、もしものために、sshdをインストールします。

sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh

amdgpu driver のインストール

ベアメタル同様、amdgpu-insatll_6.2.*.debをインストールします。 amdgpu-install も、ベアメタルと同様です。

sudo amdgpu-install --usecase=graphics,rocm

fwupd のサービス停止

rocminfo を実行すると、”error: kvm run failed Bad address” が出たので、 まじないかもですが、同様の記事を参考にfwupd サービスを停止します。

systemctl stop fwupd fwupd-refresh.service fwupd-refresh.timer fwupd-offline-update.service
systemctl mask fwupd fwupd-refresh.service fwupd-refresh.timer fwupd-offline-update.service
systemctl status fwupd fwupd-refresh.service fwupd-refresh.timer fwupd-offline-update.service

PCIデバイスの追加と、ディスプレイの削除

仮想マシンを停止し、マシン構成にPCIデバイスを追加します。 加えて、ディスプレイを削除します。

  • PCIデバイス:0000:03:00,pcie=1,romfile=XXXX,xvga=1
  • ディスプレイ:VirIO-GPU << 削除

PCIデバイスのromfile設定は、ProxmoxのWebUIでは設定できないため、 設定ファイルを修正します。

vi /etc/pve/qemu-server/XXX.conf
hostpci0: 0000:03:00,pcie=1,romfile=XXXX,x-vga=1

amdgpu_top のインストール

PCIデバイス追加後、VMを起動し、RemminaのRDPプロトコルで 接続します。

AMD GPUの動作状況を確認するツールとして、 AMDGPU_TOPをインストールしました。

これで、冒頭の画面のように、RX7600が System Detailsにも表示され、状況を確認できました。

できてない事、未確認の事

  • Steam でのゲームパッドの認識
  • サウンドの出力、マイクの入力

前者は、ElecomのJC-U4013Sが ベアメタルでは認識でき、使用できていました。

USBデバイスとして、VMに追加し、joystickと、xboxdrv をインストールし、 joystickとしては認識でいているのですが、Steamでは認識できませんでした。

sudo apt install joystick
sudo apt install xboxdrv

後者は、GPUをPCIで追加する際、全機能ではなく個別に追加し、 ROMファイルも個々に指定するようですが、 手持ちのスピーカがなく、未確認です。:D

参考