[轉帖]FIO測試存儲性能iodepth隊列深度對iops的影響

FIO是用來測試磁盤IO性能比較常用的工具,它的強大之處在於提供了一套測試框架,能夠支持多線程多進程的IO測試,用戶只需進行參數的配置,便能夠方便地定製不同的IO行爲(順序讀寫,隨機讀寫等),並對其性能進行監測。此次我們來測試金山私有云KingStack某套環境下SSD磁盤的4KB隨機寫的IOPS,驗證一下增加隊列深度對磁盤性能的影響。加大磁盤隊列深度就是讓磁盤不斷工作,減少磁盤的空閒時間。

1、FIO測試命令

[root@KingStack-FIO ~]# fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randwrite -size=1000G -filename=/dev/vdb -name="KingStack EBS 4K randwrite test" -iodepth=1 -runtime=60 
    簡單介紹一下FIO的參數: 
    

    ioengine: 負載引擎,一般使用libaio,發起異步IO請求。
    bs: 單次IO的塊文件大小爲4K。
    direct: 繞過操作系統Cache。因爲我們測試的是磁盤,而不是操作系統的Cache,所以設置爲1,使測試結果更真實。
    rw: randwrite 測試隨機寫的I/0。
    size: 尋址空間,一般設置爲磁盤的大小。
    filename: 測試對象。
    iodepth: 隊列深度,只有使用libaio時纔有意義。這是一個可以影響IOPS的參數。
    runtime: 測試時長。

      2、測試分析

      下面我們做兩次測試,分別 iodepth = 1和iodepth = 4的情況。下面是iodepth = 1的測試結果。
      在這裏插入圖片描述

      上圖中藍色方框裏面是測出的IOPS 4235, 青色方框裏面是每個IO請求的平均響應時間,大約是0.22ms。黃色方框表示95%的IO請求的響應時間是小於等於 0.474 ms。紫色方框表示該磁盤的利用率已經達到了91.85%。

      下面是 iodepth = 4 的測試:
      在這裏插入圖片描述

      我們發現這次測試的IOPS所有提高,IO平均響應時間也變大一些。爲什麼這裏提高隊列深度起到作用了呢,原因當隊列深度爲1時,磁盤的利用率才達到91.85%,說明磁盤還有很多空閒時間可以壓榨。對於SSD磁盤,當增加隊列深度時,會增加IOPS,同時也會增加響應時間,但達到一定程度後,IOPS反而會下降,此時IO平均響應時間增加較大,因爲磁盤利用率已經達到一個穩定狀態了。

      下面是對一塊SSD磁盤的4K隨機寫性能統計:
      在這裏插入圖片描述

      3、結論

      3.1、增加隊列深度,可以看到IOPS不會隨着隊列深度的增加而一直增加,達到一定值後會有所下降。
      3.2、增加隊列深度,可以測試出磁盤的峯值。

      文章知識點與官方知識檔案匹配,可進一步學習相關知識
      CS入門技能樹Linux入門初識Linux24447 人正在系統學習中
      發表評論
      所有評論
      還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
      相關文章