본문 바로가기
리눅스/Part4. Ch01. 시스템 성능 분석의 이해

03. 성능분석 방법론

by Engineer-Lee 2022. 12. 19.
반응형

방법론이 필요

- 주니어 -> 어디서부터 시작하고, 어떻게 진행해야 하는지에 대한 안내
- 시니어 -> 빠뜨린 세부 사항이 없는지 검사하기 위한 체크리스트


성능 이슈 분석 방법론

- USE (Utilization Saturation Error) 방법
- RED (request Rate, request Error, request Duration) 방법
- 과학적 접근 방법
- 지연시간 분석

 

USE 방법론

- 모든 자원에 대해, 사용률/포화도/오류를 확인
- 인프라 레벨의 성능 분석에 적합

 

   . Utilization(사용률)
      - 자원을 바쁘게 사용한 시간
      - 예) CPU 하나가 90% 사용률로 동작

 

   . Saturation(포화도)
      - 처리되지 못한 자원이 있는 수준 (대기 큐의 길이로 확인)
      - 예) CPU의 대기열의 평균 길이가 4


    . Errors(오류)
      - 발생한 오류의 횟수
      - 예) 디스크 컨트롤러에서 오류가 발생

 

 

RED 방법론

- USE 방법론은 서비스 단위로는 맞지 않음
- 분산, MSA 환경에 맞는 방법론
- 해당 지표들을 기반으로 alert 생성 및 대시보드 생성

 

  . request Rate (사용률)
     - 처리하고 있는 초당 요청의 개수

 

  . request Errors (오류)
     - 초당 요청이 실패한 개수

 

  . request Duration(지속시간)
     - 요청을 처리하는데 걸린 시간

 

  + Saturation(포화상태)
     - 요청을 처리하지 못하고 대기하는 상태
     - 클라우드 환경에서는 모든 자원에 제한이 있음

 

 

과학적 방법론

- 가설을 수립하고 검증하면서 분석
- 질문 -> 가설 -> 예측 -> 테스트 -> 분석


(예) 질문: 데이터베이스의 질의를 느리게 만드는 원인은?


  가설: 파일시스템 I/O의 성능이 문제
  예측: 파일 시스템 I/O의 지연시간을 질의 중간에 측정해 본다면,
  느린 파일 시스템이 질의 속도를 느리게 하는 원인임을 알 수 있을 것이다
  테스트: 파일 시스템 지연시간을 질의 지연시간으로 나누어 보니 전체 시간의 5%가 안됨
  분석: 파일 시스템이나 디스크가 원인은 아님


-> 새로운 가설을 세우고 추가적인 실험을 지속적으로 진행

 

 

지연시간 분석

- 어떤 연산을 완료하기까지 걸린 시간을 분석
   -> 그 후, 근본원인을 식별할 수 있을 때까지 더 작은 요소로 나눠서 파악
       예) 전체 지연시간(2s) -> A 지연시간 (1.5) + B 지연시간 (0.5) -> C(1) + D(0.5) + B(0.5)
   -> 소프트웨어 스택의 각 단계를 조사
       어플케이션에서 운영체제, 라이브러리, 시스템콜, 커널, 드라이버

 

예) MySQL 질의 지연시간
   - CPU 시간 vs. CPU외 시간
   - CPU외 시간의 주 대기시간? -> 파일 I/O 시간
   - 파일 I/O 시간 -> 디스크 I/O? 락 획득 시간?
   - 디스크 I/O 시간 -> 데이터 전송 시간? 임의 접근 시간?

 

 

방법론의 종류

- USE 방법론
   . 사용률, 포화도, 오류를 기준으로 시스템 자원을 분석
- RED 방법론
   . 요청빈도, 오류, 지속 시간을 기준으로 서비스를 분석
- 과학적 방법론
   . 가설을 수립하고 검증하면서 분석
- 지연시간 분석
   . 어떤 연산을 완료하기까지 걸린 시간을 세부적으로 분석
- 그 외에도 다양한 접근 방법이 존재
   . 드릴다운 분석: 문제를 좀 더 높은 수준으로 보고, 관심 대상을 깊이 파고드는 방식
   . 이벤트 추적: 통계적 정보가 아닌 개별적으로 이벤트를 분석하여 문제를 해결 (예, 네트워크 이슈 tcpdump이용)
   . 워크로드 특성 평가: 시스템에 가해진 입력 내용에 초점.
                                      (예, 타임시리즈 데이터베이스 성능이슈 -> 조회 워크로드 패턴을 조정하여 해결)

 

리눅스 성능 관측 도구

- 커널 커널의 개별 서브 시스템에 대한
  관측 도구가 충분히 존재
- 하나의 도구가 모든 성능 관련 관측
  정보를 포함하지 않음
- 목적에 맞게 적절하게 사용
- 다만, 메인터넌스나 성능의 이슈로 eBPF기반 도구들로 대체 추세
   -> 커널에서 안전하게 동작할 수 있는 코드를 삽입해, 좀 더 많은 정보를 적은 오버헤드로 가져옴
   -> 부록 강의에 포함

반응형

'리눅스 > Part4. Ch01. 시스템 성능 분석의 이해' 카테고리의 다른 글

02. 사례 소개  (0) 2022.12.19
01. 개념 소개  (0) 2022.12.19