개념
Burst
- 어떤 현상이 짧은 시간 안에 집중적으로 일어남
- CPU Burst: 프로세스가 CPU에서 한 번에 연속적으로 실행되는 시간
- IO Burst: 프로세스가 IO작업을 요청하고 결과를 기다리는 시간
CPU bound 프로세스
- CPU Burst가 다분한 프로세스
- 연산 작업이 많은 프로그램 (Ex.동영상 편집 프로그램, 머신러닝 프로그램)
IO bound 프로세스
- IO Burst가 다분한 프로세스
- 네트워크가 자주 사용되는 작업 (Ex.백엔드 API 서버)
CPU bound 프로그램에서 적절한 스레드의 개수
- 일반적으로 코어의 개수 + 1을 넘어가면 안 됨
- 예를 들어, 듀얼 코어 CPU에 CPU bound 프로그램을 동작할 때 스레드 몇 개를 할당하는 것이 가장 좋을까?
- 만약 4개의 스레드가 2개씩 하나의 코어로 할당이 되면 아래와 같은 모습
- 각 코어는 Thread Context Switching을 할 때마다 CPU 리소스를 낭비
- 따라서 많은 스레드를 둔다고 좋은 것만은 아님
- 만약 2개의 스레드가 각 코어에 들어가면, 불필요한 Context Switching이 필요가 없어짐
IO bound 프로그램에서 적절한 스레드의 개수
- 구체적으로 정해진 가이드라인은 존재하지 않음
- 기기 사양, 프로그램 특성을 고려하여 적절한 스레드 수를 찾아야함