TIL

23.10.26

오잉머신 2023. 10. 27. 01:33

1. 리팩토링 미션 3단계

3단계 요구사항 완료!

2단계 리뷰 반영&답변은 내일 해야지..

 

이렇게 의존성 그림 그려가며 했다!

 

2. CPU bound, IO bound

📍 CPU bound & IO bound

  • CPU : 프로세스의 명령어를 해석하고 실행하는 장치
  • IO
    • 파일을 읽고 쓰거나
    • 네트워크의 어딘가와 데이터를 주고 받는것
    • 입출력 장치와 데이터를 주고 받는것
  • 버스트 (burst) : 어떤 현상이 짧은 시간내에 집중적으로 일어나는 일
  • CPU burst : 프로세스가 cpu에서 한번에 연속적으로 실행되는 시간
    • 메모리에 올라가있는 프로세스가 자신의 차례가 되어서 자신의 명령어들이 cpu에서 연속적으로 실행되는 시간
    • 대부분의 프로세스는 cpu burst가 8ms이내이다
  • IO burst : 프로세스가 IO작업을 요청하고 결과를 기다리는 시간

  • CPU bound 프로세스 : CPU burst가 많은 프로세스 (연산많음)
    • ex) 동영상 편집 프로그램, 머신러닝 프로그램
  • IO bound 프로세스 : IO burst가 많은 프로세스
    • ex) (일반적인) 백엔드 api 서버
      • db서버나 캐시서버에 데이터를 요청하는 작업이 io
      • 이 io작업은 네트워크를 타기때문에 cpu에서 명령어를 처리하는 것보다 훨씬 오래걸림

📍 CPU bound 프로그램과 스레드 수

왜? 컨텍스트 스위칭 때문에

컨텍스트 스위칭은 프로세스의 작동과 관련없는 불필요한 오버헤드 (컨텍스트 스위칭만을 위해 cpu를 잡아먹음) -> cpu 낭비

 

컨텍스트 스위칭이 발생하지 않기 때문에 불필요한 오버헤드x

 

=> cpu bound 프로그램을 구현할 때는 스레드 개수를 코어만큼만 두는게 좋다~ (또는 코어개수+1)

 

📍 IO bound 프로그램과 스레드 수

가이드라인 없다. 여러 상황에 맞춰서 찾아야 한다.

물론 cpu코어수보다는 많은 스레드를 둬도 된다.

 

 

 

기타