1. 程式人生 > 實用技巧 >fio測試磁碟效能

fio測試磁碟效能

引數說明FIO

yum install -y libaio libaio-devel 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
  • 隨機寫時延:
    fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=iotest -name=Rand_Write_Latency_Testing
  • 隨機讀時延:
    fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=iotest -name=Rand_Read_Latency_Testing

引數說明

引數說明
-direct=1 表示測試時忽略I/O快取,資料直寫。
-iodepth=128 表示使用非同步I/O(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的塊檔案大小為4KiB。預設值也是4KiB。
  • 測試IOPS時,建議將bs設定為一個較小的值,如4k。
  • 測試吞吐量時,建議將bs設定為一個較大的值,如1024k。
-size=1G 表示測試檔案大小為1GiB。
-numjobs=1 表示測試執行緒數為1。
-runtime=1000 表示測試時間為1000秒。如果未配置,則持續將前述-size指定大小的檔案,以每次-bs值為分塊大小寫完。
-group_reporting 表示測試結果裡彙總每個程序的統計資訊,而非以不同job彙總展示資訊。
-filename=iotest 指定測試檔案的名稱,例如iotest。
-name=Rand_Write_Testing 表示測試任務名稱為Rand_Write_Testing,可以隨意設定。