Amazon EBS는 gp2 또는 io1 볼륨의 성능을 높이기 위해 사용해야 하는 최적의 I/O 크기를 어떻게 계산합니까?

최종 업데이트 날짜: 2020년 6월 8일

gp2 또는 io1 Amazon Elastic Block Store(Amazon EBS) 볼륨의 처리 성능을 높이려고 합니다. Amazon EBS는 성능을 높이기 위해 사용해야 하는 최적의 I/O 크기를 어떻게 계산합니까?

​해결 방법

gp2 및 io1 EBS 볼륨의 경우 Amazon EBS는 초당 입/출력(IOPS)을 기준으로 성능을 계산합니다. gp2 및 io1 볼륨은 최대 256KiB의 I/O를 처리할 수 있습니다.

I/O 작업의 크기에 따라 EBS 볼륨이 제공할 수 있는 처리량이 결정됩니다. Amazon EBS는 처리량 = IOPS 수 * I/O 작업당 크기 등식을 사용하여 처리량을 계산합니다.

I/O 작업당 크기는 볼륨 유형에 따라 다릅니다.

  • gp2 볼륨
    최대 IOPS = 16,000
    최대 처리량 = 250MiB
  • io1 볼륨
    최대 IOPS = 64,000
    최대 처리량 = 1,000MiB

참고: Amazon EBS는 Nitro 기반 인스턴스에서만 1,000MiB/s의 최대 처리량을 보장합니다. 다른 인스턴스 패밀리는 최대 500MiB/s를 보장합니다. ModifyVolume 작업을 수행할 때까지 이전 io1 볼륨이 최대 성능을 발휘하지 못할 수 있습니다.

Amazon EBS는 처리량/IOPS 수 = 최적의 I/O 크기 등식을 사용하여 최적의 I/O 크기를 계산합니다.

  • gp2 볼륨 최적 I/O 크기: 250MiB* 1,024/16,000 = 16KiB
  • io1 볼륨 최적 I/O 크기: 1,000MiB* 1,024/64,000 = 16KiB

Amazon EBS는 처리하기 전에 32KiB 이상의 작은 순차 I/O 작업을 병합하여 256KiB의 단일 I/O를 구성합니다. 작은 순차 I/O 작업을 더 큰 단일 I/O 작업으로 병합하면 처리량이 증가합니다.

예를 들어 애플리케이션이 32KiB의 작은 I/O 작업을 수행하는 경우:

  • 순차 작업: Amazon EBS가 순차(물리적으로 연속된) 작업을 최대 256KiB의 I/O 크기로 병합합니다. 이 시나리오에서는 Amazon EBS가 1개의 IOPS만 계산하여 운영 체제에서 제출한 8개의 I/O 작업을 수행합니다.
  • 랜덤 작업: Amazon EBS가 랜덤 I/O 작업을 개별적으로 계산합니다. 32KiB의 단일 랜덤 I/O 작업이 1개의 IOPS로 계산됩니다. 이 시나리오에서 Amazon EBS는 8개의 랜덤 32KiB I/O 작업을 OS에서 제출한 8개의 IOPS로 계산합니다.

Amazon EBS는 더 작은 I/O 작업을 더 많은 I/O 대역폭을 사용하는 더 큰 작업에 병합하려고 시도하므로 최대 IOPS가 달성되기 전에 처리량 한도에 도달할 수 있습니다. 이를 방지하려면 애플리케이션의 I/O 작업은 Amazon EBS가 16KiB의 단일 IOPS로 계산할 수 있을 만큼 무작위적이어야 합니다.

Amazon EBS는 최대 256KiB보다 큰 I/O 작업을 더 작은 작업으로 분할합니다. 예를 들어 I/O 크기가 500KiB인 경우 Amazon EBS는 작업을 2개의 IOPS로 분할합니다. 첫 번째 값은 256KiB이고 두 번째 값은 244KiB입니다.

참고: 간접 서술자를 지원하지 않는 인스턴스 또는 커널의 평균 I/O 크기는 44KiB 정도입니다. Linux 커널 3.8 이하에서는 간접 서술자를 지원하지 않으므로 I/O 크기가 최대 44KiB일 수 있습니다.