任务管理器中的CPU时间到底是什么?

14
我有一些托管在Windows服务中的WCF服务。昨天我查看了任务管理器,发现我的Windows服务进程的CPU时间超过了5小时,而其他大部分进程的CPU时间都为0。
这是什么意思?
我应该担心CPU时间超过5小时吗?
4个回答

19
CPU时间是一个指示进程自启动以来使用的处理时间的指标(Windows以相同方式定义,详见Windows 2000的这篇文章)。
基本上,它的计算方式是:

进程的CPU时间 = 进程的正常运行时间 * 进程的CPU利用率

例如,如果进程已经运行了5个小时,而CPU时间也是5个小时,那么这意味着该进程已经完全利用了CPU的资源,这可能是好事或坏事,取决于你是想保持资源消耗低还是想充分利用系统的全部性能。
如果进程使用了CPU资源的50%,并且运行了10个小时,那么CPU时间将是5个小时。

1
当我运行Prime95时,CPU时间会比Prime95运行的持续时间更长。我可以看到每秒钟,CPU时间增加约8秒。 - M.kazem Akhgary
@M.kazemAkhgary:是的,这个答案是在讨论100%的一个CPU核心。在2009年,多核CPU还比较新,不是每个人都有。多线程代码可以在每秒钟的挂钟时间内使用超过一个CPU秒,这就是多线程在计算密集型任务中的全部意义。(一个等效的概念是每天或每小时的人时(人小时?),当你有多个人在同一个项目上工作时。) - undefined

3
CPU时间反映了程序在CPU中执行指令和等待IO或其他资源的时间。您是否应该担心它超过5小时?
我猜不用,考虑以下几点:
1. 这个进程运行了多久? 2. 您是否遇到了进程性能或其他进程可能从中窃取CPU的问题? 3. 您有哪些其他进程?这些活动进程是否需要使用CPU?以80个进程为例,我大约有20个进程使用了超过1秒钟的CPU时间。
编辑
WCF服务可能会从其他服务中窃取CPU,您需要监视它们以确保其性能符合预期。您也可以根据总CPU使用情况来判断。例如,如果您只看到使用了25%的CPU,则其他服务不应受影响;但是,如果您运行在75%以上,那么它们可能会受到影响。
在监视方面,请确保随着时间的推移进行监视,这样可以看到性能趋势,并帮助您隔离问题。例如,您的服务正常运行,但在部署后它慢慢开始占用更多的CPU(假设每周增加10%)。除非您趋势您的CPU使用情况,否则您可能会在部署后数周后才发现您的服务运行缓慢。

该进程已运行了约3周。昨晚重新启动,CPU时间目前为31秒。我们没有注意到任何性能问题 - 使用这些WCF服务的网站非常快。我们在同一台IIS主机上托管了一些SOAP Web服务,因此有担心WCF进程可能会窃取CPU并影响其他Web服务的性能。 - undefined
3
您的进程已经运行了 504 小时(3 周 * 7 天/周 * 24 小时/天),而您在该进程上使用了 5 个小时的 CPU 时间。简单来说,平均情况下,您的进程整个时间在使用 CPU 的百分比为 1%。当然,在现实中,这并不是绝对的,有时您的服务几乎不使用 CPU,而其他时候则会使用更多。我认为这没什么好担心的,但如果您担心的话,可以使用“perfmon”跟踪您的进程CPU使用情况以确定是否存在问题。 - Grant Wagner

1
如果您担心进程使用了多少CPU时间,您应该使用perfmon来跟踪您的进程CPU使用情况,以便在一段较长的时间内确定是否存在问题。

.@GrantWagner - 你有没有任何关于如何使用sysfs计算打开和关闭核心所需时间的见解? - Chetan Arvind Patil

0

任务管理器中的CPU时间是什么?

答案很简单:

自进程启动以来使用的总处理器时间(以秒为单位)。


1
在几分钟内。不要被长时间运行的低CPU进程所困惑 - 我曾经认为CPU时间是小时:分钟,并且比我启动进程后的实际时间更长。糟糕。 - yoyo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接