Was ist DPC Watchdog?

2078
atiyar

OK, also ist DPC_WATCHDOG_VIOLATION ein allgemeiner Fehlercode nach einem BSOD. Ich würde gerne wissen -

  1. Was ist ein DPC-Watchdog? Ich meine, was ist damit gemeint?
  2. Was macht es im Windows-System? Und wie wird es verletzt?

Kann jemand helfen?

EDIT: Ich habe es sicher gegoogelt. Aber alles was ich finde ist "Was verursacht DPC_WATCHDOG_VIOLATION?" oder "So beheben Sie das DPC_WATCHDOG_VIOLATION-Problem".

Um meine Frage zu verdeutlichen, bin ich hauptsächlich daran interessiert zu wissen, was der "DPC-Watchdog" ist, und seine Funktionalität im System.

2
OPs sollen hier recherchieren, bevor sie hier Fragen stellen, viele Informationen finden Sie bereits im Internet. Bitte lassen Sie uns wissen, was Sie bereits geprüft haben und warum dies für Sie nicht in Ordnung ist. Máté Juhász vor 7 Jahren 0
@ MátéJuhász, bearbeitet :) atiyar vor 7 Jahren 0
Teilen Sie die DMP und ich kann Ihnen sagen, welcher Treiber es verursacht magicandre1981 vor 7 Jahren 0

1 Antwort auf die Frage

5
DavidPostill

Was ist der "DPC-Watchdog"?

Zusammenfassung :

Deferred Procedure Calls (DPCs) werden von einem DPC-Watchdog-Timer überwacht .

Wenn der DPC-Watchdog-Timer feststellt, dass ein DPC zu lange läuft, wird ein DPC_WATCHDOG_VIOLATIONFehler generiert .


Ausführliche Erklärung

Zunächst müssen Sie verstehen, was ein DPC ist. Eine vereinfachte Erklärung lautet:

Ein Deferred Procedure Call (DPC) ist ein Mechanismus des Microsoft Windows-Betriebssystems, der es Tasks mit hoher Priorität (z. B. einem Interrupt-Handler) ermöglicht, erforderliche Tasks mit niedrigerer Priorität für die spätere Ausführung zu verschieben.

Dies ermöglicht Gerätetreibern und anderen Verbrauchern von Ereignissen auf niedriger Ebene, den Teil ihrer Verarbeitung mit hoher Priorität schnell durchzuführen und eine nicht kritische zusätzliche Verarbeitung für die Ausführung mit einer niedrigeren Priorität einzuplanen.

Aufruf der verzögerten Prozedur der Quelle

Windows benötigt einen Mechanismus, mit dem festgestellt werden kann, wann bei diesen Aufrufen für verzögerte Prozeduren etwas schief geht (deren Ausführung dauert zu lange und beeinträchtigt daher die Reaktionsfähigkeit des Systems).

Dieser Mechanismus ist der DPC-Watchdog-Timer :

Das Betriebssystem implementiert einen DPC-Watchdog-Timer, um zu erkennen, wann eine einzelne DPC-Routine zu lange ausgeführt wird oder wenn eine Reihe von DPC-Routinen in der Warteschlange zu lange hintereinander läuft.

Wenn DPC-Zeitüberschreitungsfehler aktiviert sind und entweder eine DPC-Routine das Zeitlimit für eine einzelne Routine überschreitet oder eine Reihe von DPC-Routinen das Gesamtzeitlimit überschreitet, wird eine Fehlerprüfung mit DPC_WATCHDOG_VIOLATION (0x133) durchgeführt.

...

DPC-Routinen sollten nur für kurze Zeiträume ausgeführt werden und möglichst viel Verarbeitung an Worker-Threads delegieren. Um die Reaktionsfähigkeit des Systems nicht zu beeinträchtigen, sollte eine typische DPC-Routine bei jedem Aufruf nicht länger als 100 Mikrosekunden ausgeführt werden.

Quelle KeQueryDpcWatchdogInformation Routine


Fehlerprüfung 0x133 DPC_WATCHDOG_VIOLATION

Diese Fehlerprüfung zeigt an, dass der DPC-Watchdog ausgeführt wurde, entweder weil er einen einzelnen Aufruf mit verzögerter Prozedur (DPC) erkannt hat oder weil das System längere Zeit auf einer Interrupt-Anforderungsebene (IRQL) von DISPATCH_LEVEL oder höher verbracht hat. Der Wert von Parameter 1 gibt an, ob ein einzelner DPC eine Zeitüberschreitung überschritten hat oder ob das System eine längere Zeitspanne bei IRQL DISPATCH_LEVEL oder höher verbracht hat.

DPCs sollten nicht länger als 100 Mikrosekunden und ISRs sollten nicht länger als 25 Mikrosekunden dauern. Die tatsächlichen Timeout-Werte im System sind jedoch viel höher eingestellt.

Quelle Bug Check 0x133 DPC_WATCHDOG_VIOLATION

Ok, das hängt also mit der CPU-Thread-Planung zusammen, die ich aus Ihrer Antwort bekomme. Ich denke es ist mir jetzt klar geworden. Vielen Dank David :) atiyar vor 7 Jahren 0
Tat das einfach;) atiyar vor 7 Jahren 0
@NerotheZero Danke :) DavidPostill vor 7 Jahren 0
... mit einem Upvote: D atiyar vor 7 Jahren 0
@NerotheZero Nein, es hängt nicht mit der Thread-Zeitplanung zusammen, es sei denn, die DPCs sind mit dem _ interferieren. DPCs sind keine Threads, daher haben sie keine "Priorität". Wie Interrupt-Service-Routinen können sie unabhängig von der Priorität des aktuellen Threads in die CPU einsteigen. Deshalb, wenn sie zu viel Zeit in Anspruch nehmen, verschlechtern sie die Reaktionsfähigkeit des Systems. Sie werden auf einer niedrigeren "Interrupt Request Level" (IRQL) als Interrupt-Service-Routinen ausgeführt, sodass ISRs vor DPCs auf einer bestimmten CPU ausgeführt werden. (Der zitierte WP-Artikel DP ist irreführend, wenn er das Wort "Priorität" verwendet.) Jamie Hanrahan vor 7 Jahren 1