Cpu, I/O burst & Cpu, I/O bound 란? 개념정리



1. Cpu & I/O Burst

image

  • Burst
    • Burst는 계속되는 작업을 의미합니다.
  • Cpu burst
    • CPU를 사용하는 구간
    • 프로그램의 수행 중, 연속적으로 CPU를 사용하는 구간
    • CPU만 연속적으로 쓰면서 연산을 실행
    • 프로세스가 CPU에서 일부 코드를 실행하는 데 소비하는 시간
    • CPU burst는 프로세스의 RUNNING 상태를 처리
  • I/O burst
    • I/O를 실행하는 구간
    • 프로그램의 수행 중, I/O작업이 수행되는 동안 block 되는 구간
    • 프로세스가 I/O 요청 완료를 기다리는 데 소비하는 시간
    • I/O burst는 프로세스의 대기 상태를 처리

2. Cpu & I/O Bound

  • Cpu bound application
    • Hash와 같이 CPU를 주로 사용하는 경우
  • I/O bound application
    • 이미지 다운로드와 같이 Data I/O 접근이 많은 경우

3. 테스트 및 팁

  • OS 스케쥴링이 필요한 이유
    • 거의 모든 프로그램에는 CPU 번호를 처리하고 일종의 I/O를 기다리는 교대 주기가 있습니다. (메모리에서 간단한 가져오기도 CPU 속도에 비해 시간이 오래 걸립니다.)
    • 단일 프로세스를 실행하는 간단한 시스템에서는 I/O를 기다리는 데 소요되는 시간이 낭비됩니다.
    • 스케줄링 시스템은 다른 프로세스가 I/O를 기다리는 동안 CPU를 사용할 수 있도록 하여 손실된 CPU 주기를 최대한 활용합니다. 최대한 CPU 자원을 효율적으로 사용하기 위하여 스케줄링을 해야합니다.
  • 스트레스 테스트
    • 예상 TPS 보다 여유롭게
    • Scale-out을 해도 성능이 늘지 않으면 병목을 의심
    • 단일 Latency 가 느리면 코드 문제가 있거나 병목이 있는 것
    • 기대 Latency 를 만족할 때 까지 테스트해보기
  • DB 서버를 하나만 사용하는 경우에 DB 접근이 많은 경우
    • 요청을 처리하는 EC2 서버(WAS = Spring, PHP, Node.js와 같은 Business 처리 서버)의 Instance 개수를 늘린다고 해결되지 않음
    • 이 경우에는 DB 서버 스펙을 올리거나, DB 서버를 늘리는 것이 좋음

reference