CPU bound / IO bound

김승현·2023년 1월 16일
0
  • CPU(Central Processing Unit)
    - 프로세스의 명령어를 해석하고 실행하는 장치

  • IO(Input/output)
    - 파일을 읽고 쓰거나
    - 네트워크의 어딘가와 데이터를 주고 받는 것
    - 입출력 장치와 데이터를 주거나 받는 것

  • 버스트(Burst)
    - 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일

  • CPU 버스트
    - 프로세스가 CPU에서 한번에 연속적으로 실행되는 시간
    - 메모리에 올라가 있는 프로세스가 자신의 차례가 되서 CPU에서 실행 됐을 때 자신의 명령어들의 CPU에서 연속적으로 실행되는 시간을 의미

  • IO 버스트
    - 프로세스가 IO 작업을 요청하고 결과를 기다리는 시간



프로세스의 인생은 CPU 버스트와 IO 버스트의 연속

  • CPU bound 프로세스

    • CPU burst가 많은 프로세스
    • ex) 동영상 편집 프로그램, 머신런닝 프로그램
  • IO bound 프로세스
    - IO burst가 많은 프로세스
    - ex) (일반적인) 백엔드 API 서버

CPU bound 프로그램에서 적절한 스레드 수는 : number of CPUs(core) +1

  • 예) 듀얼 코어 CPU에 CPU bound 프로그램인 4개의 스레드를 실행하면 잦은 Context Switching 이 발생하므로 CPU를 낭비하게 된다.
  • 그래서 CPU core의 개수 또는 +1개 만큼 운용하는 것이 적당하다.


IO bound 프로그램에서 적절한 스레드 수

  • 컴퓨터 스펙, 프로그램의 특성 등등 여러 상황에 맞춰서 적절한 스레드 수를 찾아야 한다.
  • API 서버의 하드웨어 스펙이 어느 정도인지?
  • API 어플리케이션의 IO burst 비중이 어느 정도인지?
  • 예상되는 트래픽의 패턴은 어떤지? 등등



참조

쉬운코드_ cpu bound, io bound 의미를 설명합니다! 이에 따른 스레드 개수를 정하는 팁도 알려드립니다!

profile
개발자로 매일 한 걸음

0개의 댓글