본문 바로가기
리눅스/Part4. Ch02. CPU 관련 주요 개념 및 분석

01. CPU 성능분석의 이해

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

CPU 성능분석

- CPU는 모든 소프트웨어 실행을 담당 -> 성능 분석 시 가장 먼저 봐야하는 대상
- CPU는 모든 실행이 필요한 프로세스가 사용
  . CPU 코어 개수 < Process 개수 -> 대기열에 들어가서 자신의 순서를 기다려야 함
    -> 프로세스 스케줄러가 순서를 정함
    -> O(1) 스케줄러는 Queue를 순서를 관리, CFS 스케줄러는 Tree를 이용해 순서를 관리

 

 

클럭 속도

- CPU는 클럭 속도에 따라 명령을 실행
- 전력 소모를 위해 클럭 속도를 조정할 수 있음
   예, x86은 p-state, arm(예, 스마트폰)은 DVFS 
클라우드 환경
   . 일부 인스턴스 타입에 대해서만 조정 기능 지원
   . 기본 p-state가 0이라 별도로 조정할 이유가 제한적임
     -> 과금은 클럭 기준이 아니라 시간단위


하이퍼스레딩 (인텔) <- AMD는 Simultaneuous MultiThreading (SMT)

- 각 물리코어에 둘 이상의 스레드를 실행하도록 지원하는 기술
   -> 더 많은 작업을 병렬로 수행 가능 (최대 30% 성능 개선)
       단, 프로세서 구조에 최적화되지 않은 코드의 경우 성능이 떨어질 수 있음
- 운영체제 입장
   . 2 코어 4 스레드 -> 4개의 코어로 인식하고 스케줄링 가능
- 클라우드 환경
   . vCPU는 물리 CPU 코어의 하이퍼스레드
     예) r4.2xlarge = vCPU 8 <- 물리코어 4, 논리적 프로세서 8개

 

CPU의 한계

- 물리적인 한계와 전력 효율 등의 원인으로 클럭 속도 증가의 한계에 있음

   -> 수직적 확장이 아닌 수평적 확장으로 해당 한계 극복

 

스케줄링 클래스

- 실행 가능 스레드의 동작을 관리
- 리얼타임 프로세스
   . 실시간 부하를 위해 고정된 높은 우선순위 제공
   . 스케줄링 정책: 라운드로빈, 선입선출(FIFO)
- 일반 프로세스
   . CFS 스케줄러에 적용할 우선순위를 조정
   . Completely Fair 지만 우선순위에 따라 실행 시간을 더 할당 받을 수 있음
   . 스케줄링 정책: 일반(NORMAL), 일괄(BATCH)
-> 우선순위 정보 확인 $ ps -el
-> 사용자 프로세스는 일반 클래스, 대부분 동일한 우선순위 (NICE 0)

 

사용률

- 특정 기간동안 CPU 인스턴스가 작업을 수행한 전체 시간의 백분율
   -> 어떤 CPU가 프로세스를 실행하거나 인터럽트를 처리하는데 걸리는 시간을 측정
   * 인터럽트: 하드웨어가 프로세서에 신호를 보내서 적합한 처리를 하도록 요청 (폴링 X)
      (예, 키보드 입력, 디스크에서 데이터 읽기, 네트워크 패킷 도착)
- 높은 CPU 사용률이 꼭 문제가 되지는 않음
   -> 낮은 CPU 사용률은 자원 낭비
   -> 급격히 증가하는 CPU 사용 패턴은 반드시 확인
- 100% 사용률
   -> 다른 자원에 비해 포화상태에 적은 문제
   -> 사용률이 높지 않은 프로세스도 여전히 실행됨
   -> BUT 특정 인스턴스의 경우(예, T타입 인스턴스) 급격한 성능 저하가 발생함

 

사용자 시간 / 커널 시간

- 사용자 공간 코드를 실행하는데 CPU가 소비한 시간 -> 사용자 시간
- 커널 공간 코드를 실행하는데 CPU가 소비한 시간 -> 커널 시간
- 계산 중심 애플리케이션은 사용자/커널 시간은 99/1 비율에 가까움
- I/O 중심 애플리케이션은 커널 시간의 비중이 높음 (예, 웹 서버는 70/30)

반응형