[OS] CPU Bound VS IO Bound: 스레드는 몇 개가 좋을까?

2023. 11. 10. 08:00· Computer Science/Operating System
목차
  1. 💋 CPU Burst VS IO Burst
  2. ✔️ Burst
  3. ✔️ CPU Burst
  4. ✔️ IO Burst
  5. 💋 CPU Bound VS IO Bound
  6. ✔️ CPU Burst 시간의 분포
  7. ✔️ CPU Bound 프로세스
  8. ✔️ IO Bound 프로세스
  9. 💋 적절한 스레드의 개수는?
  10. ✔️ 듀얼 코어 CPU에서 동작할 CPU Bound 프로그램을 구현한다면 몇 개의 스레드를 쓰는게 좋을까?
  11. ✔️ 듀얼 코어 CPU에서 동작할 IO Bound 프로그램을 구현한다면 몇 개의 스레드를 쓰는게 좋을까?
  12. 💋 참고자료
반응형
반응형

 

 

💋 CPU Burst VS IO Burst

✔️ Burst

  • 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일
  • 계속되는 작업

 

✔️ CPU Burst

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

 

✔️ IO Burst

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

 

프로세스를 실행하면, CPU Burst, IO Burst가 번갈아가며 나타난다. (마지막은 CPU Burst겠죠?)

 

이미지 출처: https://www.baeldung.com/cs/cpu-io-burst-cycles

 

 

💋 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
  1. 💋 CPU Burst VS IO Burst
  2. ✔️ Burst
  3. ✔️ CPU Burst
  4. ✔️ IO Burst
  5. 💋 CPU Bound VS IO Bound
  6. ✔️ CPU Burst 시간의 분포
  7. ✔️ CPU Bound 프로세스
  8. ✔️ IO Bound 프로세스
  9. 💋 적절한 스레드의 개수는?
  10. ✔️ 듀얼 코어 CPU에서 동작할 CPU Bound 프로그램을 구현한다면 몇 개의 스레드를 쓰는게 좋을까?
  11. ✔️ 듀얼 코어 CPU에서 동작할 IO Bound 프로그램을 구현한다면 몇 개의 스레드를 쓰는게 좋을까?
  12. 💋 참고자료
'Computer Science/Operating System' 카테고리의 다른 글
  • [OS] 동기화 메커니즘(Synchronization Mechanisms)(1): 스핀락(Spinlock), 뮤텍스(Mutex), 세마포어(Semaphore)
  • [OS] 동기화(synchronization)의 필요성: 경쟁 조건(race condition), 임계 영역(critical section)
  • [OS] 컨텍스트 스위칭: 프로세스 컨텍스트 스위칭 VS 스레드 컨텍스트 스위칭
  • [OS] 프로세스/스레드의 개념: 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍을 구분하자!
깃짱
깃짱
연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
반응형
깃짱
깃짱코딩
깃짱
전체
오늘
어제
  • 분류 전체보기
    • About. 깃짱
    • Weekly Momentum
      • 2024
    • PROJECT
      • AIGOYA LABS
      • Stamp Crush
      • Sunny Braille
    • 우아한테크코스5기
    • 회고+후기
    • Computer Science
      • Operating System
      • Computer Architecture
      • Network
      • Data Structure
      • Database
      • Algorithm
      • Automata
      • Data Privacy
      • Graphics
      • ETC
    • WEB
      • HTTP
      • Application
    • C, C++
    • JAVA
    • Spring
      • JPA
      • MVC
    • AI
    • MySQL
    • PostgreSQL
    • DevOps
      • AWS
      • 대규모 시스템 설계
    • frontend
      • HTML+CSS
    • NextJS
    • TEST
    • Industrial Engineering
    • Soft Skill
    • TIL
      • 2023
      • 2024
    • Linux
    • Git
    • IntelliJ
    • ETC
      • 日本語

블로그 메뉴

  • 홈
  • 깃허브

인기 글

최근 글

태그

  • Composition
  • OOP
  • Java
  • 조합
  • 함수형프로그래밍
  • 상속
  • 람다
  • 우테코5기
  • 람다와스트림
  • 우아한테크코스
  • 우아한테크코스5기
  • Stream
  • 스트림
  • 컴포지션
  • 상속과조합
  • 예외
  • 레벨로그
  • 우테코
  • lamda
  • TDD
hELLO · Designed By 정상우.v4.2.0
깃짱
[OS] CPU Bound VS IO Bound: 스레드는 몇 개가 좋을까?
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.