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