[분산 시스템] 2-3. CPU Bound & I/O Bound

gimseonjin616·2022년 1월 11일
5

분산시스템

목록 보기
13/14

CPU Bound vs I/O Bound

CPU Bound

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

I/O Bound

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

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

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

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

병렬 프로그래밍 방법 선택

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개의 요리

profile
to be data engineer

0개의 댓글