Patrzyłem na iowait
właściwość pokazaną na górnym wyjściu narzędzia, jak pokazano poniżej.
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
jest ogólnie definiowany w następujący sposób:
„Jest to czas bezczynności procesora i oczekiwanie na niektóre operacje we / wy”.
Rozumiem, że proces jest uruchamiany na jednym procesorze. Po de-harmonogramowaniu, ponieważ wykorzystał swój przedział czasowy lub po tym, jak został zablokowany, może ostatecznie zostać ponownie zaplanowany na dowolnym CPU.
W przypadku żądania We / Wy procesor, który wprowadza proces w nieprzerwany sen, jest odpowiedzialny za śledzenie iowait
czasu. Pozostałe procesory zgłaszałyby na tym samym czasie bezczynności, ponieważ tak naprawdę są bezczynne. Czy to założenie jest prawidłowe?
Ponadto, zakładając, że istnieje długie żądanie We / Wy (co oznacza, że proces miał kilka możliwości zaplanowania, ale nie został zaplanowany, ponieważ We / Wy nie zostało ukończone), skąd procesor wie, że istnieje "oczekujące We / Wy"? Skąd pochodzą takie informacje? Jak procesor może po prostu dowiedzieć się, że jakiś proces został uśpiony na pewien czas, aby IO mogło się zakończyć, ponieważ którykolwiek z procesorów mógł go uśpić. W jaki sposób potwierdzany jest ten status „oczekujących operacji we / wy”?