[心得] 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