"유휴 프로세스 무시"를 의미하는 -i 매개변수를 사용하여 이를 실행하면 top -bi
결과 프로세스 목록(아래 참조)은 당시 S 프로세스가 있더라도 R 또는 D입니다.
그렇다면 방해받지 않는 수면은 왜 "유휴"로 간주되지 않습니까? 또한 "부하 평균"은 R 프로세스 수에 D 프로세스 수를 더한 것과 같은 것 같나요?
top - 17:47:44 up 141 days, 14:29, 2 users, load average: 4.10, 4.18, 4.17
Tasks: 224 total, 1 running, 223 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.4%sy, 0.0%ni, 87.2%id, 12.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16432240k total, 16345816k used, 86424k free, 4934652k buffers
Swap: 16386292k total, 6996k used, 16379296k free, 71432k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7479 root 18 0 1357m 1.1g 904 D 1 7.0 10:27.86 rsync
7463 root 18 0 1315m 1.0g 840 D 1 6.6 9:45.83 rsync
7469 root 18 0 1088m 889m 840 D 0 5.5 8:10.20 rsync
7524 root 18 0 1106m 895m 840 D 0 5.6 8:13.60 rsync
30958 root 15 0 12720 1148 788 R 0 0.0 0:01.07 top
답변1
'중단되지 않는 수면'은 유휴 상태나 잠을 자는 것을 의미하지 않기 때문입니다. 매뉴얼 ps
페이지에는 이미 이에 대한 설명이 나와 있습니다. 일반적으로 IO이며 rsync의 경우 이는 놀라운 일이 아닙니다.
답변2
프로세스가 인터럽트 가능한 절전 상태에 있다는 것은 커널이 프로세스에서 요청한 일부 작업(주로 입력/출력)을 수행하고 있음을 의미합니다. 커널이 요청을 처리하는 동안 프로세스는 휴면 상태입니다. 프로세스 자체가 유휴 상태일 때 커널은 프로세스를 사용 중으로 나타내므로 프록시를 통해 프로세스가 사용 중입니다. 사용자 모드 코드(R)와 커널 모드 코드(D)는 모두 사용 중인 것으로 간주됩니다.