我在 Ubuntu 25.04 上,编译了 Svt-av1-psy 来转码影片。
同样二进制文件,在 Win11 的 WSL1 / WSL2 运行,速度慢了 9%。
不想频繁切换系统来转码。听说 VBS 性能损失很大,网上查关闭教程,但看起来都会导致 WSL2 不可用?
图中这两个选项就是所谓的“基于虚拟化的安全”:
参考文档:https://learn.microsoft.com/zh-cn/windows-hardware/design/device-experiences/oem-vbs
基于虚拟化的安全功能(VBS)使用硬件虚拟化和 Windows 虚拟机监控程序来创建独立的虚拟环境,该环境将成为假定内核遭到入侵的 OS 的信任根。
其中一个安全解决方案是内存完整性,它通过在 VBS 的隔离虚拟环境中运行内核模式代码完整性来保护和强化 Windows。
VBS 要求以下组件存在并得到正确配置:
安全启动:必须在利用 VBS 的设备上启用安全启动。
所以关闭核心隔离再关闭安全启动就不用担心VBS会生效了。
WSL2是hyper-v中的虚拟机。“虚拟机平台”和“虚拟机监控平台”都是启用hyper-v。
启用hyper-v后,Windows本身也会变成一个运行在hyper-v中的虚拟机,只不过是特权虚拟机,可以直接访问硬件,还能管理其他虚拟机。
所以只要启用了WSL2,Windows本身的性能也会略微下降,因为从裸机运行变成虚拟机内运行加硬件直通了。
但是这就是使用WSL2的代价,这是无法避免的。而且性能下降程度应该不到1%
至于速度慢了 9%,那是因为Windows在和Linux交替运行,在抢走Linux的CPU时间嘛。hyper-v把9%的CPU时间分配给了Windows。
如果要使用Windows NTFS文件系统内的虚拟磁盘,那把CPU时间分配给Windows是不可避免的。除非hyper-v Linux里做硬盘直通,然后完全不和Windows交互,并且Windows直接注销,不登录到桌面,后台服务也尽可能停止运行,才能尽可能不抢走CPU时间,性能才可能和裸机运行Linux接近。
但少了和Windows的互通,就不是WSL2了。
所以WSL2必然是要比裸机运行Linux慢的。
未经测试