Esegue il monitoraggio della percentuale di tempo DPC.
% Tempo DPC (Informazioni sul processore\% Tempo DPC\_Totale) per il sistema ha superato la soglia. Le prestazioni generali del sistema rallentano in modo significativo, rallentando anche il funzionamento del sistema operativo e le prestazioni delle applicazioni.
% Tempo DPC è la percentuale di tempo impiegato dal processore per ricevere e gestire le chiamate di procedura differite (DPC). Le DPC rappresentano interrupt che vengono eseguiti a priorità più bassa rispetto agli interrupt standard. % tempo DPC alta indica un collo di bottiglia nel processore o un problema relativo a un'applicazione o all'hardware, in grado di ridurre in modo significativo le prestazioni globali del sistema.
È possibile che un valore elevato di % Tempo DPC sia causato da una o più delle seguenti situazioni:
Collo di bottiglia del processore
Problema relativo al software
Problema relativo all'hardware o ai driver di periferica
Per determinare la causa principale del valore elevato di DPC, attenersi alle procedure elencate di seguito.
Osservare la proporzione tra il tempo del processore impiegato a gestire gli interrupt e quello impiegato per le DPC. A tale scopo, controllare i seguenti contatori in tempo reale, utilizzando Monitor di sistema:
Informazioni sul processore\% Tempo processore
Informazioni sul processore\% Tempo di interrupt
Informazioni sul processore\% Tempo DPC
Se un'istanza di processore funziona continuamente con valori di % Tempo processore superiori all'85% e usa una percentuale superiore al 15% di quel tempo per gestire gli interrupt e/o le DPC, è possibile che il processore stia causando un collo di bottiglia nelle prestazioni. È possibile risolvere il collo di bottiglia aggiornando o installando processori aggiuntivi sul computer.
Se un processore funziona continuamente con valori di % Tempo processore inferiori all'85% e usa una percentuale superiore al 15% di quel tempo per gestire gli interrupt e/o le DPC, è possibile che la riduzione delle prestazioni sia dovuta a un problema relativo a un'applicazione o all'hardware.
Se la causa principale risiede in un dispositivo hardware, è possibile che l'amministratore rilevi un aumento significativo del valore di % Tempo DPC in un breve periodo di tempo. Questo accade spesso quando viene installato un nuovo hardware o sono stati aggiornati i driver. Se l'amministratore riesce a localizzare il problema in un driver hardware o di dispositivo, è possibile risolverlo consultando il fornitore.
Nei casi in cui si amministra un sistema multiprocessore che non distribuisce gli interrupt in modo simmetrico, è possibile migliorare la distribuzione del carico di lavoro del processore aggiungendo schede di rete, in modo da garantire una scheda di rete per ciascun processore. In genere, le schede vengono aggiunte solo quando è necessario migliorare la velocità effettiva del sistema. Le schede di rete, come qualsiasi hardware aggiuntivo, generano un carico di lavoro intrinseco. Tuttavia, se uno dei processori è quasi sempre attivo (ovvero se Informazioni sul processore: % Tempo processore è pari a 100) e più della metà del tempo è dedicato alla gestione delle DPC (ovvero se Informazioni sul processore: % Tempo DPC > 50), è probabile che l'aggiunta di una scheda di rete migliori le prestazioni del sistema, in quanto la larghezza della banda di rete disponibile non è ancora satura.
Se la causa principale risiede in un'applicazione, è possibile che le DPC vengano bloccate da una chiamata inviata da un'applicazione, la quale richiede un tempo considerevole per il completamento. Durante questo tempo le DPC sono bloccate e vengono accodate. Per determinare quale applicazione costituisce la causa principale, è necessario eseguire funzioni avanzate di analisi, prestazioni e diagnostica per identificare esattamente l'applicazione responsabile del problema di prestazioni.
Target | Microsoft.Windows.Server.10.0.OperatingSystem | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Instance Name | Processor Information | ||
Counter Name | \% DPC Time | ||
Frequency | 120 | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | System.Performance.ConsecutiveSamplesThreshold | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>