CPU DPC 시간 비율

Microsoft.Windows.Server.2008.Processor.PercentDPCTime (UnitMonitor)

DPC 시간 비율을 모니터링합니다.

Knowledge Base article:

요약

프로세서의 PDC 시간 비율(프로세서\DPC 시간 비율)이 임계값을 초과했습니다. 전체 시스템 성능이 크게 저하될 수 있으며 이로 인해 운영 체제 및 응용 프로그램의 성능이 저하될 수 있습니다.

DPC 시간 비율은 프로세서가 DPC(유예된 프로시저 호출)를 수신 및 처리하는 데 걸린 시간의 비율입니다. DPC는 표준 인터럽트보다 낮은 우선 순위에서 실행되는 인터럽트입니다. 높은 % DPC Time이 지속되면 전반적인 시스템 성능을 상당히 떨어뜨리는 프로세서 병목이나 응용 프로그램 또는 하드웨어 관련 문제가 발생한 것일 수 있습니다.

원인

DPC 시간 비율 값이 높은 경우 다음 중 하나 이상이 원인일 수 있습니다.

해결 방법

프로세서 관련 성능 카운터의 최근 기록을 보려면 다음 보기를 사용하면 됩니다.

프로세서 성능 보기 시작

DPC가 높은 근본 원인을 확인하려면 아래에서 설명하는 프로세스를 수행하십시오.

인터럽트와 DPC를 처리하는 데 사용한 프로세서 시간 비율을 관찰하십시오. 이렇게 하려면 시스템 모니터를 사용하여 다음 카운터를 실시간으로 모니터링하십시오.

각 프로세서 인스턴스에 대해 % Interrupt Time 및 % DPC Time 카운터의 값을 프로세서\프로세서 시간 비율과 비교하세요.

프로세서 인스턴스가 지속적으로 85%를 초과하는 % Processor Time을 실행 중이고 인터럽트 및/또는 DPC를 처리하는 시간의 15%를 초과하여 사용하는 경우 프로세서가 성능 병목 상태의 원인일 수 있습니다. 이 병목 상태는 컴퓨터에서 프로세서를 업그레이드하거나 추가하여 해결할 수 있습니다.

프로세서가 지속적으로 85% 미만의 % Processor Time을 실행 중이고 인터럽트 및/또는 DPC를 처리하는 시간의 15%를 초과하여 사용하는 경우 성능 문제는 응용 프로그램 또는 하드웨어 관련 문제로 인해 발생할 수 있습니다.

하드웨어 장치가 근본 원인인 경우 관리자는 DPC 시간 비율이 잠시 동안 크게 증가한 것을 확인할 수 있습니다. 이 문제는 새 하드웨어를 설치했거나 드라이버를 업그레이드했을 때 주로 발생합니다. 관리자가 이 문제를 하드웨어/장치 드라이버 문제와 구분하여 파악할 수 있는 경우 공급업체의 도움을 받아 해결할 수 있습니다.

인터럽트를 대칭적으로 분산하지 않는 다중 프로세서 시스템을 관리하는 경우 모든 프로세서마다 어댑터를 하나씩 사용하도록 네트워크 어댑터를 추가하여 보통 프로세서 작업 부하 분산을 개선할 수 있습니다. 일반적으로 시스템 처리량을 개선해야 할 때만 어댑터를 추가하십시오. 다른 추가 하드웨어와 마찬가지로 네트워크 어댑터에는 내부 오버헤드가 있습니다. 그러나 프로세서 중 하나가 거의 항상 활성 상태이고(즉, Processor: % Processor Time = 100인 경우) 해당 시간의 절반 이상을 DPC를 처리하는 데 사용하는 경우(Processor: % DPC Time이 50을 초과하는경우), 사용 가능한 네트워크 대역폭이 아직 포화되지 않았다면 어댑터를 추가하여 시스템 성능을 개선할 수 있습니다.

응용 프로그램이 근본 원인인 경우 완료하는 데 많은 시간이 걸리는 호출을 실행한 응용 프로그램에 의해 DPC가 차단되는 것일 수 있습니다. 이 시간 동안 DPC는 차단되며 대기 상태가 됩니다. 어느 응용 프로그램이 근본 원인인지 확인하려면 고급 성능, 추적 및 진단을 실행하여 성능 문제를 일으키는 응용 프로그램을 정확히 파악해야 합니다.

Element properties:

TargetMicrosoft.Windows.Server.2008.Processor
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Instance NameProcessor
Counter Name\% DPC Time
Frequency120
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.2008.Processor.PercentDPCTime" Accessibility="Public" Enabled="false" Target="Server2008!Microsoft.Windows.Server.2008.Processor" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="ConditionTrue" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% DPC Time</CounterName>
<ObjectName>Processor</ObjectName>
<InstanceName>$Target/Property[Type="WindowsServer!Microsoft.Windows.Server.Processor"]/PerfmonInstance$</InstanceName>
<Frequency>120</Frequency>
<Threshold>15</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>