Die Standard Einstellung ist bei Latencymon ist die Interrupt Latenz .
[..]
Aber nur in höheren Versionen von LatencyMon, weil sich in Windows 8 was geändert hat. Da kann man bescheuerterweise die Kernel Latenz auf einmal nicht mehr messen.
Das bedeutet nicht, dass die Kernel timer Latenz auf einmal nicht mehr so relevant wäre.
Und nochmal als Empfehlung. Wer sich dem Thema annähern möchte, sollte sich wirklich mal die Muße nehmen und wenn es sein muss das ganze 20 mal durchlesen auch unter zur Hilfenahme von LEO dictionary.
- Siehe unten copy paste (1) "About DPCs and ISRs -
http://www.resplendence.com/latencymon
Ich versuche mich nun mal mit einer möglichst einfachen Übersetzung / Erklärung.
Die Prozesse in einem System werden von einem Task Scheduler verwaltet. Es gibt Prozesse unterschiedlicher Priorität. Den Prozessen mit höherer Priorität räumt der Prozesscheduler mehr CPU Zeit ein. Es gibt besonders priviligierte Prozesse die durch einen Hardware Interrupt so schnell wie möglich auf einer CPU initiiert werden, die halten sofort alles an, was vorher auf der CPU lief, egal wie hoch deren Prozeßpriorität war.
Das sind die sogenannten Interrupt Service Routinen (ISR). Ein wichtiges Ereignis ist zum Beispiel Daten von einem i/o Port eines Gerätes abholen ehe der Puffer dort überläuft und Daten verloren gehen. Diese ISRs können selber noch weitere Prozesse aufstarten, die sogenannten Deferred Prozedure Calls, die mit hoher Wahrscheinlichkeit auf der gleichen CPU ausgeführt werden.
Für eine Audio Applikation, die auf einer CPU oder einem CPU Kern läuft bedeutet dies, dass sie so lange nicht weiter ausgeführt werden kann, bis sowohl ISR als auch DPC komplett abgearbeitet worden sind.
Der Prozess Scheduler kann da nichts dran machen, weil sowohl ISR als auch DPC einen höheren Interrupt Request Level (IRQL) haben. Diese Low Level Routinen sind in einem System halt so wichtig, dass man ihnen eine sehr hohe Priorität einräumt, dass sogar ein Audio Prozess erst einmal warten muss.
Und das ist auch gut so, denn Daten müssen garantiert und schnell genug von und zu ihren i/o ports befördert werden, sonst gibts noch viel grössere Probleme, als dass Audio ins Wanken kommt.
Darum ist es sehr wichtig, dass Interrupt Service Routinen (ISR) und Deferred Procedure Calls (DPCs) möglichst schnell abgearbeitet werden, damit das Gesamtsystem immer noch responsiv bleibt (und auch Audio Streaming nicht ins Stocken kommt - auch bei kleineren ASIO Buffern - )
Die ISR und DPC sollten immer so schnell wie möglich abgearbeitet werden können und allerhöchstens bis zu rund 100µs dauern. Aber je weniger desto besser !
Wenn die Laufzeit solch wichtiger Prozesse tendenziell zu lange dauert, dann können Audio Programm einfach nicht mehr schnell genug den Datentransfer zum Audiodevice (read/write) hinbekommen.
Darum ist es sehr interessant zu wissen, wie gering der Wert für die Kernel timer Latenz ist.
Damit sollten diese Werte von LatencyMon klarer sein:
kernel timer latency ... current
kernel timer latency ... highest
Highest ISR routine execution
Highest DPC routine execution time
Im BIOS kann man bestimmte Einstellungen machen, dass gewisse Dinge per se weniger ausgebremst werden. Am besten man geht von den "Optimized Defaults" des Herstellers aus.
- C-States deaktivieren
- Speedstep deaktivieren
- Spread Spectrum deaktivieren, damit die Base Clock nicht schwankt (wegen Einhaltung von Normen zu besseren Elektromagnetischen Verträglichkeit)
- Disk Controller sollten im AHCI mode laufen
Es gibt noch mehr Möglichkeiten, aber die möchte ich gar nicht nennen, weil die esoterischer sind, und die o.g. eigentlich schon genug Potential haben, einen deutlichen Unterschied zu erzeugen (schnellere Zugriffszeiten aufs RAM,
Dann vielleicht noch Core Parking disablen und dann sollte sich schon was tun. Wenn eben nicht der Rechner irgendwelche Probleme hat und deshalb schneckig ist. Dem versucht man halt mit den Kernel Latency Messungen auf die Spur zu kommen.
Was an Latency Mon noch wichtig ist, das ist das TAB "Drivers".
Hier kann man sehen welcher Treiber die meisten ISRs und DPCs generieren und vor allem wie hoch die höchste Execution time und die akkumulierte Execution time ist.
Auch das TAB "CPUs" ist wichtig mal anzuschauen. Es zeigt, welche Treiber auf welchem Core die höchste Ausführungszeit hatte (nebst ISR und DPC time und count).
Dann schaut Euch auch mal an, dass immer wieder dieser NDIS Netzwerk Treiber durch hohe Ausführungszeiten ins Auge sticht. Also mein audio real time streaming geht auf jeden Fall immer dann gewaltig baden bzw in den Keller, wenn ich mit Firefox auf verschiedene Webseiten zugreife. ich vermute, dass die Netzwerkzugriffe alleine schon eine Menge Arbeit bedeuten, weil sich die Daten durch verschiedene Kernel Layer quälen müssen.
Hier nun der Orginal Text von der Seite
Fußnote (1): "About DPCs and ISRs
The Windows thread disptacher (also known as scheduler) which is part of the kernel executes threads based on a priority scheme. Threads with higher priority will be given a longer execution time (also known as quantum or time slice) than threads with a lower priority. However the kernel also knows other types of units of execution known as interrupt service routines (ISRs). Devices connected to the system may interrupt on a connected CPU and cause their interrupt service routines to execute. An interrupt can occur on the same processor that an audio program is running on. Any thread that was running on the processor on which an interrupt occured will be temporarily halted regardless of its priority. The interrupt service routine (ISR) is executed and may schedule a DPC (Deferred Procedure Call) to offload an amount of work. The DPC will most likely run immediately on the same processor which means the audio application will halt until both the ISR and the DPC routines have finished execution. That is because ISRs and DPCs run at elevated IRQL which means they cannot become preempted by the thread dispatcher (scheduler). Therefore to guarantee responsiveness of the system, ISR and DPC routines should execute as fast as possible. Guidelines say that they should not spend more than 100 µs of execution time however this is often not reached due to hardware factors beyond the control of the driver developer. If execution time gets too high, the audio program may be unable to deliver audio buffers to the hardware in a timely manner. "