![Linux에서 CPU를 기다리는 프로세스 수를 얻는 방법은 무엇입니까?](https://linux55.com/image/127436/Linux%EC%97%90%EC%84%9C%20CPU%EB%A5%BC%20%EA%B8%B0%EB%8B%A4%EB%A6%AC%EB%8A%94%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EC%88%98%EB%A5%BC%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
CPU 사용률이 100%인 경우 다른 프로세스를 실행 대기열에 넣어야 합니다. 실행 대기열 크기를 얻으려면 어떤 명령을 사용할 수 있습니까? vmstat
다음과 같이 CPU 관련 값을 반환하는 것 같습니다.
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 875128 576328 2147136 0 0 1 4 3 11 0 0 99 0 0
매뉴얼에 따르면 " r
: 실행 가능한 프로세스 수(실행 중 또는 실행 대기 중)."에 따르면 이 열은 r
실행 중이거나 대기 중인 프로세스 수를 나타냅니다. 대기 프로세스 수를 어떻게 알 수 있나요?
답변1
수량실행 가능procs_running
프로세스는 다음과 같이 제공됩니다 /proc/stat
.
awk '/procs_running/ { print $2 }' /proc/stat
사용 가능한 CPU 스레드 수(0에서 중지)를 빼면 예약 대기 중인 예약 단위(프로세스 또는 스레드) 수를 얻습니다. /proc/stat
또한 이 행을 사용하여 사용 가능한 CPU 스레드 수를 확인할 수도 있습니다 cpu?
. 포괄적인:
awk '/cpu[^ ]/ { nb = substr($1, 4); if (nb > nbcpus) nbcpus = nb };
/procs_running/ { runqueue = $2 - nbcpus; if (runqueue < 0) runqueue = 0; print runqueue }' /proc/stat