本文描述了區塊存放裝置效能的重要指標、不同區塊存放裝置類型的效能、效能測試方式和結果解讀。
衡量指標
衡量區塊存放裝置產品的效能指標主要包括:IOPS、輸送量和訪問時延。
IOPS是Input/Output Operations per Second,即每秒能處理的I/O個數,用於表示區塊存放裝置處理讀寫(輸出/輸入)的能力。如果要部署事務密集型應用,典型場景比如資料庫類業務應用,需要關注IOPS效能。
最普遍的IOPS效能指標是順序操作和隨機操作,如下表所示。
IOPS效能指標 | 描述 | |
---|---|---|
總 IOPS | 每秒執行的I/O操作總次數。 | |
隨機讀IOPS | 每秒執行的隨機讀I/O操作的平均次數 | 對硬碟儲存位置的不連續訪問。 |
隨機寫IOPS | 每秒執行的隨機寫I/O操作的平均次數 | |
順序讀IOPS | 每秒執行的順序讀I/O操作的平均次數 | 對硬碟儲存位置的連續訪問。 |
順序寫IOPS | 每秒執行的順序寫I/O操作的平均次數 |
輸送量是指單位時間內可以成功傳輸的資料數量。
如果要部署大量順序讀寫的應用,典型場景比如Hadoop離線計算型業務,需要關注輸送量。
訪問時延是指區塊存放裝置處理一個I/O需要的時間。
如果您的應用對時延比較敏感,比如資料庫(過高的時延會導致應用效能下降或報錯),建議您使用SSD雲端碟、SSD共用區塊存放裝置或本地SSD盤類產品。
如果您的應用更偏重儲存吞吐能力,對時延相對不太敏感,比如Hadoop離線計算等吞吐密集型應用,建議您使用本地HDD盤類產品,如d1或d1ne大資料型執行個體。
效能
以下是不同區塊存放裝置產品的效能對比表。
參數 | SSD雲端碟 | 高效雲端碟 | 普通雲端碟 |
---|---|---|---|
單盤最大容量 | 32768 GiB | 32768 GiB | 2000 GiB |
最大IOPS | 25000* | 5000 | 數百 |
最大輸送量 | 300 MBps* | 140 MBps | 30−40 MBps |
單盤效能計算公式** | IOPS = min{1800 + 30 * 容量, 25000} | IOPS = min{1800 + 8 * 容量, 5000} | 無 |
輸送量 = min{120 + 0.5 * 容量, 300} MBps | 輸送量 = min{100+ 0.15 * 容量, 140} MBps | 無 | |
資料可靠性 | 99.9999999% | 99.9999999% | 99.9999999% |
API名稱 | cloud_ssd | cloud_efficiency | cloud |
典型應用場景 |
|
|
|
* SSD雲端碟的效能因資料區塊大小而異,資料區塊越小,輸送量越小,IOPS越高,如下表所示。只有掛載到I/O優化的執行個體時,SSD雲端碟才能獲得期望的IOPS效能。掛載到非I/O優化的執行個體時,SSD雲端碟無法獲得期望的IOPS效能。
資料區塊大小 | IOPS最大值 | 輸送量 |
---|---|---|
4 KiB | 約25000 | 很小,遠低於300 MBps |
16 KiB | 約17200 | 將近300 MBps |
32 KiB | 約9600 | |
64 KiB | 約4800 |
** 單盤效能計算公式說明:
- 以單塊SSD雲端碟最大IOPS計算公式為例說明:起步1800 IOPS,每GiB增加30 IOPS,最高25000 IOPS。
- 以單塊SSD雲端碟最大輸送量計算公式為例說明:起步120 MBps,每GiB增加0.5 MBps,上限為 300 MBps的輸送量。
不同雲端碟的單路隨機寫訪問時延如下:
- SSD雲端碟:0.5−2 ms
- 高效雲端碟:1−3 ms
- 普通雲端碟:5−10 ms
2種共用區塊存放裝置的效能對比如下表所示。
參數 | SSD共用區塊存放裝置 | 高效共用區塊存放裝置 |
---|---|---|
最大容量 |
|
|
最大隨機讀寫IOPS* | 30000 | 5000 |
最大順序讀寫輸送量* | 512 MBps | 160 MBps |
單盤效能計算公式** | IOPS = min{1600 + 40 * 容量, 30000} | IOPS = min{1000 + 6 * 容量, 5000} |
輸送量 = min{100 + 0.5 * 容量, 512} MBps | 輸送量 = min{50 + 0.15 * 容量, 160} MBps | |
典型應用場景 |
|
|
* 最大IOPS和輸送量是在2個或2個以上執行個體同時壓測裸裝置能達到的效能數值。
** 單盤效能計算公式說明:
- 以單塊SSD共用區塊存放裝置最大IOPS計算公式為例:起步1600 IOPS,每GiB增加40 IOPS,最高30000 IOPS。
- 以單塊SSD共用區塊存放裝置最大輸送量計算公式為例:起步100 MBps,每GiB增加0.5 MBps,上限為512 MBps的輸送量。
不同共用區塊存放裝置的單路訪問時延如下:
- SSD共用區塊存放裝置:0.5−2 ms
- 高效共用區塊存放裝置:1−3 ms
本地盤的效能資訊,請參考 本地碟。
效能測試
根據ECS執行個體的作業系統不同,您可以使用不同的工具測試區塊存放裝置效能:
- Linux執行個體:可以使用DD、fio或sysbench等工具測試區塊存放裝置效能。
- Windows執行個體:可以使用fio、Iometer等工具測試區塊存放裝置效能。
说明 | |
在不同作業系統環境中,不同工具測試出來的硬碟基準效能會有差異。本文中所描述的績效參數,均為Linux執行個體下採用fio工具的測試結果,以此作為區塊存放裝置產品效能指標參考。 |
本文以Linux執行個體和fio為例,說明如何使用fio測試區塊存放裝置效能。在進行測試前,請確保區塊存放裝置裝置已經4 KiB對齊。
警告 | |
測試裸盤可以獲得真實的區塊存放裝置盤效能,但直接測試裸盤會破壞檔案系統結構,請在測試前提前做好資料備份。建議您只在新購無資料的ECS執行個體上使用工具測試區塊存放裝置效能,避免造成資料丟失。 |
-
測試隨機寫IOPS,運行以下命令:
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing
-
測試隨機讀IOPS,運行以下命令:
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing
-
測試順序寫輸送量,運行以下命令:
fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing
-
測試順序讀輸送量,運行以下命令:
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing
下表以測試隨機寫IOPS的命令為例,說明命令中各種參數的含義。
參數 | 說明 |
---|---|
-direct=1 | 表示測試時忽略I/O緩存,資料直寫。 |
-iodepth=128 | 表示使用AIO時,同時發出I/O數的上限為128。 |
-rw=randwrite | 表示測試時的讀寫策略為隨機寫(random writes)。作其它測試時可以設定為:
|
-ioengine=libaio | 表示測試方式為libaio(Linux AIO,非同步I/O)。應用程式使用I/O通常有兩種方式:
|
-bs=4k | 表示單次I/O的塊檔案大小為4 KB。未指定該參數時的預設大小也是4 KB。 測試IOPS時,建議將 測試輸送量時,建議將 |
-size=1G | 表示測試檔案大小為1 GiB。 |
-numjobs=1 | 表示測試線程數為1。 |
-runtime=1000 | 表示測試時間為1000秒。如果未配置,則持續將前述-size 指定大小的檔案,以每次-bs 值為分塊大小寫完。 |
-group_reporting | 表示測試結果裡匯總每個進程的統計資訊,而非以不同job匯總展示資訊。 |
-filename=iotest | 指定測試檔案的名稱,比如iotest。測試裸盤可以獲得真實的硬碟效能,但直接測試裸盤會破壞檔案系統結構,請在測試前提前做好資料備份。 |
-name=Rand_Write_Testing | 表示測試工作名稱為Rand_Write_Testing,可以隨意設定。 |