磁盤性能測試方法


在進行下列測試前,請確保磁盤已經 4K 對齊。
什么是4K對齊?
4k對齊是硬盤分區中的一個專業術語,4K對齊就是符合4K扇區定義格式化過的硬盤,並且按照4K扇區的規則寫入數據。一般來說,在給固態硬盤進行分區的時候,一定要勾選上4K對齊,否則會影響到SSD固態硬盤的性能與壽命。
通俗的說,如果SSD不進行4K對齊,寫入數據的寫入點正好會介於兩個4K扇區的之間,也就是說即使是寫入最小量的數據,也會使用到兩個4K扇區,這樣會造成跨區讀寫,讀寫次數放大,從而影響磁盤性能。此外SSD的壽命也是大家比較關心的,經常跨區讀寫的SSD最終能用多久也可想而知了。
早期的硬盤一個扇區的大小是512個字節,后來隨之磁盤容量的不斷增加和讀寫效率提升的要求,國際硬盤協會制定了全新標准,將每個扇區的大小調整為4096個字節,也就是4KB,這種扇區又叫4K扇區。4K對齊指的就是對磁盤分區時,讓分區的起始扇區位於某一個4K扇區的起始位置。

  • 測試隨機寫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=64k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing
  • 測試讀吞吐量
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=64k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing

** 上述測試時 fio 相關參數說明:**

參數 說明
-direct=1 測試時忽略 IO 緩存,數據直寫。
-rw=randwrite 測試時的讀寫策略,可選值 randread (隨機讀)、 randwrite(隨機寫)、 read(順序讀)、 write(>順序寫)、 randrw (混合隨機讀寫)。
-ioengine=libaio 測試方式使用 libaio (Linux AIO,異步 IO)。 應用使用 IO 通常有二種方式:同步和異步。>同步的 IO 一次只能發出一個 IO 請求,等待內核完成才返回。這樣對於單個線程 iodepth 總是小於 1,但是可以透過多個>線程並發執行來解決。通常會用 16-32 根線程同時工作把 iodepth 塞滿。 異步則通常使用 libaio 這樣的方式一次提交一>批 IO 請求,然后等待一批的完成,減少交互的次數,會更有效率。
-bs=4k 單次 IO 的塊文件大小為 4k。未指定該參數時的默認大小也是 4k。
-size=1G 測試文件大小為 1G。
-numjobs=1 測試線程數為 1。
-runtime=1000 測試時間為 1000 秒。如果未配置則持續將前述 -size 指定大小的文件,以每次 -bs 值為分塊大小寫完。
-group_reporting 測試結果顯示模式,group_reporting 表示匯總每個進程的統計信息,而非以不同 job 匯總展示>信息。
-filename=iotest 測試時的輸出文件路徑和名稱。測試完成后請記得刪除相應文件,以免占用磁盤空間。
-name=Rand_Write_Testing 測試任務名稱。


免責聲明!

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



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