如何通过 svchost.exe 诊断 CPU 使用率异常?

Vio*_*ffe 19 windows windows-7 services cpu-usage

我有一台配备 Win 7 32 位系统的笔记本电脑,由双核奔腾驱动(这是 2010 年的笔记本电脑)。有时它工作正常,但通常它在 100% CPU 负载时​​空闲。CPU 被两个 svchost.exe 进程占用(每个进程 50%)。据我了解,这是一个服务主机。有没有办法找出哪个服务是罪魁祸首?

注意:即使在安全模式下也会发生这种情况。

har*_*ymc 28

由于svchost.exe的一个实例承载了多个系统服务,这里就是如何将这些服务分开,每个到自己的svchost.exe实例,从而找出哪个服务占用了CPU。

程序如下:

  1. 使用任务管理器显示按CPU降序排列的所有进程并标记消耗CPU的进程的PID

  2. 在命令提示符 (cmd) 中输入命令
    Tasklist /svc /fi "IMAGENAME eq svchost.exe"
    在此处输入图片说明

  3. svchost.exe 有问题的实例现在可以通过它们的 PID 来定位,并且在右侧你会找到它们托管的系统服务列表

  4. 对于列表中的每个名称,在以管理员身份运行的命令提示符 (cmd) 中输入以下命令:(
    sc config <name> type= own
    注意 '=' 和 'own' 之间的空格)

  5. 重启

您分离的系统服务现在将在其自己的 svchost.exe 实例中运行,并且可以在“进程”选项卡的“任务管理器”中看到。您可以右键单击一个实例并选择“转到服务”以直接转到该服务,或者再次使用 tasklist 命令。

有关详细信息,请参阅 Microsoft 文章
SVCHOST.EXE 故障排除入门


Lan*_*ews 8

Process Explorer使这变得容易。我已经确认这适用于 64 位 Windows 7 Professional 和 64 位 Windows 10 Pro 上的 Process Explorer v16.20。

  1. 运行进程资源管理器提升。
  2. 在列中找到svchost.exe具有高(甚至只是可测量/非空白)值的过程CPU。按ProcessCPU列排序可能会对此有所帮助。
  3. 右键单击该svchost.exe进程并选择Properties...
  4. 在过程属性窗口中,选择Threads选项卡。将显示此进程中的所有线程。
  5. 在列中找到一个具有高(或者,再次,只是可测量/非空白)值的线程CPU。按CPU列排序可能会对此有所帮助。进程资源管理器进程线程选项卡
  6. Service列将显示运行该线程的服务的名称。

如果您不熟悉服务名称...

  1. 在过程属性窗口中,选择Services选项卡。将显示在此进程中运行的所有服务。
  2. ServiceServices选项卡上的Service列与Threads您在步骤 6 中找到的选项卡上的列的值相匹配。流程资源管理器流程服务选项卡
  3. Display Name列将显示服务的友好名称。所选服务的描述将出现在服务列表下方。


归档时间:

查看次数:

3270 次

最近记录:

8 年,5 月 前