Windows10资源管理器长时间CPU占用过高问题的调试解决过程——从入门到精通

Windows10 explorer资源管理器长时间CPU占用过高问题的调试解决过程

  • 1.系统基本信息
  • 2.explorer高占有率现象分析
  • 3.解决方法 ?
  • 4. 附加:CPU状态
  • 5.第一次复发
  • 6.第二次复发
  • 7.真·解决办法
  • 用了1个多月,并没有复发,问题服务定位到了Network List Service。写个cmd脚本手动运行开启关闭服务即可(即需要设置网络的时候打开,不需要设置网络的时候关闭)。
  • 1.系统基本信息

    版本:windows10专业版
    版本号:21H2
    操作系统内部版本:19044.1586

    2.explorer高占有率现象分析

    使用微软提供的工具:ProcessExplorer 查看explorer进程的栈、使用率信息(使用方法请自行百度)。
    问题测试方法:
    1).为了便于观察,使用快捷键windows + E 快速 打开10个资源管理器。
    2).打开ProcessExplorer 查看explorer进程的栈、使用率信息。结果有如下特征:
    explorer栈信息:高占有率会集中在TpReleasCleanupGroupMenber+0x450上面,而且还是周期性出现。explorer栈信息
    使用率信息:断开网络,explorer表现正常,连接网络则CPU和IO使用率非常高。

    通过以上方法观察到explorer的高占有率似乎和网络有关系,但本人尝试了关闭OneDriver,windows自动更新的P2P分享设置,禁用cotana,等等网上说的一系列方法,都无法解决。

    3.解决方法 ?

    还是windows search的问题。但根据其他人的说法,注册表项:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search中的SetupCompletedSuccessfully要改为1即可解决问题,但本人情况下,此项值一直为1,后尝试将值修改为0后,重启explorer。很出乎意料的,问题得到了解决。(太恶心了)
    电脑重启后SetupCompletedSuccessfully又会重新被自动置1,但此时explorer已经工作正常了。

    !!!经过时间证明,这只是偶然,注册表修改无效。

    4. 附加:CPU状态

    1). 高占有率下,10个explorer的CPU表现情况:

    2). 问题解决后正常的,10个explorer的CPU表现情况:

    5.第一次复发

    正常运行第三天后,手贱又开了几个服务,导致explorer cpu高占用问题复发。此时修改SetupCompletedSuccessfully=0并无卵用。但同时修改了:

    SystemIndexNormalization = 0
    UseLowPriorityConfiguration = 0

    后,问题又神奇般的得到了解决。没卵用哈。

    以下内容新建一个文本文件,复制即可,然后重命名为XXX.reg执行即可快速修改注册表。

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TimeBrokerSvc]
    "start"=dword:00000003
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\OneDrive]
    "DisableFileSyncNGSC"=dword:00000001
    
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search]
    "SetupCompletedSuccessfully"=dword:00000000
    "SystemIndexNormalization"=dword:00000000
    "UseLowPriorityConfiguration"=dword:00000000
    

    前置设置如下(尝试了很多方法后的状态,不一定需要完全一致,完全一致也不一定能解决问题,参考即可。奇葩的win10BUG,讨厌死了!):

    1).windows search服务是禁用状态。

    2).Problem Reports Control Panel Support服务 是开启状态,其实应该影响不大,必要时可以关掉。

    3).Diagnostic Policy Service、Diagnostic Service Host、Diagnostic System Host服务为禁用状态。

    4).Time Broker服务为开启状态,这个关掉会导致Task Scheduler服务无法开启,影响一些软件使用。

    5).组策略内关闭cortana,【允许使用cortana】【允许在锁屏界面上方使用cortana】【允许搜索和cortana使用位置】三个选项禁用即可。

    6).组策略中也禁用了OneDrive的一些选项。

    6.第二次复发

    本人因为无意中使用了explorer的搜索功能,如下图:

    然后直接触发了explorer高占用的bug。
    通过观察磁盘的读写情况,只有读,而且每次只读几百字节,没有写入,这有点像是在全盘搜索遍历文件名的过程。
    问题复发后,各种修改注册表,禁用服务都无效。有效的只有断网和ProcessExplorer中,suspend一个叫【shcore.dll!Ordinal】的线程(有很多,但只有一个会影响到cpu占用,某些挂起后可能会导致桌面异常,无法刷新、桌面图标无响应等等):

    最后【CPU高占用问题】还是在系统运行了1个多小时后,莫名其妙的自行消失了(估计是遍历整个盘完了)。

    所以windows search能不用就不用。开始菜单的搜索不会导致高占用。

    !!!时间证明,这也不是问题的根本原因。

    7.真·解决办法

    经过时间验证,以上方法并不能彻底解决CPU高占用问题,一般重启explorer还是会复发。
    某天,偶然间发现我的设备管理器页面在疯狂的自动刷新(间隔2-3s),断网后停止刷新,接通网络继续刷新,我就纳闷了这什么鬼!拔掉所有外设依旧在自动刷新。

    后来,在某管上(Device Manager Keeps Refreshing Problem | Windows 10 Fix)得到启发.
    首先禁用Problem Reports Control Panel Support服务。

    一些可以先执行的选项:

    #管理员模式打开CMD输入
    sfc /scannow
    DISM /Online /Cleanup-Image /CheckHealth   #有问题则/CheckHealth 变 /RestoreHealth 修复。
    #以上有问题先修问题
    

    然后(用微软官方最喜欢的回应方式调试 —–>干净启动):

    1).CMD控制台输入msconfig,打开系统配置,点击服务,然后选择全部禁用(注意PIN码也会失效,请确认设置了密码或者其他登陆方式,或者找到PIN码的服务不禁用)。电脑重启。看资源管理器CPU高占用现象和设备管理器的疯狂刷新有没有继续存在。如果没有,那说明肯定有1个或者多个服务导致了CPU高占用的问题。如果有,哦豁,那完蛋。
    2).再次打开CMD输入msconfig,打开系统配置,点击服务,然后点击制造商,按照制造商排序。然后批量启用Microsoft Corporation的服务,然后重启,直至CPU高占用问题出现。这时我的设备管理器界面也是在疯狂刷新。

    3).继续打开CMD输入msconfig,打开系统配置,点击服务,然后点击制造商,按照制造商排序。然后选择性关闭Microsoft Corporation的服务,然后重启,直至CPU高占用问题消失。这时基本上可以定位到问题服务的范围。
    4).将问题服务禁用,然后启用其他所有服务,重启,若CPU高占用问题没有出现则问题基本解决。若出现,则重复以上步骤继续寻找问题服务。

    最终会找到1个或者多个有影响的服务。本人经过调试找到了以下3个服务,关闭后CPU高占用问题彻底消失了,目前已经平稳运行了4天了




    至此,本人电脑的资源管理器cpu高占用问题似乎得到了解决,同时,常用的系统功能也没有太大影响。

    附上前置设置:
    1).windows search服务是开启状态。可以正常搜索,不会触发资源管理器高占用。调试时可以先禁用。

    2).Problem Reports Control Panel Support 服务是关闭状态。

    3).Diagnostic Policy Service、Diagnostic Service Host、Diagnostic System Host服务为禁用状态。

    4).Time Broker服务为开启状态,这个关掉会导致Task Scheduler服务无法开启,影响一些软件使用。

    5).组策略内关闭cortana,【允许使用cortana】【允许在锁屏界面上方使用cortana】【允许搜索和cortana使用位置】三个选项禁用即可。

    6).组策略中也禁用了OneDrive的一些选项。

    用了1个多月,并没有复发,问题服务定位到了Network List Service。写个cmd脚本手动运行开启关闭服务即可(即需要设置网络的时候打开,不需要设置网络的时候关闭)。

    物联沃分享整理
    物联沃-IOTWORD物联网 » Windows10资源管理器长时间CPU占用过高问题的调试解决过程——从入门到精通

    发表评论