총 DPC 시간 비율

Microsoft.Windows.Client.2000.OperatingSystem.TotalDPCTime (UnitMonitor)

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

Knowledge Base article:

요약

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

DPC 시간 비율은 프로세서가 DPC(유예된 프로시저 호출)를 수신 및 처리하는 데 걸린 시간의 비율입니다. DPC는 표준 인터럽트보다 낮은 우선 순위에서 실행되는 인터럽트입니다. DPC 시간 비율 값이 계속해서 높게 나타나는 경우 프로세서가 병목 상태이거나 응용 프로그램 또는 하드웨어 관련 문제로 인해 전체 시스템 성능이 크게 저하된 것일 수 있습니다.

원인

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

해결 방법

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

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

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

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

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

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

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

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

Element properties:

TargetMicrosoft.Windows.Client.2000.OperatingSystem
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NameProcessor
Counter Name\% DPC Time
Frequency120
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.AverageThreshold
RemotableTrue
AccessibilityPublic
Alert Message
총 DPC 시간 비율 너무 높음
Processor\\% DPC Time\_Total 성능 카운터의 임계값이 초과되었습니다. 임계값을 초과하는 값: {0}.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Client.2000.OperatingSystem.TotalDPCTime" Accessibility="Public" Enabled="onEssentialMonitoring" Target="Microsoft.Windows.Client.2000.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.AverageThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Client.2000.OperatingSystem.TotalDPCTime.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% DPC Time</CounterName>
<ObjectName>Processor</ObjectName>
<InstanceName>_Total</InstanceName>
<Frequency>120</Frequency>
<Threshold>95</Threshold>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>