Win11 24H2 如何关闭 VBS 并保留 WSL2 呢?

我在 Ubuntu 25.04 上,编译了 Svt-av1-psy 来转码影片。

同样二进制文件,在 Win11 的 WSL1 / WSL2 运行,速度慢了 9%。

不想频繁切换系统来转码。听说 VBS 性能损失很大,网上查关闭教程,但看起来都会导致 WSL2 不可用?

回复列表(27|隐藏机器人聊天)
  • @Ta / 1天前 / /
    【如何科学地关闭VBS并与Windows Subsystem全家桶共存-哔哩哔哩】 https://b23.tv/6d6rgXv

    未经测试
  • @Ta / 1天前 / /
    @无名啊,通过组策略禁用C:\Windows\system32\wscript.exe,我电脑都这样设置,可以使一部分开机自启病毒失效。
  • @Ta / 14小时前 / /

    @tasy5kg,居然还要修改启动引导,好复杂。。而且重启还失效。。

  • @Ta / 14小时前 / /

    @hui214,你是说 Visual Basic Script 吗?

    看来英语缩写容易引起歧义。。

    上面是指 Virtualization-Based Security(基于虚拟化的安全),整个 Win11 默认是跑在虚拟机里的。。

  • @Ta / 14小时前 / /

    @无名啊,在Windows Defender里把“内核隔离”里面的“内存完整性”选项关闭就行了,找不到就在设置里搜“内核隔离”或者“核心隔离”(旧版本说法)。关了这个之后其他虚拟化安全功能都会被禁用,但是Hyper-V和WSL2都可以继续使用。

    如果本来就处于关闭状态,说明你本来就没开基于虚拟化的安全。打开虚拟化和Hyper-V功能不代表打开了“基于虚拟化的安全”。后者只有全新安装才会自动启用,升级安装后默认是关闭的。

  • @Ta / 14小时前 / /

    图中这两个选项就是所谓的“基于虚拟化的安全”:
    image.png(80.61 KB)

  • @Ta / 14小时前 / /

    参考文档:https://learn.microsoft.com/zh-cn/windows-hardware/design/device-experiences/oem-vbs

    基于虚拟化的安全功能(VBS)使用硬件虚拟化和 Windows 虚拟机监控程序来创建独立的虚拟环境,该环境将成为假定内核遭到入侵的 OS 的信任根。

    其中一个安全解决方案是内存完整性,它通过在 VBS 的隔离虚拟环境中运行内核模式代码完整性来保护和强化 Windows。


    VBS 要求以下组件存在并得到正确配置:

    安全启动:必须在利用 VBS 的设备上启用安全启动。


    所以关闭核心隔离再关闭安全启动就不用担心VBS会生效了。

  • @Ta / 14小时前 / /

    @无名啊,我确实以为你想关闭的是Visual Basic Script,所以我才一直没有回答。

  • @Ta / 14小时前 / /

    @老虎会游泳,是这样吗?VBS 还是开着的。。

    屏幕截图 2025-06-03 231331.webp(127.48 KB)

  • @Ta / 14小时前 / /

    @无名啊,内核隔离是“基于虚拟化的安全”中唯一会影响性能的部分,关闭它就行了。其他功能主要是和固件签名验证、安全启动等有关,不会影响性能。

    被个别媒体引述为“性能降低达37.7%”的也只是内核隔离功能,该功能会在新装的Windows里默认启用,带来了性能影响,媒体也只是将该功能关闭就恢复了性能。

  • @Ta / 14小时前 / /

    @老虎会游泳,我在 0 楼测的《Win11 比 Ubuntu 慢 9%》,就是在 9 楼情况下测的。。

    9 楼的情况,在我一开始装内存盘软件时,就要求那样了。。(关闭内存完整性)

    屏幕截图 2025-06-03 232414.webp(72.9 KB)

  • @Ta / 14小时前 / /

    @无名啊,同时运行两个系统肯定会比只运行一个系统慢啊,这不是理所当然的吗?除非你能完全关闭主控Windows,只在hyper-v里运行WSL2,才能达到和裸机运行Linux接近的性能(还是会有微量性能损失,因为hyper-v虚拟机监控程序也要分走一部分CPU)。

  • @Ta / 14小时前 / /

    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慢的。

  • @Ta / 14小时前 / /

    @老虎会游泳,0 楼也测了 WSL1,此时 WSL2 是关闭的,但结果都是比 Ubuntu 慢了 9%。。

    猜测此时 WSL1 实际也是虚拟机中的,所以和 WSL2 速度一样。。

    所以我才想关掉 VBS,这样 Win11 裸机跑,WSL2 还是虚拟化,速度应该就差不多了。。

  • @Ta / 14小时前 / /

    @无名啊,你在BIOS里把虚拟化功能关闭,WSL1还是能用的,VBS也会变成未启用,你再去测一下就能知道hyper-v带来的影响是多大了。WSL1的问题在于微软写的Windows/Linux系统调用翻译层本来就性能不好,怪不了hyper-v。

  • @Ta / 14小时前 / /

    @无名啊,> WSL1 / WSL2 运行,速度慢了 9%

    这说明你的应用是一个存粹的CPU密集型应用啊,完全没有IO瓶颈,所以WSL1和WSL2的性能才接近。只要有一点IO压力,WSL1的性能就会远低于WSL2了,因为Windows/Linux翻译层的IO性能远低于虚拟机中的原生Linux内核,并且还有偶发的死锁问题。

  • @Ta / 13小时前 / /

    @老虎会游泳,有空我测下,BIOS 关虚拟化,裸机跑 Win11,WSL1 里提升多少吧。。

    感觉 CPU 密集型应用,应该不会有多少 syscall 吧。。而且转码影片才几十 MB,应该没有 IO 损耗问题。。


    要不我在 Win 也原生编译一下。老虎你经验里,哪个编译器效率更高呢?MSVC?msys2?还是其他啥呢?

    当时我在 Ubuntu 测试,Clang 20 编译的 svt-av1-psy,比 GCC 14 快 13% 左右。。

  • @Ta / 13小时前 / /

    @无名啊,哦对了,说起来,CPU密集型应用也不会受到虚拟化安全的性能影响啊。虚拟化安全影响的主要是系统调用速度和IO速度。。。

    纯计算类应用在计算的时候根本不会经过任何安全检查代码。安全检查都是设置在系统调用和IO控制操作附近的。

  • @Ta / 13小时前 / /

    @老虎会游泳,会不会是内存寻址多了几层,导致慢了。。

    转码时还是要占几 GB 内存的。。

添加新回复
回复需要登录