Общий процент времени на отложенные вызовы процедур (DPC)

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

Отслеживает процент времени на отложенные вызовы процедур (DPC).

Knowledge Base article:

Сводка

Счетчик "% времени DPC" (Сведения о процессоре\% времени DPC\_Всего) для системы превысил пороговое значение. Производительность системы в целом может быть значительно снижена, что приведет к снижению производительности операционной системы и приложений.

"Процессор\% времени DPC" — это процент времени, в течение которого процессор был занят получением и обработкой отложенных вызовов процедур (DPC). DPC — это прерывания с более низким приоритетом, чем обычные прерывания. Если высокое значение процента времени DPC сохраняется постоянно, то узким местом может быть процессор либо существует проблема с приложением или оборудованием, которая существенно снижает общую производительность системы.

Причины

Высокое значение счетчика "% времени DPC" может быть вызвано одной или несколькими из следующих причин:

Решения

Для определения основной причины высокого уровня DPC, изучите следующие процессы.

Выясните часть процессорного времени, которое тратится на обслуживание прерываний и DPC. Для этого понаблюдайте за следующими счетчиками в режиме реального времени при помощи системного монитора.

Если при работе экземпляра процессора показатель "% загруженности процессора" стабильно превышает 85 %, а сам процессор тратит свыше 15 % времени на обслуживание прерываний и (или) DPC, то, возможно, процессор является узким местом для производительности системы. Это можно исправить, модернизировав процессор или добавив в компьютер дополнительные процессоры.

Если процессор при работе имеет постоянный показатель "% загруженности процессора" менее 85 % и тратит более 15 % этого времени на обслуживание прерываний и (или) DPC, проблема производительности может быть вызвана неисправностью, связанной с приложением или оборудованием.

Когда основной причиной является оборудование, администратор увидит, что "% времени DPC" возможно значительно вырос за короткий период времени. Это часто случается при установке нового оборудования или обновлении драйверов. Если администратор может определить, что это проблема с оборудованием или драйвером устройства, он может обратиться к поставщику за рекомендациями по устранению.

При администрировании многопроцессорных систем, которые распределяют прерывания асимметрично, зачастую можно улучшить распределение нагрузки процессора, добавив сетевые адаптеры с тем, чтобы каждому адаптеру соответствовал отдельный процессор. В общем случае добавлять адаптеры можно только когда требуется повысить пропускную способность системы. Сетевые адаптеры, как и другое дополнительное оборудование, имеют собственные накладные расходы. Однако если один из процессоров почти всегда активен (т. е. "Сведения о процессоре: % загруженности процессора" = 100) и более половины времени тратится на обслуживание DPC ("Сведения о процессоре: % времени DPC" > 50), добавление адаптера, скорее всего, приведет к повышению производительности, если доступная пропускная способность сети не используется полностью.

Когда основной причиной является приложение, вы увидите, что DPC вероятно блокируются приложением, которое создало запрос, который требует значительного количества времени для выполнения. В течение этого времени DPC блокируются и будут помещаться в очередь. Для определения приложения, являющегося основной причиной, необходимо запустить расширенные тесты производительности, трассировки и диагностики для выявления конкретного приложения, являющегося источником проблемы с производительностью.

Element properties:

TargetMicrosoft.Windows.Server.10.0.OperatingSystem
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Instance NameProcessor Information
Counter Name\% DPC Time
Frequency120
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
Alert Message
Слишком большое значение общего процента времени на отложенные вызовы процедур (DPC)
Было превышено пороговое значение счетчика производительности"Сведения о процессоре\\% времени DPC\_Всего".
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.OperatingSystem.TotalDPCTime" Accessibility="Public" Enabled="false" Target="ServervNext!Microsoft.Windows.Server.10.0.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.10.0.OperatingSystem.TotalDPCTime.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters/>
</AlertSettings>
<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 Information</ObjectName>
<InstanceName>_Total</InstanceName>
<Frequency>120</Frequency>
<Threshold>95</Threshold>
<Direction>greater</Direction>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>