塊存儲性能

性能指標

衡量塊存儲產品的性能指標主要包括:IOPS、吞吐量和訪問時延。html

  • IOPS數據庫

    IOPS是Input/Output Operations per Second,即每秒能處理的I/O個數,用於表示塊存儲處理讀寫(輸出/輸入)的能力。若是要部署事務密集型應用,典型場景好比數據庫類業務應用,須要關注IOPS性能。緩存

    最廣泛的IOPS性能指標是順序操做和隨機操做,以下表所示。併發

     
    IOPS性能指標 描述
    總 IOPS 每秒執行的I/O操做總次數。
    隨機讀IOPS 每秒執行的隨機讀I/O操做的平均次數 對硬盤存儲位置的不連續訪問。
    隨機寫IOPS 每秒執行的隨機寫I/O操做的平均次數
    順序讀IOPS 每秒執行的順序讀I/O操做的平均次數 對硬盤存儲位置的連續訪問。

 

  • 吞吐量dom

    吞吐量是指單位時間內能夠成功傳輸的數據數量。異步

    若是要部署大量順序讀寫的應用,典型場景好比Hadoop離線計算型業務,須要關注吞吐量。工具

  • 訪問時延oop

    訪問時延是指塊存儲處理一個I/O須要的時間。性能

    若是您的應用對時延比較敏感,好比數據庫(太高的時延會致使應用性能降低或報錯),建議您使用ESSD雲盤、SSD雲盤、SSD共享塊存儲或本地SSD盤類產品。測試

    若是您的應用更偏重存儲吞吐能力,對時延相對不太敏感,好比Hadoop離線計算等吞吐密集型應用,建議您使用本地HDD盤類產品,如d1或d1ne大數據型實例。

性能對比

如下是不一樣塊存儲產品的性能對比表。

塊存儲按照二進制單位計算,單位爲GiB、KiB、TiB或者MiB。
 
 安裝 fio libaio
# 阿里雲yum源

yum -y  install libaio-devel  fio

 

 

性能測試

Linux實例和Windows實例都推薦使用FIO工具進行測試塊存儲性能。

說明 您也可使用其餘工具測試塊存儲性能,但不一樣工具測試出來的硬盤基準性能會有差別,如dd、sysbench、iometer等工具可能會受到測試參數配置和文件系統影響,難以反映真實的磁盤性能。本文中所描述的性能參數,均爲Linux實例下采用FIO工具的測試結果,以此做爲塊存儲產品性能指標參考。

 

測試隨機寫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

 

-direct=1 表示測試時忽略I/O緩存,數據直寫。
-iodepth=128 表示使用AIO時,同時發出I/O數的上限爲128。
-rw=randwrite 表示測試時的讀寫策略爲隨機寫(random writes)。做其它測試時能夠設置爲:
  • randread(隨機讀random reads)
  • read(順序讀sequential reads)
  • write(順序寫sequential writes)
  • randrw(混合隨機讀寫mixed random reads and writes)
-ioengine=libaio 表示測試方式爲libaio(Linux AIO,異步I/O)。應用程序使用I/O一般有兩種方式:
  • 同步

    同步的I/O一次只能發出一個I/O請求,等待內核完成才返回。這樣對於單個線程iodepth老是小於1,可是能夠透過多個線程併發執行來解決。一般會用16−32根線程同時工做將iodepth塞滿。

  • 異步

    異步的I/O一般使用libaio這樣的方式一次提交一批I/O請求,而後等待一批的完成,減小交互的次數,會更有效率。

-bs=4k

表示單次I/O的塊文件大小爲4 KB。未指定該參數時的默認大小也是4 KB。

測試IOPS時,建議將bs設置爲一個比較小的值,如本示例中的4k。

測試吞吐量時,建議將bs設置爲一個較大的值,如本示例中的1024k。

-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,能夠隨意設定。

 

 

摘錄: https://help.aliyun.com/document_detail/25382.html?spm=5176.diskbuyv3.cloudDisk.1.5e903675IyKvEd

            https://support.huaweicloud.com/productdesc-evs/zh-cn_topic_0044524691.html

相關文章
相關標籤/搜索