Table of Contents
The "Windows Subsystem for Linux", WSL, is one of the most interesting projects that Microsoft has ever implemented (in my opinion). Version 2 of WSL (WSL2) is even using a Linux kernel put together by Microsoft. You could probably call this "Microsoft Linux" without too much stretch of the imagination. This kernel replaces the kernel used in the Linux distributions that are installed into WSL2.
WSL2 offers improved performance over version 1 by providing more direct access to the host hardware drivers. Network and storage system performance in particular is greatly improved. Recent "Insider Dev Channel" builds of Win10 even allows access to the Windows NVIDIA display driver for GPU computing applications for WSL2 Linux applications! The performance improvements with WSL2 are largely because this version is running as a privileged virtual machine on to of MS Hyper-V. This means that at least low level support for the Hyper-V virtualization layer needs to be enabled to use it. In particular, the Windows feature "VirtualMachinePlatform" must be enabled for WSL2.
So what? Why would enabling "VirtualMachinePlatform" for WSL2 support be a concern?
When you enable "VirtualMachinePlatform" you have to reboot… After the reboot your Windows system is now a privileged virtual machine, VM-0, running on top of Hyper-V. Hyper-V is a "type 1" hypervisor. That means it is running as a virtualization layer directly on the bare-metal hardware. (like VMware ESXi for example) Your "host" Windows OS is running in a special Virtual Machine on top of that. This "could" potentially have negative effects on application performance on the host.
Note: "VirtualMachinePlatform" is not "full" Hyper-V. To completely enable Hyper-V, so that you could create and manage VM's, you also need to enable the feature called, …you guessed it, "Hyper-V".
This leads to the question…
Does enabling WSL2 have a negative impact on Windows 10 applications caused by the need to enable “VirtualMachinePlatform”?
… essentially NO, but read on to see what we actually looked at with our tests.
I have been using a WSL2 a lot when I am working on a Windows 10 system. I find it makes development work MUCH more pleasant. I connect to it from the new Windows Terminal application and from VScode using an extension specifically for that purpose. … I like it!
I don't notice any negative effects on "native" application performance. However, I was curious to see if "not noticing any effect" would hold up to actually application benchmark testing.
My "Puget Systems Labs" colleague William George graciously agreed to run our Windows test/benchmark suite on a Windows 10 system with and without WSL2 enabled and active.
|CPU||AMD Ryzen 9 3900X|
|CPU Cooler||Noctua NH-U12S|
|Motherboard||Gigabyte X570 AORUS ULTRA|
|RAM||4x DDR4-2933 16GB (64GB total)|
|Video Card||NVIDIA GeForce RTX 2080 Ti 11GB|
|Hard Drive||Samsung 960 Pro 1TB|
|Software||Windows 10 Pro 64-bit (1909 & 2004)|
The following table lists "summary results" for the various benchmarks that were run. (There were 367 individual benchmark "Result Types" in the original spreadsheet!) There were 2 test runs, both without WSL2 and VirtualMachinePlatform enabled (and active). The finial performance evaluation is the percent difference of the "with" and "without" result averages.
Note: The testing runs do not "use" WSL2. It's just that WSL2 and VirtualMachinePlatform is enabled for comparison.
|Benchmark Application||Result Type||Win10 #1||Win10 #2|| Win10 w/|
| Win10 w/|
| Average Difference |
|PugetBench for Photoshop 0.9 (Photoshop 21.1.3)||Overall Score||995||993||999||999||+0.50%|
|PugetBench for Lightroom Classic 0.91 (LR Classic 9.2)||Overall Score||1122||1118||1116.5||1121.5||-0.09%|
|PugetBench for Premiere Pro 0.9 (Premiere Pro 14.2.0)||Standard Overall Score||862||874||861||859||-0.93%|
|PugetBench for Premiere Pro 0.9 (Premiere Pro 14.2.0)||Standard Export Score||96.1||98||95||95.2||-2.03%|
|PugetBench for Premiere Pro 0.9 (Premiere Pro 14.2.0)||Standard Live Playback Score||76.3||76.8||77.1||76.6||+0.39%|
|PugetBench for After Effects 0.9 (After Effects 17.1×72)||Overall Score||1056||1064||985||1082||-2.53%|
|PugetBench for AERender 0.9 (After Effects 17.1×72)||Overall Score||1024||1007||999||985||-2.34%|
|PugetBench for DaVinci Resolve V0.8 BETA (DR 184.108.40.206)||4K Overall Score||1118||1118||1111||1120||-0.22%|
|GeekBench3||GeekBench Score Overall Multi Core||55310||55377||55487||55480||+0.25%|
|NeatBench (Neat Image 8.5.0 – Neat Video 5.1.0)||Max CPU and GPU Result||39.9||39.4||39.8||39.3||-0.25%|
|NeatBench (Neat Image 8.5.0 – Neat Video 5.1.0)||Max Peak CPU Only Result||25.6||25.5||25.6||25.6||+0.20%|
|CineBench R15.038||CPU Render Multi Core||3118.4||3118.2||3122.3||3132.3||+0.29%|
|Cinebench R20.060||CPU Render CB Score||7058.77||7060.13||7074.5||7072.27||+0.20%|
|OctaneBench 4.02.1||Total score||311.9||310.6||311.2||310.2||-0.18%|
|OctaneBench 2019||Total Score RTX On||1020||1020.8||1016.5||1017||-0.36%|
|OctaneBench 2019||Total Score RTX Off||309.1||309||309.2||309.4||+0.08%|
|V-Ray Benchmark 1.0.8||CPU||47||47||47||47||+0.00%|
|V-Ray Benchmark 1.0.8||GPU||49||49||48||48||-2.06%|
|V-Ray Next Benchmark 4.10.06||CPU Mode All CPUs||19744||19379||19627||19553||+0.15%|
|Pix4D 4.5.6||Rock Model Total||264||265||265||263||-0.19%|
|Pix4D 4.5.6||School Map Total||736||737||732||730||-0.75%|
|Redshift 2.6.41||Render Time Age of Vultures Scene||489||497||489||491||-0.61%|
|RealityCapture 220.127.116.1103||Rock Model Total||179.5||179.7||180||181||+0.50%|
|RealityCapture 18.104.22.16803||School Map Total||416.7||417.4||421.7||415.9||+0.42%|
- The results with (+) are where the test with WSL2 enabled was faster and (-) where the test was slower.
- You can see from the testing that there was negligible impact on performance.
- There are a few places where there was a performance drop around 2%. That could be a "real" performance drop or just normal variation. However, all of the results greater than 2% were negative.
Again, I'd like to thank William George for running the test suite!
The testing results should ease worries about native application performance degradation caused by enabling WSL2. Even if there is a small drop in performance for some applications it is worth the trade-off in my opinion. However, we did not do any direct gaming performance testing! It is not because we are not gamers, most of us are, including myself, we just don't do that kind of testing at Puget Systems. If any objective gaming testing conducted in a similar way to what we did in this post then put a link in the comments.
Happy computing! –dbk @dbkinghorn — Best wishes and stay safe!
Puget Systems offers a range of powerful and reliable systems that are tailor-made for your unique workflow.
Why Choose Puget Systems?
Built specifically for you
Rather than getting a generic workstation, our systems are designed around your unique workflow and are optimized for the work you do every day.
We’re Here, Give Us a Call!
We make sure our representatives are as accessible as possible, by phone and email. At Puget Systems, you can actually talk to a real person!
Fast Build Times
By keeping inventory of our most popular parts, and maintaining a short supply line to parts we need, we are able to offer an industry leading ship time.
Lifetime Labor & Tech Support
Even when your parts warranty expires, we continue to answer your questions and even fix your computer with no labor costs.
Click here for even more reasons!
Puget Systems Hardware Partners