IOPS 와 Throughput 그리고 Bandwidth

신동수·2024년 2월 24일
1

Server

목록 보기
5/9

IOPS 란?

IOPS (Input/Output Operation Per Second) 는 초당 처리되는 I/O 의 갯수라고 이해하면 된다.
보통 저장장치의 속도를 나타낼 때의 측정단위이다.
IOPS 가 1000 이라고 하면 1초에 1000 * 블럭크기 만큼의 IO 가 가능하다고 할 수 있다.

Throughput 이란?

디스크가 데이터를 읽고 쓰는 데 걸리는 시간이며, 각 I/O 작업 중에 읽은 정보의 양 이라고 이해하면 된다.

IOPS 계산법

초당 데이터 전송량 = IOPS * 블럭크기(단위 데이터 용량)
IOPS = 초당 데이터 전송량 / 블럭크기(단위 데이터 용량)

여기서 블럭의 크기를 아는것이 중요한 부분이다. 블럭이란 IO 의 최소 단위이다.
Oracle, PostgreSQL, MS-SQL 의 경우 8KB 이며, MySQL, MariaDB 는 16KB 가 기본이다.


8KB * 2000 = 16,000KB = 16,000/1,024 = 15.6MB
1초에 15.6 MB 통신이 가능하다는 이야기가 된다. 이 부분은 인스턴의 타입에 따라 네트워크 대역폭과 EBS 대역폭이 제한이 될 수도 있는 점을 참고 해야한다.

EC2 Instance Type, Spec 설명
EC2 Instance Type, Spec
위 링크에서 각 인스턴스의 네트워크 대역폭과 EBS 의 대역폭을 확인할 수 있음.

Bandwidth 란?


Bandwitdh(대역폭)은 네트워크에서 특정 시간 내에 전송 될 수 있는 데이터의 최대 용량을 의미한다.
네트워크의 대역폭이 높을수록, 한번에 더 많은 데이터가 전송 될 수 있다. 

주의할 점은 대역폭이 네트워크의 실질적인 성능을 나타내지는 않는다는 것이다.
Bandwidth를 'Data speed(속도)' 및 'Data throughput(처리량)'과 혼동해서는 안된다.

Bandwidth와 Throughput의 차이

Throughput은 네트워크에서 초당 실제로 처리되는 패킷의 양을 나타내는 실용적인 지표이다.
반면 Bandwidth은 네트워크에서 잠재적으로 동시에 전송될 수 있는 데이터의 최대치를 나타낸다.

(참고) EBS 최적화를 지원하는 인스턴스 유형

% aws ec2 describe-instance-types \
--query 'InstanceTypes[].{InstanceType:InstanceType,"MaxBandwidth(Mb/s)":EbsInfo.EbsOptimizedInfo.MaximumBandwidthInMbps,MaxIOPS:EbsInfo.EbsOptimizedInfo.MaximumIops,"MaxThroughput(MB/s)":EbsInfo.EbsOptimizedInfo.MaximumThroughputInMBps}' \
--filters Name=ebs-info.ebs-optimized-support,Values=default --output=table

위 명령어를 통해 현재 리전에서 EBS 최적화를 지원하는 인스턴스 유형을 확인할 수 있다.

(참고) EBS 최적화 인스턴스

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ebs-optimized.html

간단정리

  • Throughput의 의미는 MB/s로 한정되지 않는다.
  • 일반적으로 말하는 Throughput (MB/s)은 네트워크 대역폭 측면에서의 데이터 전송률을 의미한다.
  • 스토리지에서의 MB/s는 프론트엔드 또는 백엔드의 채널 용량을 나타내는 대역폭의 사용량을 의미한다.
  • 데이터 전송률/대역폭 사용량 (MB/s)이 일반 블록 스토리지의 성능을 대변하지 않는다.
  • 스토리지의 프론트엔드/백엔드 대역폭을 검증하였다면, MB/s는 성능 지표로서 큰 의미가 없다. (MB/s는 NAS 또는 Backup 성능 지표로 유용하다.)
  • 스토리지의 Throughput은 IOPS로서, 스토리지 성능을 대표한다.
  • IOPS와 Bandwidth로 사용하는 것이 혼선이 적고, 더 정확한 표현이다.
profile
조금씩 성장하는 DevOps 엔지니어가 되겠습니다. 😄

0개의 댓글