[OS] 11. CPU Bound, I/O Bound


CPU Bound

  • CPU Bound 는 프로세스가 진행될 때, CPU 사용 기간이 I/O Waiting 보다 많은 경우다.
  • 주로 행렬 곱이나 고속 연산을 할 때 나타나며 CPU 성능에 의해 작업 속도가 결정된다.

    https://velog.velcdn.com/images%2Fcarrykim%2Fpost%2F5b267c31-7456-4590-9102-354d1f531ea9%2Fimage.png

I/O Bound

  • 반면 I/O Bound 는 프로세스가 진행될 때, I/O Wating 시간이 많은 경우다.
  • 파일 쓰기, 디스크 작업, 네트워크 통신을 할 때 주로 나타나며 작업에 의한 병목(다른 시스템과 통신할 때 나타남)에 의해 작업 속도가 결정된다.

    https://velog.velcdn.com/images%2Fcarrykim%2Fpost%2F14e0a97d-0df8-40f1-a345-e5a57605eef6%2Fimage.png

CPU 성능 향상에 따른 작업 처리 성능

  • CPU 의 성능이 향상되거나 개수가 추가되면 CPU Bound 의 작업 처리 성능이 향상된다.
  • 따라서 성능 향상을 위해 scale-up 이 주로 사용된다.

    https://velog.velcdn.com/images%2Fcarrykim%2Fpost%2F81cc6ea4-b8ec-462a-a2cb-d98c02c6b5cd%2Fimage.png

  • 반면 I/O Bound 의 경우에는 CPU 성능보다 타 시스템과의 병목 부분(I/O Wating)에 큰 영향을 받기 때문에 스레드 개수를 늘리거나 동시성을 활용한다.
  • 따라서 성능 향상을 위해 scale-out을 주로 사용한다.

    https://velog.velcdn.com/images%2Fcarrykim%2Fpost%2F9865edd3-7b1f-474a-9656-3555be1e92d9%2Fimage.png

병렬 프로그래밍 방법 선택

https://velog.velcdn.com/images%2Fcarrykim%2Fpost%2F16b41eb5-c556-48d4-82e5-7b2c0fe70d32%2Fimage.png

  • Multiprocessing
    • multiprocessing 방식은 Multiple processes 를 사용하며 고가용성(CPU) Utilization 과 같은 CPU-bound Application 처리에 적합하다.
    • 10개의 부엌, 10명의 요리사, 10개의 요리
  • Multithreading
    • multithreading 방식은 Single(Multi) process, Multiple threads 를 사용하며 I/O Bound 중에서 빠르게 처리해야하는 Application 에 적합하다.
    • 1개의 부엌, 10명의 요리사, 10개의 요리
  • Async IO
    • Async IO 는 Single process, single thread 를 활용하며 I/O Bound 중 천천히 처리해도 괜찮은 Application 에 적합하다.
    • 1개의 부엌, 1명의 요리사, 10개의 요리
맨 위로 이동 ↑

댓글 남기기