According to Microsoft WSL2 is way faster than WSL1 for running Linux images. So, why even after upgrade to WSL2 is Linux running slow and with the same IO inefficiency like it was on WSL1?
The reason is simple. Even though the WSL2 was added to the operating system, the old images are running on WSL1. You can verify it by command:
wsl -l -v
Output:
NAME STATE VERSION * openSUSE-Leap-15.2 Stopped 1 Ubuntu Stopped 1 docker-desktop-data Stopped 2
As you can see both Ubuntu and openSUSE has set version to 1 which means that these images runs on WSL1. It’s necessary to explicitly change the version by following commands:
wsl --shutdown wsl --set-version "Ubuntu" 2 wsl --set-version "openSUSE-Leap-15.2" 2
The conversion will take some time. Output:
Conversion in progress, this may take a few minutes... For information on key differences with WSL 2 please visit https://aka.ms/wsl2 Conversion complete.
Now you can verify the version of WSL for the image:
wsl -l -v NAME STATE VERSION * openSUSE-Leap-15.2 Stopped 2 Ubuntu Stopped 2 docker-desktop-data Stopped 2
Simply start the shell of the distribution and you’ll experience better performance.
It’s also possible to set version for future images by command:
wsl --set-default-version 2