Baldur's Gate 3 の画像 ― 2024年10月01日 18:24
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
wayvnc on sway with AMD GPU ― 2024年10月22日 21:20
No DRM backend supplied
proxmox 上の sway vm の画面表示が遅い事から、wayvncを使ってみました。
wayvnc in headlessからWLR_BACKEDNS=headless で sway を起動、 WAYLAND_DISPLAY=wayland-1 で wayvnc を起動すれば、 sway に vnc 接続できました。
調査の中で、hyprland の issues(Crash in headless mode)から、hyprland も同様に wayvnc 経由できそうだったので、VM の GPU が使えるようにできればと思いました。
ただ、wlroots specific に挙がっている WLR_DRM_DEVICESに、/dev/dri/card0 を指定しても、vnc 接続先の sway は GPUを使用していません。(amdgpu_top で、使用率が上がらないため)
sway 起動時に d オプションで起動して、デバッグログを出力させ、確認すると、"No DRM backend supplied, failed to create wlr_drm_lease_v1_manager"が出ていました。wlroots の wlr_drm_lease_v1.c 内で、DRMが見つけられてないようです。
seat 不足
最初はOSとして、GPUが正しく認識できてないのかと疑いましたが、lspci -v でも、 dmesg でも、amdgpu_top でも、amdgpuが確認できている為、そうではないと思いました。
sway/wlroots が GPUを認識できてないのだろうと、デバッグログとコードを、追ったのですが判りませんでした。
ふと見た、Sunshine のheadlessに関するissuesでsway を起動する前に、seatd を起動していました。alpine linux 3.20 になってから、setup-desktop だけで sway が入るものと思っていましたが、seatd は入りません。
Setting up a seat manager のとおり、Wayland コンポジタが、 入出力デバイスに生でアクセスするために、seatd が必要でした。
bootswayvnc.sh
bootswayvnc.sh として、以下のコードを用意しました。
WLR_BACKENDS=headless WLR_DRM_DEVICES=/dev/dri/card0 dbus-run-session -- sway & WAYLAND_DISPLAY=wayland-1 wayvnc 0.0.0.0 5980 &
ssh で接続し、bootswayvnc.sh を実行すると、5980ポートに外部から vnc接続でき、 かつ、GPU が使える swayに接続できました。
.profile には、以下を設定しています。
export XDG_SESSION=wayland export XDG_CURRENT_DESKTOP=sway export LIBSEAT_BACKEDN=seatd if [ -z "$XDG_RUNTIME_DIR" ]; then XDG_RUNTIME_DIR="/tmp/$(id -u)-runtime-dir" mkdir -pm 0700 "$XDG_RUNTIME_DIR" export XDG_RUNTIME_DIR fi
最近のコメント