Rapports d'utilisation du processeur Windows «iowait»

9

Windows prend-il en compte et signale-t-il « iowait» de la même manière que Linux? Autrement dit, les processus entrent en «sommeil sans interruption» et leur temps passé est soustrait de «sans CPU»?

Dans l'affirmative, quels compteurs Perfmon seraient appropriés pour détecter "CPU occupé en raison de retards de maintenance IO" par opposition à "CPU occupé en raison du calcul?"

Yolo Perdiem
la source
C'est la magie du noyau. Vous voudrez peut-être examiner les "Internes de Windows" pour une image plus détaillée.
le-wabbit

Réponses:

10

Certains des concepts du noyau Windows diffèrent considérablement de ceux de Linux, c'est pourquoi vous ne voyez pas de iowaitcompteur dans Perfmon.

Premièrement, l'entité de planification dans Windows est un thread, pas un processus. Un processus est juste un conteneur pour 1+ threads. De plus, Windows ne définit pas un état de veille sans interruption pour ses threads (plus précisément, toutes les demandes d'E / S peuvent être interrompues - par exemple par un autre thread du même processus), il n'y aurait donc pas d' iowaitéquivalent exact sur les plateformes Windows. Windows signale le temps que ses threads attendent pour que les E / S de synchronisation soient "inactives" car les threads sont simplement changés en fonction du contexte par le planificateur dès qu'ils émettent des requêtes d'E / S de synchronisation.

Si vous êtes intéressé par le temps total consacré aux opérations d'E / S sur un périphérique spécifique, vous devriez consulter les compteurs liés à la latence ainsi que le nombre de demandes respectives traitées au cours de cette période. Cependant, cela ne vous permettrait pas de le décomposer en modèles d'accès synchrones vs asynchrones.

le-wabbit
la source