우리는 OpenMP를 활용하여 여러 스레드(코어당 하나)에서 계산을 수행하여 사용 가능한 모든 CPU를 포화시키는 장기 실행 프로세스를 보유하고 있습니다.
저는 24개 코어 모두에서 실행되는 서버의 top(1)을 보고 있습니다.
예상할 수 있듯이 %CPU 열에는 CPU의 2380-2400%를 소비하는 프로세스가 표시됩니다. 몇 시간 동안 쉬지 않고 실행되었습니다.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27647 xxx 20 0 1416m 232m 11m R 2390.8 0.1 2324:59 pig
그러나 로드 평균은 9와 11 사이에서만 변동합니다.
top - 19:22:37 up 25 days, 5:35, 5 users, load average: 10.78, 10.24, 9.60
그리고 나는 그것이 24 주위 또는 24 바로 아래에 있을 것으로 예상합니다.
%CPU가 거짓말을 하고 있는 것입니까? 프로세스가 실제로 절반 이상의 시간 동안 I/O를 수행하고 있지만 여전히 실행 중인 것으로 보고됩니까? 아니면 부하 평균 계산이 잘못된 건가요?
이것은 Linux, RHEL-6, 커널 2.6.32-696.6.3...에 있습니다.