拿注册表对比了两台同配置机器,发现开机慢的罪魁祸首是显卡驱动自带的计划任务
上周帮同事排查一台开机奇慢的机器,i5-10400 + 16G + NVMe,跟另一台几乎同配置的机器比,开机时间差了将近 40 秒。同事说他已经把启动项全关了,还是慢。我一开始也怀疑是启动项的问题,但拿秒表掐了 10 次冷启动,两台机器差得特别稳定——不是偶发,是必现。
既然启动项不是问题,那就往上层查。我做了三件事:
第一步,看系统日志里的启动耗时。 在事件查看器里翻 Microsoft-Windows-Diagnostics-Performance/Operational,事件 ID 100 那条,能看到每个启动阶段的耗时。结果发现,那台慢的机器卡在“驱动初始化”阶段,比正常机器多了 30 多秒。
第二步,对比注册表里的启动项。 重点看 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 和 RunOnce,还有 HKLM\SYSTEM\CurrentControlSet\Services 下各服务的 Start 值。两台机器比对下来,服务启动类型基本一致,Run 键里也没啥异常。
第三步,翻计划任务。 在 taskschd.msc 里按“触发时间”排序,找“启动时”触发的任务。慢的那台机器上,NVIDIA 的 NvNodeLauncher 和 NvTmRep 两个任务都在启动时触发,而且我翻了一下这两个任务的历史记录,每次开机都跑了将近 30 秒。其中 NvTmRep 是 NVIDIA Telemetry,负责收集遥测数据,对普通用户来说完全没必要开机就跑。
处理办法: 我把这两个计划任务直接禁用,然后再次冷启动 10 次,开机时间从平均 52 秒降到 19 秒,基本追平了正常机器。
几个细节补充:
- 注册表里的
Run键是最容易被看到的,但计划任务和服务的Start值才是藏得深的。 - 计划任务里还有一个
\Microsoft\Windows\Application Experience\ProgramDataUpdater,这个有时候也会在启动阶段占资源,但优先级不高,我没动它。 - 禁用 NVIDIA 遥测任务后,显卡驱动功能完全正常,游戏和渲染都没问题。
结论: 启动慢别只盯着启动项,先看事件查看器里的启动耗时诊断,再按“启动时触发”筛计划任务,最后才动注册表。顺序反了容易白折腾。
对了,你们有没有遇到过类似情况——某个硬件厂商的驱动自带计划任务,悄摸摸在启动阶段跑一堆遥测?你们是直接禁掉还是留着?想听听大家的处理习惯。
