Amazon EBS 볼륨 성능 - Amazon EBS

Amazon EBS 볼륨 성능

I/O 특성, 인스턴스와 볼륨의 구성 등 여러 가지 요인이 Amazon EBS 볼륨에 영향을 끼칠 수 있습니다. Amazon EBS 및 Amazon EC2 제품 세부 정보 페이지의 지침을 따른다면 일반적으로 우수한 성능을 달성할 수 있습니다. 다만 피크 성능을 달성하려면 조금 조정해야 하는 경우도 있습니다. 벤치마킹 외에도 실제 워크로드의 정보에 따라 성능을 튜닝하여 최적의 구성을 결정하는 것이 좋습니다. EBS 볼륨 작업의 기초를 배운 후에는 필요한 I/O 성능과 그러한 요건에 맞게 Amazon EBS 성능을 향상하기 위한 옵션을 살펴보는 것이 좋습니다.

EBS 볼륨 유형의 성능에 대한 AWS 업데이트는 기존 볼륨에 즉시 적용되지 않을 수 있습니다. 기존 볼륨의 전체 성능을 확인하려면 먼저 볼륨에 대해 ModifyVolume 작업을 수행해야 할 수 있습니다. 자세한 내용은 Amazon EBS 탄력적 볼륨을 사용하여 볼륨 수정 단원을 참조하십시오.

Amazon EBS 성능 팁

이러한 팁은 다양한 사용자 시나리오에서 최적의 EBS 볼륨 성능을 달성하는 방법에 대한 모범 사례를 보여줍니다.

EBS 최적화 인스턴스 사용

EBS 최적화 처리량을 지원하지 않는 인스턴스에서는 네트워크 트래픽이 사용자의 인스턴스와 EBS 볼륨 간 트래픽과 경합할 수 있습니다. EBS 최적화 인스턴스에서는 이 두 유형의 트래픽이 분리되어 있습니다. 일부 EBS 최적화 인스턴스 구성은 추가 요금을 요구하지만(예: C3, R3, M3), 일부는 추가 요금 없이 항상 EBS에 최적화됩니다(예: M4, C4, C5, D2). 자세한 내용은 Amazon EBS 성능 최적화 단원을 참조하십시오.

성능 계산 방법 이해

EBS 볼륨의 성능을 측정할 때는 관련된 측정 단위와 성능 계산 방법을 이해해야 합니다. 자세한 내용은 Amazon EBS I/O 기능 및 모니터링 섹션을 참조하세요.

워크로드 이해

EBS 볼륨의 최대 성능, I/O 작업의 크기와 횟수, 각 작업을 완료하는 데 걸리는 시간은 서로 관련이 있습니다. 이러한 각 요소(성능, I/O 및 지연 시간)는 서로에게 영향을 미치며 애플리케이션마다 다른 요소에 더 민감합니다. 자세한 내용은 EBS 볼륨 벤치마킹 섹션을 참조하세요.

스냅샷에서 볼륨을 초기화하는 경우 성능 저하에 유의

스냅샷에서 생성된 새 EBS 볼륨의 각 데이터 블록에 처음 액세스할 때 지연 시간이 상당히 증가합니다. 다음 옵션 중 하나를 사용하여 이 성능 저하를 방지할 수 있습니다.

  • 볼륨을 프로덕션에 투입하기 전에 각 블록에 액세스합니다. 이 프로세스를 초기화(이전에는 사전 워밍이라고 함)라고 합니다. 자세한 내용은 Amazon EBS 볼륨 초기화 섹션을 참조하세요.

  • 스냅샷에서 빠른 스냅샷 복원을 활성화하여 스냅샷에서 생성된 EBS 볼륨이 생성 시 완전히 초기화되고 모든 프로비저닝된 성능을 즉시 제공하도록 보장합니다. 자세한 내용은 Amazon EBS 빠른 스냅샷 복원 섹션을 참조하세요.

HDD 성능을 저하시킬 수 있는 요인

처리량 최적화 HDD(st1) 또는 콜드 HDD(sc1) 볼륨의 스냅샷을 생성하는 경우, 스냅샷이 진행되는 동안 성능이 볼륨의 기준 값까지 떨어질 수 있습니다. 이 동작은 이러한 볼륨 유형에만 해당합니다. 성능을 제한할 수 있는 다른 요소로는 인스턴스가 지원할 수 있는 수준 이상의 처리량을 구동하는 경우, 스냅샷에서 생성된 볼륨을 초기화하는 동안의 성능 저하, 볼륨에 소량의 랜덤 I/O가 과도하게 많은 경우 등을 들 수 있습니다. HDD 볼륨의 처리량 계산에 관한 자세한 내용은 Amazon EBS 볼륨 유형 섹션을 참조하세요.

애플리케이션이 충분한 I/O 요청을 보내지 않는 경우에도 성능이 영향을 받을 수 있습니다. 볼륨의 대기열 길이와 I/O 크기를 보면 확인할 수 있습니다. 대기열 길이는 애플리케이션에서 볼륨으로 보내는 I/O 요청 중 대기 중인 요청의 수입니다. 일관성을 극대화하기 위해 HDD 지원 볼륨은 1MiB 순차 I/O를 수행하는 동안 4 이상의 대기열 길이(반올림)를 유지해야 합니다. 볼륨의 일관된 성능을 유지하는 방법에 대한 자세한 내용은 Amazon EBS I/O 기능 및 모니터링 섹션을 참조하세요.

