- 실행 가능 상태 + 대기 상태 태스크(TASK_UNINTERRUPTABLE)의 부하
4 core의 경우, 0.20은 3.8개의 cpu는 load가 걸리지 않은것(idle 상태), 4일 경우 4개의 코어 모두 load, 4 이상일 경우 4개의 코어 모든 런큐에 태스크가 쌓여 있다는 것
- 1.36: 1분 load average
- 0.54: 5분 load average
- 0.20: 15분 load average
- 인터럽트 불가한 시간(디스크I/O 또는 뮤텍스와 같은 락 대기)까지 포함해서 계산됨
sudo apt install sysstat mpstat -P ALL 1
- ALL: 모든 CPU
- 1: 1초 간격
- CPU 별 지표 검사
- 초당 출력
- CPU 밸런싱 체크
sudo apt install bpfcc-tools
sudo apt install bpftrace
- 새로운 프로세스 실행을 시스템 전역에 걸쳐 트레이싱
- CPU 리소스를 소모하는 짧은 시간 동안만 동작한 프로세스 분석
top의 문제점
- 샘플링 기반이기때문에 짧게 동작한 프로세스를 트레이싱하지 못함
위를 해결하기 위해 execsnoop 사용
sudo execsnoop-bpfcc
- 다른 터미널에서
sleep 1000 &
- execsnoop과 반대로 종료되는 프로세스를 트레이싱
sudo exitsnoop-bpfcc
- 다른 터미널에서 종료
pkill sleep
Error
- 정해진 간격으로 스택 트레이스를 샘플링
- 스택 트레이스 빈도수 집계를 리포트
- CPU FlameGraph 와 사용하면 매우 뛰어남
sudo profile-bpfcc
2. 트레이싱 종료 후 결과 출력
- off-CPU 가 된 스레드들에 의해 소모된 시간을 요약
- 왜 스레드가 CPU에서 동작중이지 않은지 보여줌
sudo offcputime-bpfcc 5
Error
- 시스템 콜을 집계
- CPU 시간이 높은 이유를 조자
- syscount -Pi 1 : 프로세스 ID 별 집계 가능
sudo syscount-bpfcc -i 1
- 이벤트를 원하는 방법으로 검토
sudo argdist-bpfcc -H 't:syscalls:sys_enter_read():int:args- >count'
Error
- 이벤트 발생 빈도를 집계
#perf설치 sudo apt install perf-tools-unstable #tcp관련 이벤트 집계 sudo funccount-perf 'tcp_*'
- 브라우저 한번 실행 후 종료
- softirqs: 소프트웨어 IRQ 별 시간
- hardirqs: 하드 irq를 처리하는데 소모한 시간
#softirqs sudo softirqs-bpfcc 10 1 #hardirqs sudo hardirqs-bpfcc 10 1
- LLC 캐시 미스율과 히트율 표시(히트율이 높아야 성능이 좋음)
sudo llcstat-bpfcc
- 가상머신에서는 실행이 안되는듯 함