SC1 또는 ST1 EBS 볼륨이 정격 처리량 성능을 달성하지 못하는 이유는 무엇인가요?

3분 분량
0

ST1 또는 SC1 Amazon Elastic Block Store(Amazon EBS) 볼륨이 AWS 설명서에 표시된 처리량 성능에 도달하지 못합니다. 이 이유가 무엇인가요?

간략한 설명

HDD Amazon EBS 볼륨(예: SC1, ST1)을 사용하는 경우 다음을 따릅니다.

  • 이러한 볼륨은 인스턴스의 워크로드가 사용한 실제 I/O 크기와 관계없이 항상 1024KiB I/O 토큰을 사용합니다. 애플리케이션 워크로드의 실제 I/O 크기가 16KiB로 설정되어 있더라도 볼륨은 여전히 I/O 토큰의 전체 1024KiB 크기를 사용합니다. 이렇게 하면 토큰 공간의 대부분을 낭비하게 됩니다. 효율성을 극대화하려면 1024KiB 전체를 채우도록 합니다.
  • 순차적 워크로드의 I/O 크기가 32KiB보다 클 경우 Amazon EBS는 항상 I/O를 1024KiB의 단일 I/O 작업으로 병합합니다. 이 병합은 전체 토큰 크기를 채웁니다.
  • I/O 크기가 32KiB보다 작거나 워크로드가 무작위인 경우 Amazon EBS는 I/O를 1024KiB로 병합하지 않습니다. 그러나 Amazon EBS는 여전히 전체 1024KiB 토큰 크기를 사용합니다. 이렇게 하면 토큰 내부의 대부분의 공간이 비어 있게 됩니다. I/O가 병합되지 않으므로 인스턴스는 동일한 양의 데이터를 볼륨에 전송하는 IOPS를 더 많이 사용합니다. 이로 인해 처리량이 기준 값 미만인 경우에도 버스트 밸런스가 감소합니다.

해결 방법

ST1 및 SC1 EBS 볼륨이 최대 정격 처리량에 도달하도록 설정하려면 다음을 수행합니다.

  • 32KiB보다 큰 I/O 크기를 사용하도록 애플리케이션을 설정합니다.
  • 애플리케이션이 순차적 워크로드를 사용하는지 확인합니다.

처리량을 계산할 때 다음 공식을 사용하세요.

처리량 = I/O 크기* IOPS

I/O 크기가 32KiB보다 작으면 볼륨이 IOPS 제한에 도달하여 처리량을 제한합니다. 이 경우 볼륨은 정격 처리량 성능을 달성하지 못합니다.

예를 들어 I/O 크기를 16KiB로 설정하고 3Mib/s의 데이터를 전송하면 다음과 같은 결과가 발생합니다.

3MiB/초/16KiB = 192 IOPS

순차적/연속 워크로드가 있는 I/O 크기를 32KiB로 설정하면 Amazon EBS가 1024KiB로 병합됩니다. 이 경우 Amazon은 다음 계산에 표시된 것처럼 3 IOPS만 전송합니다.

3MiB/초/1024Kib = 3 IOPS

ST1 볼륨의 0.5 TiB(500 GiB)를 사용한다고 가정합니다. 이 볼륨이 이상적으로 제공하는 기준 처리량 성능은 20Mib/초이며 최대 125Mib/초까지 버스트할 수 있습니다.

볼륨이 125MiB/s 단위로 버스트 되고 애플리케이션 I/O 크기가 1024KiB인 경우 이론적 최대 IOPS는 125 IOPS입니다.

처리량 / IO 크기 = 125MiB/초 / 1024 KiB = 125 IOPS.

그러나 응용 프로그램에서 16KiB의 I/O 크기를 사용하는 경우 3MiB의 데이터를 전송하면 192 IOPS가 사용됩니다. 볼륨이 이론적으로 최대 125 IOPS를 달성하므로 애플리케이션은 192 IOPS를 푸시할 수 없습니다. 이 경우 볼륨은 IOPS를 125로 조절합니다. 이 시나리오에서는 실제 처리량은 다음과 같습니다.

실제 처리량 = 16 KiB * 125 = 1.95 MiB/초

위의 계산에서 볼 수 있듯이 IOPS는 125 IOPS로 제한되므로 Amazon EBS는 처리량을 1.95Mib/초로 제한합니다. 애플리케이션에서 1024KiB I/O 크기를 사용한 경우 볼륨의 버스트 가능한 이론적 처리량이 125 IOPS인 경우에도 이러한 제한이 발생합니다.


관련 정보

I/O 특성 및 모니터링

Amazon EBS 볼륨 유형

AWS 공식
AWS 공식업데이트됨 2년 전