st1sc1에서 처리량이 많은 읽기 중심 워크로드의 미리 읽기 향상(Linux 인스턴스에만 해당)

일부 워크로드는 읽기 중심이며 운영 체제 페이지 캐시를 통해(예: 파일 시스템에서) 블록 디바이스에 액세스합니다. 이 경우 최대 처리량을 획득하려면 미리 읽기 설정을 1MiB로 구성하는 것이 좋습니다. 이것은 HDD 볼륨에만 적용되는 블록 디바이스별 설정입니다.

블록 디바이스의 현재 미리읽기 값을 검사하려면 다음 명령을 사용합니다.

[ec2-user ~]$ sudo blockdev --report /dev/<device>

블록 디바이스 정보는 다음 형식으로 반환됩니다.

RO RA SSZ BSZ StartSec Size Device rw 256 512 4096 4096 8587820544 /dev/<device>

보기의 디바이스는 256바이트(기본값)의 미리 읽기 값을 보고합니다. 이 값에 섹터 크기(512바이트)를 곱하면 미리읽기 버퍼의 크기를 구할 수 있습니다(이 경우에는 128KiB). 버퍼 값을 1MiB로 설정하려면 다음 명령을 사용합니다.

[ec2-user ~]$ sudo blockdev --setra 2048 /dev/<device>

첫 번째 명령을 다시 실행해서 현재 미리읽기 설정에 2,048이 표시되는지 확인합니다.

워크로드가 대용량 순차 I/O로 구성된 경우에만 이 설정을 사용합니다. 대부분이 소량 랜덤 I/O로 구성된 경우 이 설정은 실제로 성능을 저하시킵니다. 일반적으로 워크로드의 대부분이 소량 또는 임의 I/O로 구성된 경우 st1 또는 sc1 볼륨보다 범용 SSD(gp2gp3) 볼륨을 사용하는 것이 좋습니다.

최신 Linux 커널 사용(Linux 인스턴스에만 해당)

간접 서술자를 지원하는 최신 Linux 커널을 사용합니다. 현재 세대 EC2 인스턴스뿐만 아니라 Linux 커널 3.8 이상 버전도 모두 이 지원을 제공합니다. 평균 I/O 크기가 44KiB 정도인 경우에는 간접 서술자가 지원되지 않는 인스턴스 또는 커널을 사용 중일 수 있습니다. Amazon CloudWatch 측정치에서 평균 I/O 크기를 도출하는 방법에 관한 내용은 Amazon EBS I/O 기능 및 모니터링 섹션을 참조하세요.

st1 또는 sc1 볼륨의 처리량을 극대화하려면 xen_blkfront.max 파라미터(Linux 커널 버전 4.6 미만) 또는 xen_blkfront.max_indirect_segments 파라미터(Linux 커널 버전 4.6 이상)에 값 256을 적용하는 것이 좋습니다. 해당 파라미터는 OS 부팅 명령줄에서 설정할 수 있습니다.

예를 들어 이전 커널을 사용하는 Amazon Linux AMI에서 /boot/grub/menu.lst의 GRUB 구성에 있는 커널 라인의 끝에 이것을 추가할 수 있습니다.

kernel /boot/vmlinuz-4.4.5-15.26.amzn1.x86_64 root=LABEL=/ console=ttyS0 xen_blkfront.max=256

이후 커널의 경우 명령은 다음과 같을 것입니다.

kernel /boot/vmlinuz-4.9.20-11.31.amzn1.x86_64 root=LABEL=/ console=tty1 console=ttyS0 xen_blkfront.max_indirect_segments=256

이 설정을 적용하려면 인스턴스를 재부팅합니다.

자세한 내용은 반가상화 AMIs에 대해 GRUB 구성을 참조하세요. 다른 Linux 배포판, 특히 GRUB 부트 로더를 사용하지 않는 경우에는 다른 방식으로 커널 파라미터를 조정해야 할 수 있습니다.

EBS I/O 특성에 관한 자세한 내용은 이 주제를 다룬 Amazon EBS: Designing for Performance re:Invent 발표를 참조하세요.

RAID 0을 사용하여 인스턴스 리소스 활용도 극대화

일부 인스턴스 유형은 단일 EBS 볼륨에 대해 프로비저닝할 수 있는 것보다 많은 I/O 처리량을 구동할 수 있습니다. 여러 볼륨을 RAID 0 구성으로 함께 조인하여 이 인스턴스에 사용 가능한 대역폭을 제공할 수 있습니다. 자세한 내용은 Amazon EBS 및 RAID 구성 섹션을 참조하세요.

Amazon CloudWatch를 통한 성능 추적

Amazon Web Services는 Amazon EBS를 통해 보고 분석할 수 있는 Amazon CloudWatch에 대한 성능 지표와 볼륨의 상태를 모니터링하는 데 사용할 수 있는 상태 검사를 제공합니다. 자세한 내용은 Amazon EBS 볼륨 모니터링 단원을 참조하십시오.