CPU(Central Processing Unit)
- 프로세스의 명령어를 해석하고 실행하는 장치
IO(Input/output)
- 파일을 읽고 쓰거나
- 네트워크의 어딘가와 데이터를 주고 받는 것
- 입출력 장치와 데이터를 주거나 받는 것
버스트(Burst)
- 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일
CPU 버스트
- 프로세스가 CPU에서 한번에 연속적으로 실행되는 시간
- 메모리에 올라가 있는 프로세스가 자신의 차례가 되서 CPU에서 실행 됐을 때 자신의 명령어들의 CPU에서 연속적으로 실행되는 시간을 의미
IO 버스트
- 프로세스가 IO 작업을 요청하고 결과를 기다리는 시간
프로세스의 인생은 CPU 버스트와 IO 버스트의 연속
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 의미를 설명합니다! 이에 따른 스레드 개수를 정하는 팁도 알려드립니다!