Windows、WSL 與Linux 的性能對比
Phoronix網站發布了關於Windows、WSL和Linux的性能基準測試結果。測試的內容包括網絡性能、I/O性能、編程語言運行性能和圖形處理性能等。所有操作系統和WSL實例均在其現成的配置中進行了測試,所有這些基準測試都是使用Phoronix Test Suite進行的。
測試的系統版本為:
- 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 過去存在瓶頸的地方是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 更好。
上面的數據顯示,在使用相同 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基準測試內容。