Rundll32.exe 占用大量 CPU,然后屏幕保护程序处于活动状态

Rundll32.exe 占用大量 CPU,然后屏幕保护程序处于活动状态

我使用的是 Windows 8 Pro x64。我注意到该Rundll32.exe进程占用了大量 CPU(25%,即单核 100% 负载),然后我没有使用计算机,具体来说,屏幕保护程序处于活动状态。然后该进程终止立即地然后屏幕保护程序消失(然后我移动鼠标,或按下键盘上的某个键)。

我发现这个是因为我正在使用定制流程监控程序,这也允许我收集有关进程的信息(这是已停止的进程提供的最新信息):

Path              = C:\WINDOWS\system32\rundll32.exe
User Name         = NT AUTHORITY \ SYSTEM
PID/Parent PID    = 4576 / 800
Started by        = C:\WINDOWS\system32\services.exe
Virtual KB        Curr = 149 872 Peak = 299 416
Working Set KB    Curr = 54 732 Peak = 54 732
Page File KB      Curr = 46 720 Peak = 46 720
System Pool KB    Paged = 208 Nonpaged = 22
Private KB        = 46 720
Handles Count     = 385
Faults Count      = 293 958
Windows           = 0
Reads             = 4 255   Read KB = 56 263
Writes            = 1   Write KB = 0
Other IOs         = 677 511   Other KB = 8 614

从该信息可以看出,该进程正在执行大量读取操作,但没有写入操作。此外,它是由服务控制管理器启动的。在升级之前,我从未注意到我的 Windows 7 出现过此类行为,我想知道这是否是某种错误导致的,或者是某些合法的系统扫描任务?

我正在使用Blank screen屏幕保护程序,它不使用任何 CPU。我实际上已经验证了它scrnsave.scr也已终止,但不消耗 CPU。CPU 专门由Rundll32.exe它消耗,显然,这与屏幕保护程序 DOWN 事件有某种关联。

我还注意到它并不是在 ssaver 启动时就启动,而是在 ssaver 启动后一段时间才启动(或者在启动前可能还有其他一段时间不活动),但总是在 ssaver 停止后才停止。我发现它实际上在一段时间后终止,我估计最近的一次遭遇大约需要 2 分钟的工作时间(但我不确定它是否总是需要这么多时间)。

而且(正如我刚才发现的)它似乎在完成工作后不会重新启动。看起来实际上只是一些合法的系统操作正在进行,然后系统处于空闲状态。这是有道理的,因为它占用大量 CPU,因此不会减慢任何用户进程的速度(有点类似于它的ngen.exe工作方式)。

答案1

安装Windows 性能工具包,运行具有管理员权限的命令提示符并运行此命令并最小化窗口:

xperf -on latency -stackwalk profile -buffersize 1024 -MaxFile 256 -FileMode Circular && timeout -1 && xperf -d HighCPUUsage.etl

重现问题后,返回 CMD,按任意键停止记录。现在将其压缩HighCPUUsage.etl为 7z 并上传。

答案2

可能是 rundll32.exe 正在加载屏幕保护程序。

大多数屏幕保护程序都是无用的,它们很漂亮,但只会消耗 CPU、GPU,而如果只是暂停然后关闭屏幕,则会消耗更多。您可以设置屏幕保护程序,但只能在暂停屏幕前设置一分钟。暂停后,屏幕保护程序不应运行(我不知道 Windows 8 是否真的会在暂停屏幕时关闭屏幕保护程序,请测试一下)

答案3

我不太确定,但据我了解,这与 Dr.Web 防病毒软件的后台例程有关(可能是某种数据库更新或内部检查)。但我不能 100% 确定。

因为看起来不像是出现故障的时候,所以我不想花更多的时间去研究。

更新:我注意到我的基于 Windows 7 HB x64 的笔记本电脑上也有同样的行为,该笔记本电脑也安装了同样的 Dr.Web 防病毒软件,因此这似乎就是它——某种 Dr. Web 后台例程。

相关内容