[心得] PVE 跑 Windows VM 玩遊戲卡成狗解法

作者: s25g5d4 (function(){})()   2024-12-21 15:40:12
這幾天回鍋戰車世界
但現在手邊只剩 Mac 跟這台跑虛擬機的 PC
想說我都 GPU passthrough 進去了應該可以打吧
結果開最低畫質還只有 30~40 fps,卡到瘋掉
戰車世界不太吃效能,照理來說 7600 + 6650 XT 開著 VM 也不該這麼卡
我的螢幕是 4K60,雖然 4K 會吃效能但調到 1080p 全螢幕也是一樣
於是又開始快樂的 debug 旅程
1. 先研究卡在 CPU 還是 GPU,發現是 CPU 隨時都在滿載狀態
2. 調整 VM CPU Affinity,將 windows guest 與其他 VM 核心錯開
參考 /proc/cpuinfo,實體核心分組為 (0,6) (1,7) (2,8) (3,9) (4,10) (5, 11)
括號內為同一組 SMT 核心
因此將 CPU Affinity 設定為 0-3,6-9 其他 VM 使用 4,5,10,11
=> 沒用
3. 調高 TjMAX 與開啟 PBO (原本為了節能關閉)
=> 沒用
4. 調整 windows 電源設定為最佳效能 (一樣原本為了節能)
=> 沒用
5. 開啟顯卡 Resizable BAR
原先發現開啟 ReBAR 會遇到 windows 無法驅動 passthrough GPU
後來找到文章是說顯卡 BAR 的 resource 2 size 必須小於 8MB
resource 0 沒有限制
先進 BIOS 打開 ReBAR 跟 4G decoding
進 PVE 後 unbind 顯卡驅動、設定 resource 2 size 再 bind 回去
echo 0000:03:00.0 > /sys/bus/pci/drivers/vfio-pci/unbind
echo 3 > /sys/bus/pci/devices/0000\:03\:00.0/resource2_resize
echo 0000:03:00.0 > /sys/bus/pci/drivers/vfio-pci/bind
然後開啟 windows VM
=> 還是沒用
6. 關閉 Windows 記憶體完整性保護
之前曾觀察到開啟這個有機會造成 windows 當機
後來幾乎沒有再當機過就不管它了
=> 沒想到兇手竟然就是這個
現在開戰車可以設定 HD 客戶端高畫質了
fps 在 120 上下,其實還是減損蠻多的,但至少能玩了
注意這是 4K 無邊界視窗化的效能
把過程紀錄下來提供給想用 VM 玩遊戲的人參考
作者: a000000000 (九個零喔)   2023-10-12 03:28:00
沒買就不能叫喔 位蛇摸
作者: eyecolor (欸)   2023-10-12 03:28:00
連買都不想買的人當然不會在意..廢話一堆
作者: eyecolor (欸)   2023-10-12 03:29:00
秀出證明來報備阿..對我吠就拿出資格來
作者: a000000000 (九個零喔)   2023-10-12 03:29:00
我改秀識別證可以ㄇQQ

Links booklink

Contact Us: admin [ a t ] ucptt.com