모든 BSD/Linux/MacOS 및 Solaris에서 나는 관찰을 했습니다. 시스템이 아무리 바빠도 top
항상 실행 중인 프로세스가 거의 보고되지 않습니다(보통 1-2개).
제한된 이해에 따르면 프로세스는 CPU 시간을 사용 중이거나 CPU 시간을 사용할 수 있을 때까지 기다리는 경우 "실행 중" 상태입니다.
시나리오는 다음과 같습니다. SSH를 사용하여 VNC 터널을 설정한 다음 top
원격 시스템의 터미널 에뮬레이터에서 이를 실행합니다.
top
그 자체는 "실행 중인" 프로세스로 나열됩니다(이해 가능).sshd
나열되어 있지만 "실행 중"이 아닙니다.Xvnc
나열되어 있지만 "실행 중"이 아닙니다.
그러나 sshd
터널링된 VNC 트래픽 Xvnc
은 내 화면을 계속 업데이트하는데, 어떻게 CPU 시간을 사용하지 않을 수 있습니까?
CPU 시간을 사용하고 있다면 왜 "실행"되지 않습니까?
답변1
시간 문제라고 생각합니다. top
N초마다 CPU 상태를 확인합니다. 검사를 실행할 때 top
,가지다시스템 상태를 적극적으로 확인하고 있기 때문에 활성화됩니다. 이를 확인하는 좋은 방법은 업데이트 시간을 줄이고 top
프로세스가 진행되는 것을 지켜보는 것입니다! 제안된 대로 man top
:
o The user interface, through prompts and help, intentionally
implies that the delay interval is limited to tenths of a sec‐
ond. However, you're free to set any desired delay. If you
want to see Linux at his scheduling best, try a delay of .09
seconds or less.
For this experiment, under x-windows open an xterm and maximize
it. Then do the following:
. provide a scheduling boost and tiny delay via:
nice -n -10 top -d.09
. keep sorted column highlighting Off so as to
minimize path length
. turn On reverse row highlighting for emphasis
. try various sort columns (TIME/MEM work well),
and normal or reverse sorts to bring the most
active processes into view
What you'll see is a very busy Linux doing what he's always
done for you, but there was no program available to illustrate
this.
이것을 시도하면 더 많은 프로세스가 R
모드에 들어가는 것을 볼 수 있습니다. 또한 top
배치 모드에서 몇 차례 실행을 시도하고 실행 중인 것으로 표시된 프로세스를 수집할 수도 있습니다.
sudo nice -n -10 top -d.09 -bn 100 | awk '$8~/R/{print $NF}' | sort -u
내 시스템에서는 현재 로드 상태(공개 SSH 터널 포함)에서 다음 프로세스를 얻습니다.
cinnamon
firefox
kworker/0:1
kworker/1:2
kworker/2:2
kworker/3:0
plugin-containe
ssh
tint2
top
Xorg
답변2
오늘날 대부분의 프로세스는 네트워크의 패킷, 디스크 I/O 완료, 사람이 키보드로 입력하거나 마우스를 사용하는 등 어떤 일이 일어나기를 기다리고 있으며 이러한 빠른 CPU는 표준이 되었습니다.
일부 사진이나 동영상 처리와 같이 계산 집약적인 프로세스를 시작하면 실행 중인 것으로 나타납니다.
물론 top
, 프로세스를 분석할 때 항상 분명한 이유로 실행되고 있는 자신을 발견하게 될 것입니다.
표시된 상태는 평균이 아니라 스냅샷이므로 top
샘플링 이유로 인해 항상 절전 모드로 표시되는 프로세스보다 프로세스가 훨씬 더 바쁩니다.