리눅스데브코스 [10주차 - 4]<도구를 이용한 프로세스 스케줄러 모니터링 >

심우열·2023년 6월 19일
0
post-thumbnail

1. uptime

1. load average 출력

  • 실행 가능 상태 + 대기 상태 태스크(TASK_UNINTERRUPTABLE)의 부하

2. 출력값

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

3. 문제점

  • 인터럽트 불가한 시간(디스크I/O 또는 뮤텍스와 같은 락 대기)까지 포함해서 계산됨

2. top / htop

1. htop

2. top

3. mpstat

1. 사용 방법

sudo apt install sysstat
mpstat -P ALL 1
  • ALL: 모든 CPU
  • 1: 1초 간격

2. 출력

  • CPU 별 지표 검사
  • 초당 출력
  • CPU 밸런싱 체크

4. BPF

1. 사용 방법

sudo apt install bpfcc-tools
sudo apt install bpftrace

2. execsnoop: trace new process

  • 새로운 프로세스 실행을 시스템 전역에 걸쳐 트레이싱
  • CPU 리소스를 소모하는 짧은 시간 동안만 동작한 프로세스 분석

top의 문제점

  • 샘플링 기반이기때문에 짧게 동작한 프로세스를 트레이싱하지 못함

위를 해결하기 위해 execsnoop 사용

1. 새로운 프로세스 트레이싱

1. execsnoop 트레이싱 실행

sudo execsnoop-bpfcc

2. 프로세스 생성

  • 다른 터미널에서
sleep 1000 &

3. 트레이싱 결과

3. exitsnoop: trace exit process

  • execsnoop과 반대로 종료되는 프로세스를 트레이싱

1. 종료되는 프로세스 트레이싱

1. exitsnoop 트레이싱 실행

sudo exitsnoop-bpfcc

2. 프로세스 종료

  • 다른 터미널에서 종료
pkill sleep

3. 트레이싱 결과

5. runqlat

1. CPU 스케줄러 지연을 측정하는 도구(런큐 지연)

Error

6. profile

1. 출력

  • 정해진 간격으로 스택 트레이스를 샘플링
  • 스택 트레이스 빈도수 집계를 리포트
  • CPU FlameGraph 와 사용하면 매우 뛰어남

2. 사용 방법

1. 실행

sudo profile-bpfcc

2. 트레이싱 종료 후 결과 출력

7. offcputime

1. 출력

  • off-CPU 가 된 스레드들에 의해 소모된 시간을 요약
  • 왜 스레드가 CPU에서 동작중이지 않은지 보여줌

2. 사용방법

1. 실행

sudo offcputime-bpfcc 5

Error

8. syscount

1. 출력

  • 시스템 콜을 집계
  • CPU 시간이 높은 이유를 조자
  • syscount -Pi 1 : 프로세스 ID 별 집계 가능

2. 사용 방법

1. 실행

sudo syscount-bpfcc -i 1

2. 결과

9. argdist

1. 출력

  • 이벤트를 원하는 방법으로 검토

2. 사용 방법

1. 실행

sudo argdist-bpfcc -H 't:syscalls:sys_enter_read():int:args- >count'

2. 결과

Error

10. funcconut

1. 출력

  • 이벤트 발생 빈도를 집계

2. 사용 방법

1. 실행

#perf설치
sudo apt install perf-tools-unstable
#tcp관련 이벤트 집계
sudo funccount-perf 'tcp_*'
  • 브라우저 한번 실행 후 종료

2. 결과

11. softirqs, hardirqs

1. 출력

  • softirqs: 소프트웨어 IRQ 별 시간
  • hardirqs: 하드 irq를 처리하는데 소모한 시간

2. 사용 방법

1. 실행

#softirqs
sudo softirqs-bpfcc 10 1
#hardirqs
sudo hardirqs-bpfcc 10 1

2. 결과

12. llcstat

1. 출력

  • LLC 캐시 미스율과 히트율 표시(히트율이 높아야 성능이 좋음)

2. 사용 방법

1. 실행

sudo llcstat-bpfcc

2. 결과

  • 가상머신에서는 실행이 안되는듯 함
profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글