.net 性能计数器 - 进程(w3wp)\% 处理器时间
Posted
技术标签:
【中文标题】.net 性能计数器 - 进程(w3wp)\\% 处理器时间【英文标题】:.net performance counter - Process(w3wp)\% Processor Time.net 性能计数器 - 进程(w3wp)\% 处理器时间 【发布时间】:2010-09-14 20:47:38 【问题描述】:在性能测试中,我发现Process(w3wp)\% Processor Time
的值大于100。有些值是
237.1436486
312.5338052
341.2373994
264.4097661
191.6237736
我认为这个值代表 w3wp 进程的 CPU 使用率。我不明白为什么值大于 100%。
【问题讨论】:
【参考方案1】:如果您有多个核心,它可以超过 100,这是 每个 处理器(核心或虚拟核心)的处理器使用量的总和,因此超过 100 是正常的(100*numberOfCores
是 nax )。
如果您想要总体 CPU 百分比,请使用 Process(w3wp_Total)
版本的计数器,上限为 100。
【讨论】:
嘿,谢谢。有道理,我去找你说的柜台 有这样的计数器吗?除了“Process(w3wp)”之外,我唯一知道的是“Process(_Total)”,这当然是所有进程的总和。就个人而言,我只是在遇到这个问题时做了一个 ("Process(w3wp)\% Processor Time" / Environment.ProcessorCount)。 我没有找到计数器 Process(w3wp_Total) 但我考虑做同样的事情 ("Process(w3wp)\% Processor Time" / Environment.ProcessorCount) 谢谢! 那么如何获取核心数呢?例如,在我的机器上,Environment.ProcessorCount 读数为 2,但性能计数器返回的 CPU 使用率高达 800%。【参考方案2】:正如 Nick Craver 已经说过的,它是所有处理器(逻辑或物理)的总和。要获得介于 0% 和 100% 之间的值,只需将其除以处理器数量即可(例如 Environment.ProcessorCount
,假设您想在 .NET 代码中执行此操作)。
【讨论】:
以上是关于.net 性能计数器 - 进程(w3wp)\% 处理器时间的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 应用程序中的 Thread.Abort 导致 w3wp.exe 崩溃