iowait
아래에 표시된 것처럼 최상위 유틸리티 출력에 표시된 속성을 조사했습니다 .
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
일반적으로 다음과 같이 정의됩니다.
"CPU가 유휴 상태이고 보류중인 IO가있는 시간입니다."
프로세스가 단일 CPU에서 실행된다는 것을 이해합니다. 시간 슬롯을 다 사용하여 예약이 취소되거나 차단 된 후에는 한 CPU에서 다시 예약 할 수 있습니다.
IO 요청의 경우 프로세스를 무정전 절전 상태로 만드는 CPU가 iowait
시간 추적을 담당합니다 . 다른 CPU는 실제로 유휴 상태 일 때 유휴 시간과 동일한 시간을보고합니다. 이 가정이 맞습니까?
또한 긴 IO 요청이 있다고 가정하면 (프로세스에 일정을 잡을 수있는 기회가 여러 개 있지만 IO가 완료되지 않아서 일정이 예약되지 않았다는 것을 의미) CPU에서 "대기중인 IO"가 있음을 어떻게 알 수 있습니까? 그런 종류의 정보는 어디에서 가져 옵니까? CPU는 CPU가 프로세스를 휴면 상태로 만들 수 있었기 때문에 IO가 완료 될 때까지 일부 프로세스가 휴면 상태에 있음을 어떻게 알 수 있습니까? 이 "pending IO"상태는 어떻게 확인됩니까?