Loading

让WSL开机启动,后台运行,以减少唤醒时间

上次分享了《WSL 2 上启用微软官方支持的 systemd》后,有博客园的读者评论说开启了SYSTEMD后,发现启动时间变慢了,询问有没有什么解决办法。

其实WSL启动时间变慢我也早有发觉,这个问题在我启用SYSTEMD前就已经存在。

WSL2会默认关闭不使用的实例,当你关闭了WSL的Console后,实例会自动关闭。在和Distrod的比较中,我提到过这样的产品设计的初衷,是为了减少计算机资源占用。

但是对于会频繁唤醒WSL的用户来说,确实会出现启动时间过长的情况。如果你的计算机资源比较充足,那么是可以在开机时通过VBS脚本启动一个 WSL 实例,让它挂起在那里不要休眠。

方法如下:

  1. WIN+R 运行 shell:startup 打开启动目录
  2. 在此目录中创建文件 wsl-startup.vbs
  3. 在 wsl-startup.vbs 中填充如下内容,Arch需替换为你使用的发行版名称。
set ws=wscript.CreateObject("wscript.shell")
ws.run "wsl -d Arch", 0

这样当你系统启动,登录系统后,Windows会开启 WSL 实例,它会永久等待输入,不会关闭。所以当你下次再使用WSL命令时,就不会遇到需要重新唤醒 WSL 的耗时。

如果你担心后台挂着WSL对系统资源占用过高,可以通过配置 .wslconfig 文件来限制 WSL 的资源占用。 WSL 会默认占用50%内存,最大8GB。使用所有CPU线程。我一般会限制到4GB,2线程。

配置方法如下:

notepad %USERPROFILE%\.wslconfig

[wsl2]
memory=4GB 
processors=2

Ref:
https://github.com/microsoft/WSL/issues/8854
https://askubuntu.com/a/1452424/911078
https://learn.microsoft.com/en-us/windows/wsl/wsl-config

posted @ 2023-03-09 23:54  wswind  阅读(7384)  评论(13编辑  收藏  举报