Werden DPC-Latenzprobleme bei mehreren Kernen verbessert?

1426
endolith

DPC-Latenzprüfer sagt

Ein Gerätetreiber kann Daten in seiner Interrupt-Routine nicht sofort verarbeiten. Es muss ein verzögerter Prozeduraufruf (DPC) geplant werden, bei dem es sich im Wesentlichen um eine Rückrufroutine handelt, die vom Betriebssystem so schnell wie möglich aufgerufen wird. ... Im System steht pro CPU eine DPC-Warteschlange zur Verfügung. ... Wenn ein DPC übermäßig lange läuft, werden andere DPCs um diesen Zeitraum verzögert. ... Leider entsprechen viele vorhandene Gerätetreiber diesen Empfehlungen nicht. Solche Treiber verbringen übermäßig viel Zeit in ihren DPC-Routinen, was zu einer außergewöhnlich großen Latenzzeit für die DPCs anderer Treiber führt. Für einen Gerätetreiber, der Datenströme in Echtzeit verarbeitet, ist es entscheidend, dass ein von seiner Interrupt-Routine aus geplanter DPC ausgeführt wird, bevor die Hardware den nächsten Interrupt ausgibt. Wenn der DPC verzögert ist und läuft, nachdem der nächste Interrupt aufgetreten ist, tritt normalerweise ein Hardware-Pufferüberlauf auf und der Datenfluss wird unterbrochen. Ein Abbruch erfolgt.

Antwort des Stapelüberlaufs sagt:

Ein DPC wird in die globale DPC-Warteschlange eingereiht und kann auf jedem Prozessor ausgeführt werden. Wenn Sie also wirklich einen langen (laufenden DPC) auf einem Kern haben, kann der andere Kern einen anderen verarbeiten. Daher hängt jede Timing-Information von der Anzahl Ihrer Prozessoren und davon ab, wie viele Dinge gleichzeitig ausgeführt werden. Bei Multicore-Prozessoren können diese Zahlen daher stark variieren.

Im Allgemeinen habe ich gelesen, dass ein schneller Dual-Core besser als ein langsamer Quad-Core für Audio ist, da die meisten Audio-Apps nicht für die Verwendung von mehr als einem Core optimiert sind.

In modernen Computern klingt es jedoch nach DPC-Problemen, die einen Engpass bei der Audioproduktion darstellen. Heißt das, ein Quad-Core-Prozessor wäre besser als ein Dual-Core? Andere freie Kerne könnten theoretisch mit den Audio-DPCs umgehen, während einer von einer unhöflichen Wi-Fi-DPC-Routine gesperrt ist. Wird die Warteschlange von Cores gemeinsam genutzt, und DPCs können auf die freie Ebene umgestellt werden? Oder gibt es eine Warteschlange pro Kern, die die Entführung eines Kerns ermöglicht? Was ist mit virtuellen Kernen?

1
Wenn Sie beide Systeme hätten, könnten Sie dieses Tool verwenden, um Daten aus der realen Welt zu vergleichen und abzurufen ... http://www.thesycon.de/de/latency_check.shtml Moab vor 13 Jahren 0

1 Antwort auf die Frage

0
Ian Boyd

Die Latenz in einem verzögerten Prozeduraufruf (DPC) wird durch einen Treiber verursacht, der viel Zeit benötigt, um seine Aufgabe auszuführen.

Das Hinzufügen weiterer CPUs verbessert nicht die Zeit, die ein schlecht geschriebener Treiber für die Verarbeitung benötigt.

Können Sie Ihre Meinung mit Fakten belegen? Für jede CPU gibt es eine separate DPC-Warteschlange. endolith vor 12 Jahren 0
ich kann nicht. Kernelmoduscode kann nicht mit mehreren Threads versehen werden. Die DPC-Latenz tritt nur dann ein Problem auf, wenn sich ein schlecht geschriebener Treiber schlecht benimmt. Wenn Sie mehr Kerne darauf werfen, wird es nicht schlapp werden. Ian Boyd vor 12 Jahren 0
Die Frage war nicht "werden mehr CPUs einen schlechten DPC schneller laufen lassen?" Die Frage lautet: "Werden mehr CPUs meinen Audiotreiber ausführen, wenn im System auch ein fehlerhafter Treiber installiert ist?" Colin Jensen vor 10 Jahren 0
Dann ist seine einzige Möglichkeit, die schnellere Maschine zu kaufen [und für sich selbst zu beobachten, dass die Dinge nicht besser sind] (http://superuser.com/a/247713/8169) Ian Boyd vor 10 Jahren 0