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)
'리눅스 > Part4. Ch02. CPU 관련 주요 개념 및 분석' 카테고리의 다른 글
04. (실습) CPU 성능 데이터 시각화 (0) | 2022.12.20 |
---|---|
03. CPU 성능분석 도구 (0) | 2022.12.20 |
02. 프로세스 스케줄러의 이해 (0) | 2022.12.19 |