Skip to content

[Notice]WSL VM 冷启动异常缓慢/WSL VM Cold Boot Extremely Slow #125

Description

@owu

Note: This report is posted in two comments for bilingual accessibility.

  • Comment 1 (this one): Simplified Chinese(简体中文)
  • Comment 2 (the reply below): English
    Please read the English version in the reply below if needed.

适用范围:wsldashboard 项目说明
更新日期:2026-08-21

一、危害(对 wsldashboard 的影响)

以下问题都集中在 Windows 刚开机后(WSL VM 尚未预热、处于冷启动阶段)触发;VM 一旦热起来,即恢复正常。

1. 打开软件看不到发行版列表

最直观的影响:Windows 刚开机时,打开软件,界面上的「发行版列表」看不到任何已安装的发行版

原因:wsldashboard 的发行版列表通过 wsl -l -v 枚举(info.rs 中 list_distros)。在 VM 冷启动缓慢期间,wsl -l -v 同样会进入「排队等待 VM 就绪」的状态(详见下文『概述』中的对照表),导致:

  • 界面长时间空白,看不到任何已安装的发行版;
  • 依赖该列表的后续操作(启动/停止、端口代理同步、USB 挂载、状态刷新)随之无法正常进行;
  • 用户可能误以为「发行版丢失」或「软件异常」,实际只是查询不到状态,并非数据丢失。

等 VM 冷启动完成后,重新刷新或重启软件通常即可恢复。

2. /scheduler 启动任务整体变慢(但最终会完成)

/scheduler 负责开机时的后台任务:发行版开机自动启动、USB 自动连接、端口转发激活。在 VM 冷启动缓慢期间,这些任务的每一步都需要等待 VM 就绪,导致:

  • 整体流程耗时从「秒级」拉长到「分钟级」(与本机实测约 4.5 分钟一致);
  • 表现上像「卡住不动」,但并非失败——只要 VM 最终就绪,这些任务一定会完成(发行版会被拉起、USB 会挂载、端口转发会落地)。

因此除非长时间(远超 VM 冷启动上限)仍未完成,否则无需干预,本质是在等 WSL 环境预热。

二、如何自查是否中招

核心思路:制造一次真正的冷启动,然后给「第一次拉起发行版」计时。

方法 A:重启 Windows 后立刻测试(推荐)

  1. 重启 Windows 11。
  2. 重启完成后,立即打开 PowerShell(管理员或普通均可)。
  3. 执行:
Measure-Command { wsl -d Ubuntu -u root echo ok }

Ubuntu 换成你实际的发行版名(可用 wsl -l -q 查看)。

方法 B:wsl --shutdown 后冷启动测试

无需重启系统,但效果等同冷启动:

wsl --shutdown
Measure-Command { wsl -d Ubuntu -u root echo ok }

结果判定

耗时 结论
< 30 秒(通常 5~10 秒) 正常,未中招
明显 > 60 秒,甚至数分钟 中招,命中冷启动缓慢问题

补充判据:执行上面的测试时,另一个终端wsl --version 若依然秒回,而 wsl -d ... 却迟迟不返回,即可进一步确认慢点在 VM 冷启动,而非 WSL 服务整体卡死。

三、概述

部分 Windows 版本 与部分 WSL 版本 的组合下,WSL 2 轻量级工具 VM(Utility VM)的冷启动会异常缓慢——正常情况下拉起一个 Linux 发行版只需 5~10 秒,但在受影响环境中可能耗时数分钟。

需要注意的是:这里的「慢」发生在 VM 本体的冷启动,而不是某个具体的 Linux 发行版启动快慢,也不是 WSL 服务(LxssManager)本身卡死。可据此与普通故障区分:

命令 是否需要 VM 受影响环境下表现
wsl --version / wsl --status 秒回,正常
wsl -l -v / wsl -l -q --running 在 VM 启动期间 阻塞数分钟
wsl -d <distro> ...(第一次拉起) 阻塞数分钟

四、受影响环境(已知报告 / 已复现)

Windows 版本 WSL 版本 内核版本 来源
Windows 11 25H2 10.0.26200.9168 2.7.12 6.18.33.2 本机已复现
Windows 11 25H2 10.0.26200.9168 2.6.3 本机已复现(说明 WSL 版本不是唯一变量)
Windows 11 25H2 10.0.26200.8973 2.7.11 6.18.33.2 microsoft/WSL#41253
Windows 11 25H2 10.0.26200.7623 2.7.0 6.6.114.1 microsoft/WSL#14072
Windows 11 25H2 10.0.26200.8457 2.7.3 microsoft/WSL#40616

共同点:Windows 11 25H2(build 26200) 是最主要的触发条件;多个 WSL 版本(2.6.3、2.7.x)上均有报告或复现。

五、现象描述

  1. 只在冷启动时发生:刚重启 Windows、或执行 wsl --shutdown 之后,第一次拉起任意发行版(VM 冷启动)才会慢。
  2. 热启动正常:VM 已经运行时,wsl 系列命令基本秒回。
  3. 表现为「卡住」而非「报错」:命令一直等不到返回,没有明显错误输出。
  4. 连带影响:VM 冷启动期间,任何需要访问 VM 状态的 wsl 命令(如另一个终端里的 wsl -l -vwsl -l -q --running)都会跟着阻塞,因为它们都在排队等待 VM 就绪。
  5. 典型耗时从正常的 5~10 秒 恶化到 数分钟,偶发或稳定复现。

六、相关链接

七、可能放大问题的因素(排查建议)

已确认 WSL 版本不是唯一变量,因此同时关注以下机器级配置(.wslconfig 位于 %USERPROFILE%\.wslconfig):

  • sparseVhd=false:关闭稀疏 VHD,虚拟磁盘固定分配、挂载更重,可能拖慢冷启动。
  • memory=8GB + swap=4GB 等较大内存预留:冷启动一次性预留大内存 + swap,宿主机内存吃紧时会触发分页,明显拉长启动时间。
  • dnsTunneling=true + autoProxy=true:网络栈初始化环节可能引入额外延迟。
  • 杀毒软件实时扫描 VHDX / VM 进程(部分环境出现过干扰)。

排查/绕开建议

  1. 先确认版本:wsl --version(若降级后仍显示旧版本号,需 wsl --update 或重启确认生效)。
  2. 临时备份并清空 %USERPROFILE%\.wslconfigwsl --shutdown 后重测冷启动,观察是否恢复。
  3. 若恢复,再逐条加回配置二分,锁定具体那一行(优先怀疑 sparseVhd)。
  4. 若仍慢,考虑 Hyper-V / 虚拟机平台冷启动、杀软排除 WSL 的 vhdx 与安装目录(C:\Program Files\WSL\)。

八、结论

冷启动缓慢是环境级问题,主要与 Windows 25H2(build 26200)相关,跨多个 WSL 版本复现;当前无法由应用层代码加速。对 wsldashboard 而言,能做的仅在调度链路中采用有界探测 + 并发轮询 + 超时降级,避免单次阻塞黑洞并保证业务最终正确落地,而不是去「加速」VM 本身。

该问题的根治需要由微软 WSL 开发团队修复底层 VM 冷启动逻辑;应用侧只能缓解与降级,无法从源头解决。建议在上文「相关链接」中的 GitHub issue 跟进官方进展。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions