AWS EBS 볼륨 타입은 gp2, gp3, io1, io2, st1, sc1등이 있다.
gp2, gp3, io1, io2는 SSD Volume이고 st1, sc1는 HHD Volume이다
각 볼륨의 성능 차이는 Max IOPS per volume, Max throughput per volume로 구분할 수 있는데,
성능 차이를 나타내는 IOPS와 throughput이 무엇인지 궁금해서 찾아보게 되었다.
Overview
IOPS와 throughput은 저장장치의 성능을 측정하는 기준이다.
최근에는 실제 하드웨어 저장장치보다 클라우드를 저장장치의 사용이 늘면서
IOPS와 throughput의 차이를 이해하는 것이 이상적인 저장 환경을 구축하는 데 중요하게 되었다.
IOPS
IOPS(I/O Operation Per Second)는 저장장치가 1초에 처리할 수 있는 I/O 작업의 개수를 나타낸다.
IOPS를 측정할 때는 I/O 작업의 크기가 중요하다.
위 사진은 gp2와 gp3의 IOPS를 보여준다.
Max IOPS per volume을 보게 되면
각각의 IOPS가 특정 크기의 I/O 작업을 기준으로 측정되었다는 것을 알 수 있다.
(64KiB I/O), (16KiB I/O)
이는, IOPS만 놓고 봤을 때
만약 내 작업이 16KiB보다 작은 I/O 작업이 많은 워크로드라면 왼쪽과 오른쪽이 같은 성능을 낸다고 생각할 수 있다.
반대로 큰 크기의 I/O 작업이 많은 워크로드에서는 왼쪽이 더 좋은 성능을 낸다고 할 수 있다.
따라서 같은 Max IOPS값을 가지더라도 I/O 블럭 크기를 함께 고려해야 한다는 사실을 알 수 있다.
Throughput
Throuhgput은 처리량이다.
특정 시간에 얼마만큼의 데이터를 읽고 쓸 수 있는지를 측정한다.
IOPS와 I/O 블럭 사이즈가 있다면 throughput도 계산해 볼 수 있다.
위의 그림에 있는 값으로 계산해 보면
16,000 IOPS × 64 KiB = 1,024,000 KiB/s = 1,024MiB/s
16,000 IOPS × 16 KiB = 256,000 KiB/s = 256MiB/s
표의 아래에 나타나있는 Max throughput과 같은 걸 알 수 있다.
정리
IOPS와 throughput이 크면 클수록 좋다.
하지만 무작정 큰걸 선택하기보다
자신의 워크로드의 특성과 IOPS값의 기준이 되는 블럭 사이즈를 함께 고려하여 판단하여야 한다.
https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html
https://velog.io/@dongs52/IOPS-%EC%99%80-Throughput-%EA%B7%B8%EB%A6%AC%EA%B3%A0-Bandwidth
https://dev.classmethod.jp/articles/ebs-iops-throughput-how-select-baseline/