저는 VirtualMin 4.08.gpl GPL 및 2개의 CPU 코어를 갖춘 Ubuntu Linux 12.04.1을 실행하고 있습니다.
지난 몇 주 동안 거의 지속적으로 5를 훨씬 넘는 로드 평균으로 실행되었으며 종종 10에 가까웠고 때로는 20에 가까웠습니다.
현재 CPU 로드 평균: 9.20(1분) 8.20(5분) 7.81(15분)
동시에 VirtualMin은 다음을 반환합니다.
Virtual Memory: 996 MB total, 15.44 MB used
Real Memory: 3.80 GB total, 972.43 MB used
Local disk space: 915.94 GB total, 116.03 GB used
머신을 몇 번 재부팅( shutdown -rf now
)하면 조만간 높은 CPU 로드 상태로 돌아갈 것입니다.
높은 CPU top
(또는 htop
)에서 실행하면 중요한 정보가 반환되지 않습니다. 실제로 몇 분 동안 지켜보면 상위 프로젝트의 CPU가 3% 더 높을 수 있습니다.
Top은 또한 다음을 반환합니다.
Cpu(s): 2.2%us, 1.2%sy, 0.0%ni, 0.0%id, 96.5%wa, 0.0%hi, 0.2%si, 0.0%st
%wa
너무 높아서 걱정이 됩니다. 80% 이상을 유지하는 것 같습니다 . 나는 그것이 % 대기 중이라는 것을 알고 있지만 그것이 실제로 무엇을 의미하는지 잘 모르겠습니다.
어디에서 디버깅을 시작하고 CPU 부하가 높은 원인을 찾을 수 있습니까?
답변1
이는 "CPU 로드 평균"이 아니라 시스템 "로드 평균"입니다. 이는 반드시 CPU가 사용 중이라는 의미는 아니지만 시스템의 일부가 사용 중임을 의미합니다. 이 값은 더 자세한 설명에서 나옵니다 /proc/loadavg
.man proc
/proc/loadavg
파일의 처음 3개 필드는 로드 평균 수치로, 평균 1분, 5분, 15분 동안 대기열에서 실행 중이거나(상태 R) 디스크 I/O를 기다리고 있는(상태 D) 작업 수를 제공합니다. 이는 uptime(1) 및 기타 프로그램에서 제공하는 것과 동일한 로드 평균입니다. 네 번째 필드는 슬래시(/)로 구분된 두 개의 숫자로 구성됩니다. 첫 번째는 현재 실행 가능한 커널 스케줄링 엔터티(프로세스, 스레드)의 수입니다. 슬래시 뒤의 값은 현재 시스템에 존재하는 커널 스케줄링 엔터티의 수입니다. 다섯 번째 필드는 시스템에서 가장 최근에 생성된 프로세스의 PID입니다.
따라서 표시되는 것은 실행 중이거나 디스크를 기다리는 평균 프로세스입니다.
로드 평균이 20이면 "실행 중" 또는 "대기" 상태에 있는 프로세스가 평균 20개 있다는 의미입니다. 로드 평균은 매우 높고 CPU는 매우 낮을 수 있으며, 로드 평균은 매우 낮고 CPU는 매우 높을 수 있습니다. 왜냐하면 서로 관련이 없기 때문입니다.
%wa
특정 프로세스가 경고 빈도로 디스크를 손상시켜 다른 모든 프로세스의 속도를 저하시키는 것일 수 있으므로 D 프로세스부터 시작하여 범인을 찾으십시오 . 이는 wa
IO가 대부분의 상위 구현을 기다리고 있음을 의미합니다.