

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon EBS 磁碟區效能
<a name="ebs-performance"></a>

包括 I/O 特性以及您的執行個體組態和磁碟區在內之幾項因素可能會影響 Amazon EBS 效能。如果您遵循 Amazon EBS 和 Amazon EC2 產品詳細資訊頁面上的指引，通常可以獲得良好的效能。不過，在某些情況下，您可能需要進行一些調校，才能達到尖峰效能。我們建議您使用實際工作負載中的資訊以及衡量指標來調校效能，以決定最佳組態。在了解使用 EBS 磁碟區的基礎知識之後，建議您查看所需的 I/O 效能以及可增加 Amazon EBS 效能的選項來滿足這些要求。

AWS EBS 磁碟區類型效能的更新可能不會立即對您現有的磁碟區生效。若要查看較舊磁碟區的完整效能，您需要先對其執行 `ModifyVolume` 動作。如需詳細資訊，請參閱[使用 Elastic Volumes 操作修改 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>

對於支援的執行個體類型，您可以設定執行個體頻寬加權，使用頻寬加權將 Amazon EBS `ebs-1`頻寬增加 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 請求的數量。為獲得最大的一致性，當執行 1 MiB 序列 I/O 時，HDD 支援的磁碟區必須保持佇列長度 (四捨五入至最接近的整數) 為 4 或更高。如需確保磁碟區一致效能的詳細資訊，請參閱 [Amazon EBS I/O 特性和監控](ebs-io-characteristics.md)。

### 為 `st1`和 `sc1`(*僅限 Linux 執行個體*) 上的高輸送量、高讀取量工作負載增加預先讀取
<a name="read_ahead"></a>

某些工作負載需大量讀取並透過作業系統頁面快取存取區塊型儲存裝置 (例如從檔案系統)。在此情況下，為了達到最大輸送量，我們建議您將預先讀取設定設定為 1 MiB。這是一個每區塊型儲存設備的設定，只應套用於您的 HDD 磁碟區。

若要檢查區塊型儲存設備的目前預先讀取值，請使用下列命令：

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

區塊型儲存設備資訊會以下列格式傳回：

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

所顯示的設備報告預先讀取值為 256 (預設值)。將該數字乘以磁區大小 (512 位元組) 以獲得預先讀取緩衝區的大小，在此情況下為 128 KiB。若要將緩衝區值設定為 1 MiB，請使用下列命令：

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

透過再次執行第一個命令來確認預先讀取設定現在顯示 2,048。

當您的工作負載由大型序列 I/O 組成時，請僅使用此設定。如果主要由小型的隨機 I/O 組成，這個設定則會降低您的效能。一般來說，如果您的工作負載主要由小型或隨機 I/O 組成，則應考慮使用一般用途 SSD (`gp2` 和 `gp3`) 磁碟區，而不是 `st1` 或 `sc1` 磁碟區。

### 使用現代 Linux 核心 (*僅限 Linux 執行個體*)
<a name="ModernKernel"></a>

使用支援間接描述項的現代 Linux 核心。任何 Linux 核心 3.8 及更新版本都具備此支援，如同任何最新 EC2 執行個體。如果您的平均 I/O 大小為 44 KiB 或接近，您可能正在沒有間接描述項的支援下使用執行個體或核心。如需從 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。您可以在作業系統開機命令列中設定適當的參數。

例如，在具有較早核心的 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：專為效能設計](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)。