为什么我看不到Windows上服务的内存/ CPU使用情况?

时间:2013-02-14 15:27:39

标签: windows service internals

在Windows上,您可以看到拉出任务管理器或PowerShell中的Get-Process以获取正在运行的进程及其内存和CPU使用情况的列表。

您也可以(在Windows 8或PowerShell中的Get-Service)查看所有正在运行的服务。然而,对于服务,你没有得到任何这些数字。

从我的开发人员的角度来看,这似乎有点奇怪。当然,服务需要更多的部署工作,并且编码和调试很尴尬,但除此之外它只是一个与其他程序相同的程序。

我确信服务没有这些数字是有充分理由的,这可能与Windows如何运行服务有关。那是什么原因?

2 个答案:

答案 0 :(得分:2)

有一个服务主机进程“svchost.exe”可以启动/处理多个服务。由于资源消耗通常由进程级别的操作系统测量,因此由同一主机进程启动的服务将全部显示为该进程的使用情况。

如果您查看控制面板的“服务”区域并查找启动服务的程序,您会发现大多数Windows服务都使用带有不同参数的“svchost.exe”来启动它。 / p>

任务管理器显示svchost.exe的多个实例,因此可以将特定服务隔离到一个svchost.exe实例,但是您需要知道哪个实例仅提供服务利益。您可以使用PowerShell通过svchost.exe启动服务,但挂起进程ID,然后在任务管理器中添加进程ID列,以便您可以看到内存/ CPU使用情况。

答案 1 :(得分:2)

虽然我还没有找到查看任何一项服务的内存使用情况的方法,但您可以在命令行中使用tasklist /svc查看每个svchost实例中正在运行的服务,以及查看进程ID的每个svchost的内存使用情况。