拆分每个服务以在其自己的 SVCHOST.EXE 进程中运行,并且消耗 CPU 周期的服务将在任务管理器或进程资源管理器中轻松可见(“=”后的空格是必需的):
SC Config Servicename Type= own
在命令行窗口中执行此操作或将其放入 BAT 脚本中。需要管理权限,并且需要重新启动计算机才能生效。
可以通过以下方式恢复原始状态:
SC Config Servicename Type= share
示例:使 Windows Management Instrumentation 在单独的 SVCHOST.EXE 中运行:
SC Config winmgmt Type= own
这种技术没有不良影响,除了可能会稍微增加内存消耗。除了观察每个服务的 CPU 使用率之外,它还可以很容易地观察每个服务的页面错误增量、磁盘 I/O 读取率和磁盘 I/O 写入率。对于 Process Explorer,菜单 View/Select Columns:选项卡 Process Memory/Page Fault Delta,选项卡 Process Performance/IO Delta Write Bytes,选项卡 Process Performance/IO Delta Read Bytes。
rem 1. "Automatic Updates"
SC Config wuauserv Type= own
rem 2. "COM+ Event System"
SC Config EventSystem Type= own
rem 3. "Computer Browser"
SC Config Browser Type= own
rem 4. "Cryptographic Services"
SC Config CryptSvc Type= own
rem 5. "Distributed Link Tracking"
SC Config TrkWks Type= own
rem 6. "Help and Support"
SC Config helpsvc Type= own
rem 7. "Logical Disk Manager"
SC Config dmserver Type= own
rem 8. "Network Connections"
SC Config Netman Type= own
rem 9. "Network Location Awareness"
SC Config NLA Type= own
rem 10. "Remote Access Connection Manager"
SC Config RasMan Type= own
rem 11. "Secondary Logon"
SC Config seclogon Type= own
rem 12. "Server"
SC Config lanmanserver Type= own
rem 13. "Shell Hardware Detection"
SC Config ShellHWDetection Type= own
rem 14. "System Event Notification"
SC Config SENS Type= own
rem 15. "System Restore Service"
SC Config srservice Type= own
rem 16. "Task Scheduler"
SC Config Schedule Type= own
rem 17. "Telephony"
SC Config TapiSrv Type= own
rem 18. "Terminal Services"
SC Config TermService Type= own
rem 19. "Themes"
SC Config Themes Type= own
rem 20. "Windows Audio"
SC Config AudioSrv Type= own
rem 21. "Windows Firewall/Internet Connection Sharing (ICS)"
SC Config SharedAccess Type= own
rem 22. "Windows Management Instrumentation"
SC Config winmgmt Type= own
rem 23. "Wireless Configuration"
SC Config WZCSVC Type= own
rem 24. "Workstation"
SC Config lanmanworkstation Type= own
rem End.
有一种简单的方法可以获取您要求的信息(但它确实需要对您的系统稍作改动):
拆分每个服务以在其自己的 SVCHOST.EXE 进程中运行,并且消耗 CPU 周期的服务将在任务管理器或进程资源管理器中轻松可见(“=”后的空格是必需的):
在命令行窗口中执行此操作或将其放入 BAT 脚本中。需要管理权限,并且需要重新启动计算机才能生效。
可以通过以下方式恢复原始状态:
示例:使 Windows Management Instrumentation 在单独的 SVCHOST.EXE 中运行:
这种技术没有不良影响,除了可能会稍微增加内存消耗。除了观察每个服务的 CPU 使用率之外,它还可以很容易地观察每个服务的页面错误增量、磁盘 I/O 读取率和磁盘 I/O 写入率。对于 Process Explorer,菜单 View/Select Columns:选项卡 Process Memory/Page Fault Delta,选项卡 Process Performance/IO Delta Write Bytes,选项卡 Process Performance/IO Delta Read Bytes。
在大多数系统上,只有一个具有大量服务的 SVCHOST.EXE 进程。我使用了这个序列(可以直接粘贴到命令行窗口中):
您可以使用内置
tasklist
命令并按服务名称(/fi
开关)过滤,例如:输出:
如果您不知道名称,可以通过运行以下语句列出它们:
它列出了 svchost.exe 托管的所有服务,例如:
服务不一定由
svchost.exe
. 因此,如果您找不到按执行文件名过滤的服务,只需运行tasklist /svc
. 它将显示所有服务。进程资源管理器确实会向您显示 svchost 中的个人内存使用情况 确保您从这里获得最新版本https://docs.microsoft.com/sysinternals/downloads/process-explorer
确保以管理员身份运行 Process Explorer,单击要检查的 svchost,单击
View DLLs
按钮(或CTRL+D)。右键单击 DLLs 窗口中的标题Select Columns...
,然后选中WS Total Bytes
,然后点击OK
.现在您可以查看和排序 svchost 中各个服务(由 dll 实现)的内存使用情况。
虽然 Process Monitor 是一个通用实用程序(除了为您洗碗之外,它会做所有事情),对于这个特定的问题,您想使用 VMMap(另一个 SysInternals 实用程序)
https://docs.microsoft.com/sysinternals/downloads/vmmap
VMMap 是一个进程虚拟和物理内存分析实用程序。它显示了进程提交的虚拟内存类型的细分以及操作系统分配给这些类型的物理内存(工作集)的数量。除了内存使用的图形表示之外,VMMap 还显示摘要信息和详细的进程内存映射。强大的过滤和刷新功能使您可以识别进程内存使用的来源和应用程序功能的内存成本。
除了用于分析实时进程的灵活视图外,VMMap 还支持以多种形式导出数据,包括保留所有信息以便您可以重新加载的本机格式。它还包括启用脚本场景的命令行选项。
这进入了 stackoverflow 领域,但是如果您可以掌握每个线程的内存统计信息,则可以通过将它们与线程堆栈中列出的 dll 匹配来大致将其与单个服务 dll 相关联。不过,对于我小小的系统管理员大脑来说,太多了。
我在这里扩展了 Peter Mortensen 的回答。在修改服务类型之前,请通过以下命令检查现有类型:
这将输出以下内容:
不应修改“10 WIN32_OWN_PROCESS”、“20 WIN32_SHARE_PROCESS”以外的任何类型。
分离服务是正确的答案,但 sc config 命令对我不起作用(2008 R2)。
不过,您可以通过注册表执行此操作,这意味着将“类型”参数设置为 0x00000010(12 月 16 日):
请注意您选择修改的服务,除了“拥有”和“共享”之外,还有一些特殊类型不应更改,例如:
之后,只需重新启动服务,您应该会在 ProcessExplorer 中看到它现在拥有自己的 svchost.exe 进程。