aws 의 EC2 인스턴스에 연결하여 사용하는 EBS(disk) 의 경우 기존에 gp2 만 존재 했었다.
이번 reinvent 2020 에서 발표된 gp3가 기존 gp2가 어떤 부분이 다른지 확인을 해본다.
가격테이블(리전: Seoul/ap-northeast-2)
gp2 GB / month | gp3 GB / month | gp3 IOPS( 1 ) | gp3 Throughput( 1 MiB ) |
|
---|---|---|---|---|
가격 | US$ 0.114 | US$ 0.912 | US$ 0.0057 | US$ 0.0456 |
크기 | 1 ~ 16384 GB | 1 ~ 16384 GB | ||
IOPS | 100 ~ 16000 disk 크기에 따른 자동조정 | 3000 ~ 16000 기본값 3000 이상 옵션 과금 제한 DISK크기 1MB : 500 IOPS |
||
Throughput | 125 ~ 250 MiB disk 크기에 따른 자동조정 | 125 ~ 1000 MiB 기본값 125 이상 옵션 과금 제한 4 IOPS : Throughput 1 MiB |
gp2 에서는 IOPS 가 34GB ~ 5334GB 에서 디스크 자동 조정이 되었고, Throughput 의 경우 168 GB ~ 334 GB 에서 자동 조정이 되었다.
모든 경우값을 다 대입 할순 없겠지만 엑셀로 정리했을때 아래와 같다.
상위 표중 gp3 max speed 는 최대의 IOPS 및 Throughput 으로 하게 되며 디스크 크기에 따라아래와 같이 속도가 제한 되었다.
8GB = 4000 IOPS, Throughput 750 MiB
30GB = 15000 IOPS, , Throughput 1000 MiB(max)
기본적인 가격은 낮아졌기 때문에 gp2 보다는 gp3 를 선택해서 사용 하는게 이익이다.
다만 단순히 TYPE 만 변경 하게 될 경우 속도 상에서 기존 gp2에 비해 느릴 수 있겠다. 때문에 적절히 IOPS 와 Throughput 을 적용하는것이 좋겠다.
그래프로 그려봤을땐 아래와 같다.
좀더 현실적으로 많이 사용할 500GB 까지의 그래프는 아래와 같다.
gp2 에서 gp3 으로의 이행을 할 경우 성능 조정 없이 사용할 경우 사용료가 20% 절약이 된다.
gp2 -> gp3 로의 볼륨 수정은 서버가 running 상태에서도 변경이 가능하다. (다만 optimizing 시간이 좀 길게 느껴진다)
볼륨 타입 조정 할때 Linux 서버내에서의 성능 테스트를 진행하였다.
Linux 에서의 IO 테스트 방법 1
1 2 3 4 |
~]# dd if=/dev/zero of=test bs=16k count=10000 oflag=direct && rm -f test ~]# dd if=/dev/zero of=test bs=1M count=1024 oflag=direct && rm -f test |
Linux 에서의 IO 테스트 방법 2
1 2 |
~]# hdparm --direct -t -T /dev/nvme0n1p1 |
dd ( 16k / 10000 times) | dd ( 1M / 1000 times ) | hdparm | ||
---|---|---|---|---|
12GB | gp2 100 IOPS 125MiB (추정) | 29.5 MB/s | 154 MB/s | cached: 191.81 MB/sec disk: 170.53 MB/sec |
gp3 | ||||
120GB | gp2 - 360 IOPS 125MiB (추정) | 28.8 MB/s | 153 MB/s | cached: 191.71 MB/sec disk: 170.58 MB/sec |
gp3 3000 IOPS 125 MiB | 16.0 MB/s | 149 MB/s | cached: 187.42 MB/sec disk: 166.60 MB/sec |
|
500GB | gp2 IOPS 1500 250MiB (추정) | 34.3 MB/s | 347 MB/s | cached: 375.03 MB/sec disk: 333.46 MB/sec |
gp3 | ||||
1024GB | gp2 IOPS 3072 250MiB (추정) | 30.9 MB/s | 345 MB/s | cached: 374.96 MB/sec disk: 333.50 MB/sec |
gp3 | ||||
2048GB | gp2 IOPS 6144 250MiB (추정) | 28.0 MB/s | 347 MB/s | cached: 375.04 MB/sec disk: 333.22 MB/sec |
gp3 |
테스트 예측으로는 같은 값이 나와야 한다.
gp2의 경우 버스트 잔고라는게 적재가 되고 적재된 버스트 잔고가 0이 될때 까지는 iops 가 3000 까지 쓸 수 있다. 이후에는 설정된 100 이라든가 300이라든가로 제한 된다.
하지만 예측과 다르게 테스트 결과 16k 생성 속도가 떨어졌다. (초기 8.1 Mbps 까지 떨어졌지만 추후 테스트 에서 16Mbps 으로 향상됨.)
바로 변경한 사람이 벌써 꽤나 된것으로 보아 붐비는 것일 수도 있고 하니 몇일 뒤 마저 테스트 해봐야 겠다 @_@a
Block Size | 16kB | 32kB | 64kB |
---|---|---|---|
Bps | 16.0 MB/s | 31.6 MB/s | 62.4 MB/s |
Block Size | 128kB | 256kB | 512kB |
---|---|---|---|
Bps | 106 MB/s | 135 MB/s | 150 MB/s |
블럭 사이즈에 비례 하게 속도가 늘어난다 @_@a