Berücksichtigt und meldet Windows " iowait" auf dieselbe Weise wie Linux? Das heißt, Prozesse treten in einen "unterbrechungsfreien Ruhezustand" ein und ihre aufgewendete Zeit wird von "CPU-frei" abgezogen?
Wenn ja, welche Perfmon-Zähler sind geeignet, um zu erkennen, dass die CPU aufgrund von Verzögerungen bei der Wartung der E / A ausgelastet ist, und nicht, dass die CPU aufgrund der Berechnung ausgelastet ist?
Antworten:
Einige der Konzepte im Windows-Kernel unterscheiden sich erheblich von denen unter Linux. Aus diesem Grund wird
iowait
in Perfmon kein Zähler angezeigt.Erstens ist die Entität der Zeitplanung in Windows ein Thread, kein Prozess. Ein Prozess ist nur ein Container für 1+ Threads. Darüber hinaus definiert Windows keinen unterbrechungsfreien Ruhezustand für seine Threads (genauer gesagt, alle E / A-Anforderungen können unterbrochen werden - beispielsweise durch einen anderen Thread desselben Prozesses), sodass es
iowait
auf Windows-Plattformen kein genaues Gegenstück gibt. Windows meldet die Zeit, zu der seine Threads auf Synchronisierungs-E / A warten, als "Leerlauf", da Threads vom Scheduler einfach kontextumgeschaltet werden, sobald sie Synchronisierungs-E / A-Anforderungen ausgeben.Wenn Sie an der Gesamtzeit interessiert sind, die für E / A-Vorgänge auf einem bestimmten Gerät aufgewendet wird, sollten Sie sich die latenzbezogenen Zähler sowie die Anzahl der jeweiligen Anforderungen ansehen, die innerhalb dieses Zeitraums verarbeitet wurden. Dies würde es Ihnen jedoch nicht ermöglichen, es in synchrone oder asynchrone Zugriffsmuster aufzuteilen.
quelle