반응형
반응형
💋 CPU Burst VS IO Burst
✔️ Burst
- 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일
- 계속되는 작업
✔️ CPU Burst
- 프로세스가
CPU
에서 한 번에 연속적으로실행
되는 시간 - 메모리에 올라가 있는 프로세스가, 자신의 차례가 되어 CPU에서 실행되었을 때, 자신의 명령어가 CPU에서 연속적으로 실행되는 시간
✔️ IO Burst
- 프로세스가
IO 작업
을 요청하고 결과를기다리는
시간
프로세스를 실행하면, CPU Burst, IO Burst가 번갈아가며 나타난다. (마지막은 CPU Burst겠죠?)
💋 CPU Bound VS IO Bound
✔️ CPU Burst 시간의 분포
위 그래프를 보면, 대부분의 프로세스는 CPU Burst가 8ms 이내에 끝나는 것을 볼 수 있다.
프로세스의 성격에 따라, CPU Burst 시간이 많은지(= CPU Bound), 적은지(= IO Burst 시간이 많음 = IO Bound)에 따라 분류할 수 있다.
✔️ CPU Bound 프로세스
- CPU Burst가 많은 프로세스 = CPU를 많이 사용하는 프로세스
- 예) 동영상 편집 프로그램, 머신러닝 프로그램 (Applications that usually require tons of calculations)
✔️ IO Bound 프로세스
- IO Burst가 많은 프로세스 = IO를 많이 사용하는 프로세스
- 예) 백엔드 API 서버 ⇒ DB 서버, 캐시 서버에 요청을 보내는 경우가 많음
💋 적절한 스레드의 개수는?
✔️ 듀얼 코어 CPU에서 동작할 CPU Bound 프로그램을 구현한다면 몇 개의 스레드를 쓰는게 좋을까?
- number of CPUs + 1 (Goetz 선생님이 주장하심.)
스레드가 너무 많으면, 스레드끼리 코어를 사용하기 위해 경합을 하면서, 짧은 시간 단위로 컨텍스트 스위칭 발생 ⇒ 오버헤드가 발생
코어의 개수만큼, 아니면 코어 개수에서 크게 벗어나지 않는 선에서(1개로 제안함) 스레드 개수를 설정하는 것이 효율적이다.
✔️ 듀얼 코어 CPU에서 동작할 IO Bound 프로그램을 구현한다면 몇 개의 스레드를 쓰는게 좋을까?
정해진 가이드라인은 없으므로, 여러 상황에 맞춰 적절한 스레드 개수를 찾아야 한다.
먼저 애플리케이션을 실행하면서, 경험적으로 최적의 스레드 개수를 찾아가는 것도 방법이다.
기억할 것은, 무조건 스레드가 많다고 해서 (물론 동시에 실행되는 것처럼 보이겠지만) 성능이 좋다는 것은 아니라는 것!
오히려 컨텍스트 스위칭이라는 오버헤드가 발생해서, 성능은 저하될 가능성이 크다.
💋 참고자료
- https://www.intel.co.kr/content/www/kr/ko/products/docs/processors/cpu-vs-gpu.html
- https://www.youtube.com/watch?v=qnVKEwjG_gM&list=PLcXyemr8ZeoQOtSUjwaer0VMJSMfa-9G-&index=3
- https://www.baeldung.com/cs/cpu-io-bound
- https://www.baeldung.com/cs/servers-threads-number
- https://www.baeldung.com/cs/cpu-io-burst-cycles
도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
반응형
'Computer Science > Operating System' 카테고리의 다른 글
[OS] 동기화 메커니즘(Synchronization Mechanisms)(1): 스핀락(Spinlock), 뮤텍스(Mutex), 세마포어(Semaphore) (0) | 2023.11.20 |
---|---|
[OS] 동기화(synchronization)의 필요성: 경쟁 조건(race condition), 임계 영역(critical section) (0) | 2023.11.12 |
[OS] 컨텍스트 스위칭: 프로세스 컨텍스트 스위칭 VS 스레드 컨텍스트 스위칭 (0) | 2023.11.09 |
[OS] 프로세스/스레드의 개념: 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍을 구분하자! (2) | 2023.11.09 |
[OS] Connection Pool Size를 줄이면 오히려 성능이 개선될 수 있다. (1) | 2023.09.29 |