Windows、WSL与Linux性能对比
Phoronix网站发布了关于Windows、WSL和Linux的性能基准测试结果。测试的内容包括网络性能、I/O性能、编程语言运行性能和图形处理性能等。
测试的系统版本为:
Ubuntu 18.04.3 LTS
Ubuntu 19.10
Windows 10 18362
Windows 10 18362 WSL
Windows 10 19008 WSL
Windows 10 19008 WSL2
Windows 10 19008
所有的Windows/Linux WSL性能基准测试均基于以下硬件环境:
MSI X299 SLI PLUS主板
Intel Core i9 7960X CPU
16GB内存
256GB Intel NVMe SSD
技嘉Radeon RX 550显卡
所有操作系统和WSL实例均在其现成的配置中进行了测试,所有这些基准测试都是使用Phoronix Test Suite进行的。
下面看看测试结果:
WSL过去存在瓶颈的地方是I/O性能,通过观察测试数据我们能看到,到了WSL2,它在I/O性能上要优于WSL,这或许要归功于WSL2的Hyper-V VM。不过对于某些SQLite测试,WSL2的表现并不算太好。
有意思的是,WSL1/WSL2的性能表现在某些SQLite测试中甚至超过Windows本身(有可能是由于SQLite上游的fsync行为在不同平台中表现不一样,也可能是因为某些fsync操作未在WSL下进行同样的处理)。
虽然WSL2提供了比WSL更好的I/O性能,但仍有改进的空间。
通过微软自带的Ethr基准测试进行评估,在网络性能方面,与Ubuntu相比,WSL甚至Windows 10本身仍具有相当大的优势。
在完全由CPU决定的工作负载中,WSL/WSL2的性能表现良好,和裸机Linux不相上下。
上图的性能测试结果显示,除了在测试HTTP时,WSL下的Golang性能基本比Windows更好。
[!--empirenews.page--]
上面的数据显示,在使用相同 OpenJDK版本的条件下,Windows 10 19008似乎也比Windows 10 18362提供了更好的Java性能。而对于WSL,结果好坏参半。
上面的数据是使用英特尔OSpray渲染器进行测试的结果,可以看到WSL1比WSL2快。
这里使用英特尔Embree测试的数据也很有趣,可以看到,在使用官方Windows二进制文件的情况下,Windows 10 19008的性能要比18362的更好,WSL1的性能也比WSL2好,不过它们都要比Ubuntu逊色一筹。
这里使用了英特尔SVT视频编码器进行测试,可以看到,属于Windows 10 Insider预览版的Windows 10 19008表现不错,和Ubuntu、WSL/WSL2不相上下。
从这个测试可以看到,Windows 10 Build 19008的性能有了较大的改进,而WSL的性能则没有太大的变化。
与Windows相比,LuxCoreRender在 WSL/WSL2 中的性能更好。WSL的性能也比Ubuntu稍好。
Himeno属于比较重量级的工作负载,可以看到,在这个测试下,裸机Ubuntu的性能仍然是最好的。
与较早的18362版本相比,Windows 10 19008显示出了另一项重大改进——解压文件的性能。
这里测试的是代码编译性能,由于I/O存在瓶颈,在WSL上进行代码编译仍然很慢,而WSL2由于采用了传统的VM类型方法,因此它的速度有了一定的提升。
从上图可以看出,在 WSL中构建LLVM比在Windows中构建LLVM要快。
上面这些结果显示了不同的测试条件下各自的表现,这里不再赘述了,各位可根据自己的需要进行查看。
使用Blender进行测试时,WSL/WSL2 可与Linux的性能相媲美,而Windows 10 18362的表现则稍有落后。
尽管执行了各种各样的测试,但是如果对在七个不同操作系统上成功运行的所有测试取几何平均值,可以得出这样的结论:
Windows 10 Build 19008的总体性能要比Build 18362版本好,而WSL的性能并没有太大变化
WSL2比WSL的性能确实稍好一些,这是因为在 I/O或网络活动繁重的工作负载的情况下前者性能要好得多
在这种特殊的Core i9 7960X场景下,运行Ubuntu Linux的速度总体上比最快的Windows配置快27%
有兴趣的朋友可查看这份更详细的 OpenBenchmarking.org结果文件,以深入研究这些Windows / WSL / Linux基准测试内容。