【问题标题】:.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%。

【问题讨论】:

    标签: .net performancecounter


    【解决方案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 代码中执行此操作)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 2016-01-01
      相关资源
      最近更新 更多