

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EBS 볼륨 성능
<a name="ebs-performance"></a>

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

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

**Topics**
+ [Amazon EBS 성능 팁](#tips)
+ [Amazon EBS 최적화](ebs-optimization.md)
+ [Amazon EBS 볼륨 초기화](initalize-volume.md)
+ [구성 가능한 인스턴스 대역폭 가중치](instance-bandwidth-configuration.md)
+ [Amazon EBS I/O 기능 및 모니터링](ebs-io-characteristics.md)
+ [Amazon EBS 및 RAID 구성](raid-config.md)
+ [Amazon EBS 볼륨 벤치마킹](benchmark_procedures.md)

## Amazon EBS 성능 팁
<a name="tips"></a>

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

### EBS 최적화 인스턴스 사용
<a name="optimize"></a>

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

### 인스턴스 대역폭 구성
<a name="icb"></a>

지원되는 인스턴스 유형의 경우, `ebs-1` 대역폭 가중치를 사용하여 Amazon EBS 대역폭을 25% 늘리도록 인스턴스 대역폭 가중치를 구성할 수 있습니다. 이 기능을 사용하면 EBS 및 VPC 네트워킹 간에 인스턴스의 네트워크 리소스 할당을 최적화하여 잠재적으로 I/O 집약적 워크로드의 EBS 성능을 개선할 수 있습니다. 자세한 내용은 [구성 가능한 인스턴스 대역폭 가중치](instance-bandwidth-configuration.md) 단원을 참조하십시오.

### 성능 계산 방법 이해
<a name="performance_calculation"></a>

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

### 워크로드 이해
<a name="workload_types"></a>

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

### 스냅샷에서 볼륨을 초기화하는 경우 성능 저하에 유의
<a name="initialize"></a>

스냅샷에서 생성된 새 EBS 볼륨의 각 데이터 블록에 처음 액세스할 때 지연 시간이 상당히 증가합니다. 다음 옵션 중 하나를 사용하여 이 성능 저하를 방지할 수 있습니다.
+ 볼륨을 프로덕션에 투입하기 전에 각 블록에 액세스합니다. 이 프로세스를 *초기화*(이전에는 사전 워밍이라고 함)라고 합니다. 자세한 내용은 [볼륨 생성 후 수동 초기화](initalize-volume.md#ebs-initialize) 섹션을 참조하세요.
+ 스냅샷에서 빠른 스냅샷 복원을 활성화하여 스냅샷에서 생성된 EBS 볼륨이 생성 시 완전히 초기화되고 모든 프로비저닝된 성능을 즉시 제공하도록 보장합니다. 자세한 내용은 [Amazon EBS 빠른 스냅샷 복원](ebs-fast-snapshot-restore.md) 섹션을 참조하세요.

### HDD 성능을 저하시킬 수 있는 요인
<a name="snapshotting_latency"></a>

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

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

### `st1` 및 `sc1`에서 처리량이 많은 읽기 중심 워크로드의 미리 읽기 향상(Linux 인스턴스에만 해당**)
<a name="read_ahead"></a>

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

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

```
$ sudo blockdev --report /dev/<device>
```

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

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

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

```
$ sudo blockdev --setra 2048 /dev/<device>
```

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

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

### 최신 Linux 커널 사용(Linux 인스턴스에만 해당**)
<a name="ModernKernel"></a>

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

`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 구성](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html#configuringGRUB)을 참조하세요. 다른 Linux 배포판, 특히 GRUB 부트 로더를 사용하지 않는 경우에는 다른 방식으로 커널 파라미터를 조정해야 할 수 있습니다.

EBS I/O 특성에 관한 자세한 내용은 이 주제를 다룬 [Amazon EBS: Designing for Performance](https://www.youtube.com/watch?v=2wKgha8CZ_w) re:Invent 발표를 참조하세요.

### RAID 0을 사용하여 인스턴스 리소스 활용도 극대화
<a name="RAID"></a>

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

### Amazon EBS 볼륨 성능 모니터링
<a name="cloudwatch"></a>

Amazon CloudWatch, 상태 확인 및 EBS 세부 성능 통계를 사용하여 Amazon EBS 볼륨의 성능을 모니터링하고 분석할 수 있습니다. 자세한 내용은 [Amazon EBS에 대한 Amazon CloudWatch 지표](using_cloudwatch_ebs.md) 및 [Amazon EBS 세부 성능 통계](nvme-detailed-performance-stats.md) 섹션을 참조하세요.