CPU 使用率百分比总计

Microsoft.Windows.Server.10.0.OperatingSystem.TotalCPUUtilization (UnitMonitor)

通过使 Processor Information\\% Processor Time\_Total 和 System\Processor Queue Length 性能计数器关联监视此服务器的总 CPU 使用率。

Knowledge Base article:

摘要

系统处理器的 CPU Utilization(Processor Information\% Processor Time\_Total 和 System Queue Length)超出了阈值。一旦超出了阈值,总体系统性能将显著降低,并导致操作系统和应用程序性能较差。

配置

Total CPU Utilization 监视例程是一个可配置度高的解决方案,它使操作员能够设置 System\Processor Queue 和 Processor\% Processor Time\_Total 性能计数器的阈值。当两个计数器的值超出已定义的几个连续采样的阈值时,监视器的状态就会更改。更改状态之前,到达阈值后必须采样的连续采样的数目也是可配置的。

Total CPU Utilization 监视例程的默认阈值有:

参数

默认值

CPU 队列长度阈值

15

CPU 百分比阈值

95

样本数

3

请注意,可使用“替代”来更改上面定义的任何阈值。

原因

由于以下任一情况,导致计算机连续承受繁重的负荷:

解决方法

要查看与处理器相关的性能计数器,可使用以下视图:

启动处理器性能视图

若要解决此问题,管理员可以执行下列任务:

1. 为在服务器上运行的每个进程评估 % Processor Utilization 计数器。可以通过使用任务管理器或“性能监视”管理单元执行此操作。确定哪个(些)进程消耗最多的资源,并在一段时间内监视这些进程以确定它们是否可能返回到正常的性能范围。如果不能,则应该执行附加的应用程序特定诊断,以确定解决此问题的最佳方式。

2. 如果确定客户端负荷随着时间的变化而增加,计算机的确不再满足要求,则执行其他性能监视过程,以确定基本硬件升级是否可以使计算机返回到最佳的性能范围。

3. 如果已确定应用程序进入不正常状态,则可能由于产品缺陷,或许需要重新启动该应用程序。如果问题仍然存在,你可能需要联系应用程序供应商。

Element properties:

TargetMicrosoft.Windows.Server.10.0.OperatingSystem
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.Server.10.0.CPUUtilization.Monitortype
RemotableTrue
AccessibilityPublic
Alert Message
CPU 使用率百分比总计太高
超过了 Processor Information\\% Processor Time\_Total 性能计数器的阈值。超出阈值的值为: {0}\% CPU 和 {1} 的处理器队列长度。
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.OperatingSystem.TotalCPUUtilization" Accessibility="Public" Enabled="true" Target="ServervNext!Microsoft.Windows.Server.10.0.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.Windows.Server.10.0.CPUUtilization.Monitortype" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.10.0.OperatingSystem.TotalCPUUtilization.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='PctUsage']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='QueueLength']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="CPUUtilizationHigh" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="CPUUtilizationNormal" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<TargetComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</TargetComputerName>
<CPUPercentageThreshold>95</CPUPercentageThreshold>
<CPUQueueLengthThreshold>15</CPUQueueLengthThreshold>
<NumSamples>3</NumSamples>
<CounterName>% Processor Time</CounterName>
<ObjectName>Processor Information</ObjectName>
<InstanceName>_Total</InstanceName>
<AllInstances>false</AllInstances>
</Configuration>
</UnitMonitor>