J'ai examiné la iowait
propriété indiquée dans la sortie de l'utilitaire supérieur, comme indiqué ci-dessous.
top - 07:30:58 up 3:37, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 86 total, 1 running, 85 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
iowait
est généralement défini comme suit:
"C'est le temps pendant lequel le CPU est inactif et il y a des E / S en attente."
Je crois comprendre qu'un processus est exécuté sur un seul processeur. Une fois qu'il a été retiré de la planification, soit parce qu'il a épuisé son créneau horaire, soit après avoir été bloqué, il peut éventuellement être à nouveau planifié sur n'importe quel processeur.
En cas de demande d'E / S, un processeur qui met un processus en veille sans interruption est responsable du suivi de l' iowait
heure. Les autres processeurs signalent en même temps que le temps d'inactivité de leur côté car ils sont vraiment inactifs. Cette hypothèse est-elle correcte?
En outre, en supposant qu'il existe une longue demande d'E / S (ce qui signifie que le processus a eu plusieurs opportunités d'être planifié mais n'a pas été planifié parce que l'E / S n'était pas terminée), comment un processeur sait-il qu'il existe des "E / S en attente"? D'où vient ce genre d'information? Comment un processeur peut-il simplement découvrir qu'un processus a été mis en veille pendant un certain temps pour qu'une E / S se termine, car n'importe quel processeur aurait pu mettre ce processus en veille. Comment ce statut de "IO en attente" est-il confirmé?