프로세스는 특성에 따라 CPU bound나 I/O bound로 구분된다.
각각 프로그램의 스레드 개수를 어떻게 정해야 하는지 다르다.
용어
CPU (Central Processing Unit)
- 파일을 읽고 쓰는 것
- 네트워크의 어딘가와 데이터를 주고 받는 것
- 입출력 장치와 데이터를 주고 받는 것
버스트(Burst)
- 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일
CPU 버스트
- 프로세스가 CPU에서 한번에 연속적으로 실행되는 시간
I/O 버스트
- 프로세스가 I/O 작업을 요청하고 결과를 기다리는 시간
프로세스의 인생은, CPU 버스트와 I/O 버스트의 연속
CPU bound 프로세스
- CPU burst가 많은 프로세스
- ex1) 동영상 편집 프로그램
- ex2) 머신러닝 프로그램 (I/O 작업이 적고, 연산 작업이 많음)
- 적절한 스레드 수
- (CPU 수 + 1)
I/O bound 프로세스
- I/O burst가 많은 프로세스
- ex1) [일반적인] 백엔드 API 서버
HTTP 요청
-> DB 서버 or 캐시 서버에 데이터를 요청
-> 요청한 데이터를 가공
-> HTTP 응답
- 적절한 스레드 수
- 컴퓨터 스펙, 프로그램의 특성 등등 상황을 고려해서 찾아야함