WSL vs WSL 2 – performance

WSL 2 is a new version of the architecture that powers the Windows Subsystem for Linux to run ELF64 Linux binaries on Windows. Its primary goals are to increase file system performance, as well as adding full system call compatibility. This new architecture changes how these Linux binaries interact with Windows and your computer’s hardware, but still provides the same user experience as in WSL 1 (the current widely available version). Individual Linux distros can be run either as a WSL 1 distro, or as a WSL 2 distro, can be upgraded or downgraded at any time, and you can run WSL 1 and WSL 2 distros side by side. WSL 2 uses an entirely new architecture that uses a real Linux kernel.

It’s a major reworking of the original WSL concept, moving away from translating Linux system calls to Windows to shipping a complete Linux kernel that runs alongside Windows’ own kernel.

The reasons for doing this are many, but the main one is simple: It’s impossible for an emulator that ships twice a year to keep up with the changes in the Linux kernel, changes that Linux binaries depend on. If Windows is to support developers building Linux apps for the cloud, then it needs to be more than consistent, it needs to be compatible.


Linux kernel in WSL 2

The Linux kernel in WSL 2 is built in house from the latest stable branch, based on the source available at This kernel has been specially tuned for WSL 2. It has been optimized for size and performance to give an amazing Linux experience on Windows and will be serviced through Windows updates, which means you will get the latest security fixes and kernel improvements without needing to manage it yourself.

Increased file IO performance

File intensive operations like git clone, npm install, apt update, apt upgrade, and more will all be noticeably faster. The actual speed increase will depend on which app you’re running and how it is interacting with the file system. Initial versions of WSL 2 run up to 20x faster compared to WSL 1 when unpacking a zipped tarball, and around 2-5x faster when using git clone, npm install and cmake on various projects.

Sockets performance benchmarks






The Ubuntu 18.04 LTS WSL instance was used for testing with its default packages. In addition to looking at the WSL1 vs. WSL2 performance of Ubuntu 18.04, Ubuntu 18.04.2 LTS itself was also tested bare metal on the same system for looking at the raw performance of Ubuntu on the Intel desktop being tested.

Full System Call Compatibility

Linux binaries use system calls to perform many functions such as accessing files, requesting memory, creating processes, and more. In WSL 1 we created a translation layer that interprets many of these system calls and allows them to work on the Windows NT kernel. However, it’s challenging to implement all of these system calls, resulting in some apps being unable to run in WSL 1. Now that WSL 2 includes its own Linux kernel it has full system call compatibility. This introduces a whole new set of apps that you can run inside of WSL. Some exciting examples are the Linux version of Docker, as well as FUSE!

Using WSL 2 means you can also get the most recent improvements to the Linux kernel much faster than in WSL 1, as we can simply update the WSL 2 kernel rather than needing to reimplement the changes ourselves.

WSL 2 will be a much more powerful platform for you to run your Linux apps on and will empower you to do more with a Linux environment on Windows.


7 thoughts on “WSL vs WSL 2 – performance

  1. To test WSL 2 performance I have measured a Ruby on Rails application bootstrap time and the results were quite disappointing:

    with WSL 1 = 50 seconds

    with WSL 2 = 3 minutes and 10 seconds

    Using Windows 10 version 2004 build 19037.1

    1. That’s impossible.

      try these to fix it:
      1. Add linux rootfs folder to windows defender exclusion list
      2. mount wsl file system with umask 0022
      enabled = true
      options = “metadata,umask=22,fmask=11”

      3. try to open shell as administrator
      4. check internet speed on both wsl 1 and wsl 2 with same endpoint
      5. try with the latest windows insider preview build… there may be some fixes

  2. Right now /mnt/ folders are really slow in WSL2. If you want speed you will need to copy your app in a /home folder instead.

    1. yes…
      even WSL1 has many releases.
      I wrote this article when WSL is in windows insider preview only.
      now its 0.5sec for me also.

  3. Can confirm copying the code into \\wsl$\ubuntu\home\ubuntu\project
    Setting up a network mapped drive to \\wsl$\ubuntu

    And running the docker containers from within the ubuntu did the trick.
    Stuff is faster now.

Leave a Reply

Your email address will not be published. Required fields are marked *