CPU 성능 분석
CPU는 모든 소프트웨어 실행을 담당 -> 성능 분석 시 가장 먼저 봐야하는 대상
CPU는 모든 실행이 필요한 프로세스가 사용
CPU 코어 개수 < Process 개수 -> 대기열에 들어가서 자신의 순서를 기다려야 함.
프로세스 스케줄러가 순서를 정함
O(1) 스케줄러는 Queue를 순서를 관리, CFS 스케줄러는 Tree를 이용해 순서를 관리
주요 용어 및 개념
클럭 속도
CPU는 클럭 속도에 따라 명령을 실행
전력 소모를 위해 클럭 속도를 조정할 수 있음
x86은 p-state, arm은 DVFS
클라우드 환경에서는 기본 p-state가 0이라 별도로 조정할 이유가 제한적임
하이퍼스레딩(인텔)
각 물리코어에 둘 이상의 스레드를 실행하도록 지원하는 기술
더 많은 작업을 병렬로 수행 가능
운영체제 입장 -> 2코어 4스레드 -> 4개의 코어로 인식하고 스케줄링 가능
CPU의 한계
물리적인 한계와 전력 효율 등의 원인으로 클럭 속도 증가의 한계에 있음
-> 수직적 확장이 아닌 수평적 확장으로 해당 한계를 극복 (scale-out)
스케줄링 클래스
실행 가능 스레드의 동작을 관리
리얼타임 프로세스 : 실시간 부하를 위해 고정된 높은 우선순위 제공
일반 프로세스(어플리케이션) : CFS 스케줄러에 적용할 우선순위를 조정
사용률
특정 기간동안 CPU 인스턴스가 작업을 수행한 전체 시간의 백분율
어떤 CPU가 프로세스를 실행하거나 인터럽트를 처리하는데 걸리는 시간을 측정
*인터럽트 : 하드웨어가 프로세스에 신호를 보내서 적합한 처리를 하도록 요청
높은 CPU 사용률이 꼭 문제가 되지는 않음
낮은 CPU 사용률은 자원 낭비, 급격히 증가하는 CPU 사용 패턴은 반드시 확인
100% 사용률
다른 자원에 비해 포화상태에 적은 문제 (다른 부분에 비해서 덜 크리티컬함)
사용률이 높지 않은 프로세스도 여전히 실행됨
그러나 특정 인스턴스의 경우 급격한 성능 저하가 발생함
사용자 시간 / 커널 시간
사용자 공간 코드를 실행하는데 CPU가 소비한 시간 -> 사용자 시간
커널 공간 코드를 실행하는데 CPU가 소비한 시간 -> 커널 시간
계산 중심 어플리케이션은 사용자/커널 시간 99/1 비율에 가까움
I/O 중심 어플리케이션은 커널 시간의 비중이 높음
Last updated