Powershell 的 get-counters cmdlet 中返回的“熟值”是啥?

Posted

技术标签:

【中文标题】Powershell 的 get-counters cmdlet 中返回的“熟值”是啥?【英文标题】:What is "cooked value" returning in Powershell's get-counters cmdlet?Powershell 的 get-counters cmdlet 中返回的“熟值”是什么? 【发布时间】:2013-04-25 19:57:24 【问题描述】:

我正在使用 Powershell 返回某些性能计数器的值,并且我看到它在呈现信息时指的是“Cookedvalues”。我正在寻找自己报告的每个计数器命中,因此我可以进行分析,例如查看第 90 个百分位值或最大值/最小值,因此我需要知道它是如何达到熟值的。这是我目前正在使用的代码:

$computer         = $ENV:Computername 
$instance         = "_total" 

@("\\$Computer\PhysicalDisk(*)\Current Disk Queue Length", 
  "\\$Computer\PhysicalDisk(*)\% Disk Time", 
  "\\$Computer\PhysicalDisk(*)\Avg. Disk Queue Length", 
  "\\$Computer\PhysicalDisk(*)\Avg. Disk Read Queue Length", 
  "\\$Computer\PhysicalDisk(*)\Avg. Disk Write Queue Length", 
  "\\$Computer\PhysicalDisk(*)\Avg. Disk sec/Transfer" 
  "\\$Computer\PhysicalDisk(*)\Avg. Disk sec/Read", 
  "\\$Computer\PhysicalDisk(*)\Avg. Disk sec/Write") |%  
    (Get-Counter $_.replace("*",$instance)).CounterSamples  | 
    Select-Object Path,CookedValue | 
    Format-Table -AutoSize 


#   Retrieve the current Processor performance counter information. 
$computer         = $ENV:Computername 
$instance         = "_total" 
@("\\$Computer\Processor(*)\% Processor Time", 
  "\\$Computer\Processor(*)\% User Time", 
  "\\$Computer\Processor(*)\% Privileged Time", 
  "\\$Computer\Processor(*)\Interrupts/sec", 
  "\\$Computer\Processor(*)\% DPC Time", 
  "\\$Computer\Processor(*)\DPCs Queued/sec" 
  "\\$Computer\Processor(*)\% Idle Time", 
  "\\$Computer\Processor(*)\% Interrupt Time") |%  
    (Get-Counter $_.replace("*",$instance)).CounterSamples  | 
    Select-Object Path,CookedValue | 
    Format-Table -AutoSize 

# Retreive the current Memory counter information 
$computer         = $ENV:Computername 
$instance         = "_total" 
@("\\$Computer\Memory\Page Faults/sec", 
  "\\$Computer\Memory\Available Bytes", 
  "\\$Computer\Memory\Committed Bytes", 
  "\\$Computer\Memory\Commit Limit", 
  "\\$Computer\Memory\Pages/sec", 
  "\\$Computer\Memory\Free System Page Table Entries" 
  "\\$Computer\Memory\Pool Paged Resident Bytes", 
  "\\$Computer\Memory\Available MBytes") |%  
    (Get-Counter $_.replace("*",$instance)).CounterSamples  | 
    Select-Object Path,CookedValue | 
    Format-Table -AutoSize 

【问题讨论】:

【参考方案1】:

根据https://blogs.technet.com/b/nexthop/archive/2011/06/02/gpsperfcounters.aspx,“CookedValue”是:

性能计数器通常具有原始值、第二个值和熟化值。原始值和第二值是性能计数器使用的原始成分,而“熟值”是将这些成分“烹饪”成供人类食用的东西的结果。

显然,CookedValue 是结合计数器的原始数据以获得您可以理解和使用的可用值的结果。

【讨论】:

这是有道理的。再次查看非压力系统上的值,它们似乎在它们所代表的计数器的上下文中是有意义的。我仍然希望我知道他们正在做什么数学来得出这个值,但这让我得到了我现在需要的东西。谢谢!

以上是关于Powershell 的 get-counters cmdlet 中返回的“熟值”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Powershell 的 get-counters cmdlet 中返回的“熟值”是啥?

加速PowerShell Get-Counter和Get-Process

Get-Counter 未检索到有效详细信息

在 Powershell 的表中格式化计数器数据

在 powershell 中处理异常

运行 powershell 命令以在 c# 上按进程获取 GPU 使用情况