Amazon EBS 卷性能 - Amazon EBS

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

Amazon EBS 卷性能

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

AWS EBS 磁碟區類型效能的更新可能不會立即對您的現有磁碟區生效。若要查看較舊磁碟區的完整效能,您需要先對其執行 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 請求的數量。為獲得最大的一致性,當執行 1 MiB 序列 I/O 時,HDD 支援的磁碟區必須保持佇列長度 (四捨五入至最接近的整數) 為 4 或更高。如需確保磁碟區一致效能的詳細資訊,請參閱 Amazon EBS I/O 特性和監控

提高st1sc1 (僅限 Linux 執行個體) 的高輸送量、高讀取量工作負載的預先讀取

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

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

[ec2-user ~]$ 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,請使用下列命令:

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

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

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

使用現代化的 Linux 核心 (僅限 Linux 執行個體)

使用支援間接描述項的現代 Linux 核心。任何 Linux 核心 3.8 及更新版本都具備此支援,如同任何最新 EC2 執行個體。如果您的平均 I/O 大小為 44 KiB 或接近,您可能正在沒有間接描述項的支援下使用執行個體或核心。如需從 Amazon CloudWatch 指標衍生平均 I/O 大小的相關資訊,請參閱。Amazon EBS I/O 特性和監控

若要在 st1sc1 磁碟區上實現最大輸送量,我們建議將 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

將執行個體重新開機以使此設定生效。

如需詳細資訊,請參閱為半虛擬 AMI 設定 GRUB。其他 Linux 發行版本,特別是那些不使用 GRUB 開機載入器的發行版本,則可能需要用不同的方法來調整核心參數。

如需 EBS I/O 特性的詳細資訊,請參閱 Amazon EBS:專為效能設計有關本主題的 re:Invent 簡報。

使用 RAID 0 來最大化執行個體資源的使用率

某些執行個體類型可以驅動比您為單一 EBS 磁碟區佈建的更多 I/O 輸送量。您可以將多個磁碟區一起加入 RAID 0 設定中,以使用這些執行個體的可用頻寬。如需詳細資訊,請參閱 Amazon EBS 和 RAID 組態

使用 Amazon 跟踪性能 CloudWatch

Amazon Web Services 為 Amazon EBS 提供效能指標,您可以使用 Amazon 進行分析和檢視,以 CloudWatch 及可用來監控磁碟區運作狀態的狀態檢查。如需詳細資訊,請參閱 監控您的 Amazon EBS 卷