대부분의 서비스는 Instance로 구성되고 사용자가 직접 관리하는 Instance 중심의 서비스가 Serverless 서비스 보다 많아, Instance 선택시에 고려해야 하는 상황들을 설명합니다.
Instance Type 선정 & Disk Type 용량에 따른 IOPS 요구 사항 선정시 고려 사항
테스트 환경 구성
$sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
$sudo mount -o discard,defaults /dev/sdb /disk-1
$sudo apt update
$sudo apt install -y fio
$sudo mkdir fiotest
$sudo fio --name=write_iops --directory=/disk-1/fiotest --size=10G \
--time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \
--verify=0 --bs=4K --iodepth=64 --rw=randwrite --group_reporting=1
$sudo fio --name=write_iops --directory=/disk-2/fiotest --size=10G \
--time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \
--verify=0 --bs=4K --iodepth=64 --rw=randwrite --group_reporting=1
$sudo fio --name=write_iops --directory=/disk-3/fiotest --size=10G \
--time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \
--verify=0 --bs=4K --iodepth=64 --rw=randwrite --group_reporting=1
$sudo fio --name=read_iops --directory=/disk-1/fiotest --size=1G \
--time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \
--verify=0 --bs=4K --iodepth=64 --rw=randread --group_reporting=1
$sudo fio --name=read_iops --directory=/disk-2/fiotest --size=1G \
--time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \
--verify=0 --bs=4K --iodepth=64 --rw=randread --group_reporting=1
$sudo fio --name=read_iops --directory=/disk-3/fiotest --size=1G \
--time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \
--verify=0 --bs=4K --iodepth=64 --rw=randread --group_reporting=1
테스트 결과표
Instance | 용량 | Type | 쓰기 IOPS | 쓰기 limit | 읽기 IOPS | 읽기 limit |
c2-std-4 | 100G | Standard disk | 278 | 150 | 69 | 75 |
c2-std-4 | 100G | Balanced disk | 2967 | 600 | 2999 | 600 |
c2-std-4 | 100G | SSD disk | 3968 | 3000 | 3996 | 3000 |
c2-std-4 | 1000G | Standard disk | 1496 | 1500 | 766 | 750 |
c2-std-4 | 1000G | Balanced disk | 3967 | 6000 | 3993 | 6000 |
c2-std-4 | 1000G | SSD disk | 3967 | 30000 | 3994 | 30000 |
n2-std-4 | 1000G | Standard disk | 1496 | 1500 | 766 | 750 |
n2-std-4 | 1000G | Balanced disk | 6014 | 6000 | 6059 | 6000 |
n2-std-4 | 1000G | SSD disk | 14910 | 30000 | 15000 | 30000 |
n2-std-32 | 1000G | Standard disk | 1496 | 1500 | 764 | 750 |
n2-std-32 | 1000G | Balanced disk | 6014 | 6000 | 6000 | 6000 |
n2-std-32 | 1000G | SSD disk | 30003 | 30000 | 30004 | 30000 |
- Disk의 성능은 Disk Type + 용량 + Instance Type + vCPU에 영향을 받는다.
- C2 Type은 Disk에 대한 IOPS 성능을 끌어내기 위한 타입이 아니다.
- N2 Type은 vCPU 개수 기준으로 다른 Instance Type 대비 높은 Disk IOPS를 지원한다.
클톡! 경험톡!
1. N2 Type이 좋다.
2. 파랑색 영역의 경우에는 Disk Type 및 Disk 용량과 관계없이 더 높은 IOPS 성능을 냈지만, GCP를 통해서 확인한 결과 언제든지 Limit을 적용할 수 있는 서비스로 보장은 Limit을 기준으로 제공한다고 한다. 일명 보너스 IOPS다... 언제 없어져도 이상하지 않다.
참조
GCP Disk 옵션 (링크)
머신 유형 및 vCPU 개수별 성능 (링크)
디스크 성능 그래프 작성 (링크)
'IT 이야기 > GCP' 카테고리의 다른 글
GCP Instance 선택시 고려사항(Type, 크기, IOPS) (0) | 2022.07.19 |
---|---|
GCP Shared VPC (GCP 공유 VPC 설정 및 고려사항) (0) | 2022.07.06 |
GCP BeyondCorp Enterprise (GCP 콘솔 접근 통제) (0) | 2022.06.19 |
GCP Cloud ID (Cloud Identity) (0) | 2022.06.19 |
GCP Organization 설계 및 개념 (0) | 2022.06.19 |