使用FIO工具測試塊存儲性能


 

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

 
說明 您也可以使用其他工具測試塊存儲性能,但不同工具測試出來的硬盤基准性能會有差異,如dd、sysbench、iometer等工具可能會受到測試參數配置和文件系統影響,難以反映真實的磁盤性能。

本文以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)。作其它測試時可以設置為:
  • 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,可以隨意設定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM