wsl

filesystem performance is slow#

workaround#

Prefer ~/ over /mnt when filesystem performance is needed

wsl uses all the ram#

yolo#

Force linux to drop the page cache

bash
echo 1 | sudo tee /proc/sys/vm/drop_caches

limit memory assigned to WSL2 VM#

Create a %UserProfile%\.wslconfig file

ini
[wsl2] memory=6GB swap=0 localhostForwarding=true

running windows applications in wsl#

Controlled via /etc/wsl.conf:

ini
[interop] enabled=true appendWindowsPath=false

More info

integrate beyond compare in wsl#

Inside ~/.gitconfig:

ini
[diff] tool = bcomp [difftool] prompt = false [difftool "bcomp"] path = "/mnt/c/Program\\ Files/Beyond\\ Compare\\ 4/BCompare.exe" cmd = "/mnt/c/Program\\ Files/Beyond\\ Compare\\ 4/BCompare.exe" "$(wslpath -aw $LOCAL)" "$(wslpath -aw $REMOTE)" [merge] tool = bcomp [mergetool] prompt = false [mergetool "bcomp"] path = "/mnt/c/Program\\ Files/Beyond\\ Compare\\ 4/BCompare.exe" cmd = "/mnt/c/Program\\ Files/Beyond\\ Compare\\ 4/BCompare.exe" "$(wslpath -aw $LOCAL)" "$(wslpath -aw $REMOTE)" "$(wslpath -aw $BASE)" "$(wslpath -aw $MERGED)"

increase number of open files#

Running into EMFILE errors because too many files open? (looking at you npm i):

bash
mylimit=8000 sudo prlimit --nofile=$mylimit --pid $$; ulimit -n $mylimit su $USER

or

bash
sudo prlimit -p "$$" --nofile=10000:10000 exec $SHELL ulimit -n 10000

fix clock drift#

WSL2 clock drifts if left open when Windows sleeps. Fix with:

bash
sudo hwclock -s

port-forward for external connections#

In powershell, to port-forward:

powershell
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=$ipAddress

To release:

powershell
netsh interface portproxy delete v4tov4 listenport=3000 listenaddress=0.0.0.0

To show all currently configured:

powershell
netsh interface portproxy show all

fixing ubuntu 0x80040326#

Ubuntu failing to start, even after reinstall, with:

bash
Error: 0x80040326 Error code: WSL/Service/0x80040326 Press any key to continue... [process exited with code 4294967295 (0xffffffff)]

Run the following, and then restart:

powershell
wsl --update

More