1. 【如何科学地关闭VBS并与Windows Subsystem全家桶共存-哔哩哔哩】
https://b23.tv/6d6rgXv未经测试
2.
@无名啊,通过组策略禁用C:\Windows\system32\wscript.exe,我电脑都这样设置,可以使一部分开机自启病毒失效。
3.
@tasy5kg,居然还要修改启动引导,好复杂。。而且重启还失效。。
4.
@hui214,你是说 Visual Basic Script 吗?
看来英语缩写容易引起歧义。。
上面是指 Virtualization-Based Security(基于虚拟化的安全),整个 Win11 默认是跑在虚拟机里的。。


5.
@无名啊,在Windows Defender里把“内核隔离”里面的“内存完整性”选项关闭就行了,找不到就在设置里搜“内核隔离”或者“核心隔离”(旧版本说法)。关了这个之后其他虚拟化安全功能都会被禁用,但是Hyper-V和WSL2都可以继续使用。
如果本来就处于关闭状态,说明你本来就没开基于虚拟化的安全。打开虚拟化和Hyper-V功能不代表打开了“基于虚拟化的安全”。后者只有全新安装才会自动启用,升级安装后默认是关闭的。
7.
参考文档:https://learn.microsoft.com/zh-cn/windows-hardware/design/device-experiences/oem-vbs
基于虚拟化的安全功能(VBS)使用硬件虚拟化和 Windows 虚拟机监控程序来创建独立的虚拟环境,该环境将成为假定内核遭到入侵的 OS 的信任根。
其中一个安全解决方案是内存完整性,它通过在 VBS 的隔离虚拟环境中运行内核模式代码完整性来保护和强化 Windows。
VBS 要求以下组件存在并得到正确配置:
安全启动:必须在利用 VBS 的设备上启用安全启动。
所以关闭核心隔离再关闭安全启动就不用担心VBS会生效了。
8.
@无名啊,我确实以为你想关闭的是Visual Basic Script,所以我才一直没有回答。
10.
@无名啊,内核隔离是“基于虚拟化的安全”中唯一会影响性能的部分,关闭它就行了。其他功能主要是和固件签名验证、安全启动等有关,不会影响性能。
被个别媒体引述为“性能降低达37.7%”的也只是内核隔离功能,该功能会在新装的Windows里默认启用,带来了性能影响,媒体也只是将该功能关闭就恢复了性能。
11.
@老虎会游泳,我在 0 楼测的《Win11 比 Ubuntu 慢 9%》,就是在 9 楼情况下测的。。
9 楼的情况,在我一开始装内存盘软件时,就要求那样了。。(关闭内存完整性)


12.
@无名啊,同时运行两个系统肯定会比只运行一个系统慢啊,这不是理所当然的吗?除非你能完全关闭主控Windows,只在hyper-v里运行WSL2,才能达到和裸机运行Linux接近的性能(还是会有微量性能损失,因为hyper-v虚拟机监控程序也要分走一部分CPU)。
13.
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慢的。
14.
@老虎会游泳,0 楼也测了 WSL1,此时 WSL2 是关闭的,但结果都是比 Ubuntu 慢了 9%。。
猜测此时 WSL1 实际也是虚拟机中的,所以和 WSL2 速度一样。。
所以我才想关掉 VBS,这样 Win11 裸机跑,WSL2 还是虚拟化,速度应该就差不多了。。


15.
@无名啊,你在BIOS里把虚拟化功能关闭,WSL1还是能用的,VBS也会变成未启用,你再去测一下就能知道hyper-v带来的影响是多大了。WSL1的问题在于微软写的Windows/Linux系统调用翻译层本来就性能不好,怪不了hyper-v。
16.
@无名啊,> WSL1 / WSL2 运行,速度慢了 9%
这说明你的应用是一个存粹的CPU密集型应用啊,完全没有IO瓶颈,所以WSL1和WSL2的性能才接近。只要有一点IO压力,WSL1的性能就会远低于WSL2了,因为Windows/Linux翻译层的IO性能远低于虚拟机中的原生Linux内核,并且还有偶发的死锁问题。
17.
@老虎会游泳,有空我测下,BIOS 关虚拟化,裸机跑 Win11,WSL1 里提升多少吧。。
感觉 CPU 密集型应用,应该不会有多少 syscall 吧。。而且转码影片才几十 MB,应该没有 IO 损耗问题。。
要不我在 Win 也原生编译一下。老虎你经验里,哪个编译器效率更高呢?MSVC?msys2?还是其他啥呢?
当时我在 Ubuntu 测试,Clang 20 编译的 svt-av1-psy,比 GCC 14 快 13% 左右。。
18.
@无名啊,哦对了,说起来,CPU密集型应用也不会受到虚拟化安全的性能影响啊。虚拟化安全影响的主要是系统调用速度和IO速度。。。
纯计算类应用在计算的时候根本不会经过任何安全检查代码。安全检查都是设置在系统调用和IO控制操作附近的。
19.
@老虎会游泳,会不会是内存寻址多了几层,导致慢了。。
转码时还是要占几 GB 内存的。。