CPU 분석 도구
[기본 설치]
- top : 프로세스/스레드별로 CPU 사용 정보를 확인
- ps : 프로세스 상태 확인
- uptime : 부하 평균 표시
- vmstat : 가상 메모리 통계 표시 (시스템 전체 CPU 사용률 평균을 포함)
- pidstat : 프로세스/스레드별로 CPU 사용을 구분해 표시
- time : 명령 실행에 걸린 시간을 측정, CPU 사용 시간도 별도로 표시
-> 도구들 조합해서 사용해야 함
[추가 패키지 설치 필요]
- mpstat : CPU별 통계
- sar : 과거 통계
- DTrace : CPU 프로파일링과 트레이싱
- perf : CPU 성능 카운터 분석
- top : 프로세스/스레드별로 CPU 사용 정보를 확인
. 가장 많이 실행 중인 프로세스를 표시 -> CPU 사용률 내림차순
. 시스템 전체 요약 내용 표시 중 CPU 관련 내용
us : 사용자 모드에서 실행한 시간
sy : 커널 모드에서 실행 시간
nice : 우선순위가 조정된 사용자 프로세스 실행시간
id : idle 시간
wa : I/O 완료를 기다리며 아무것도 실행하지 않은 시간
hi : 하드웨어 인터럽트 처리에 사용된 시간
si : 소프트웨어 인터럽트 처리에 사용된 시간
트랩 또는 예외 -> 예, 존재하지 않은 메모리 주소 접근, 0 으로 나누기
st : 하이퍼바이저에 의해 빼앗긴 시간
. 주의사항
- 오버헤드가 높음 (/proc의 모든 프로세스 노드에 대해 open,read,close 수행) -> top이 top인 경우
- 단기간만 짧게 실행되는 프로세스는 표시 안될 수 있음 (기본 3초, d키 눌러서 delay 조정 가능
- uptime : 시스템 부하 평균을 표시하는 도구
. CPU 자원의 1분, 5분, 15분 평균 부하를 표시
-> 15분 동안의 평균 부하의 경향을 볼 수 있음 (top는 정보가 계속 갱신 -> 현재 상태 확인)
. 부하 -> 실행중 / 인터럽트불가능 상태의 프로세스의 평균 개수
. 주의사항
- 인터럽트 불가능 상태(예, disk I/O 기다림)를 포함 -> CPU 수요와 디스크 부하를 구분하기 힘듦
- vmstat : 가상 메모리 통계 표시하는 도구
. 시스템 전체 CPU 사용률을 같이 표시
. r: 실행/대기 중인 프로세스 개수, b: 인터럽트 불가능 상태의 프로세스 개수
us: 사용자 시간, sy : 시스템(커널)시간, id: 유휴, wa: I/O 대기, st: 하이퍼바이저가 뺏어간 시간
. 주의사항
- uptime 대비 인터럽트 불가능 상태의 프로세스 정보도 포함
- 프로세스 전체 평균만을 표시 -> mpstat 은 CPU별 통계를 표시
- pidstat : 프로세스 / 스레드별로 CPU 사용을 구분해 사용률을 표시 <- uptime, vmstat은 cpu별 정보표시
. CPU에서 실행중인 프로세스를 매초 표시
- perf : 리눅스 커널 성능 측정 도구
. CPU 성능 카운터 분석
T 타입 인스턴스 (= 버스트 가능 성능 인스턴스)
- 기본 수준의 CPU 성능과 더불어 기본 수준 이상으로 버스트할 수 있는 기능을 제공
-> 범용적인 워크로드는 CPU를 항상 많이 사용하지는 않음
- CPU Credit 범위 내에서 더 많은 CPU를 쓸 수 있음
-> CPU Credit이 없는 경우 baseline 성능으로 성능 저하
-> 해결방법? 인스턴스 변경 또는 무제한 모드
'리눅스 > Part4. Ch02. CPU 관련 주요 개념 및 분석' 카테고리의 다른 글
04. (실습) CPU 성능 데이터 시각화 (0) | 2022.12.20 |
---|---|
02. 프로세스 스케줄러의 이해 (0) | 2022.12.19 |
01. CPU 성능분석의 이해 (0) | 2022.12.19 |