fio硬盤測速windows+linux

  • 2020 年 10 月 12 日
  • 筆記

一、FIO工具簡介

Fio工具的介紹網上有很多,都是可以通用的,這裡就不做太多個人描述了,直接借鑒一下☺

fio是一種I / O工具,用於基準測試和壓力/硬件驗證。它支持19種不同類型的I / O引擎(sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等),

I / O優先級(適用於較新的Linux內核) ,評估I / O,分叉或線程作業等等。它可以在塊設備和文件上工作。fio以簡單易懂的文本格式接受職位描述。包含幾個示例作業文件。fio顯示各

種I / O性能信息,包括完整的IO延遲和百分位數。Fio在許多地方廣泛使用,用於基準測試,QA和驗證目的。它支持Linux,FreeBSD,NetBSD,OpenBSD,OS X,OpenSolaris,

AIX,HP-UX,Android和Windows等操作系統。

附加FIO官網地址://freshmeat.net/projects/fio/,有興趣的同學可以自己去看看原版的簡介

注意:不要在系統分區做硬盤測試!!!!!!!!!!

在使用fio工具進行硬盤測試過程中, filename參數指定某個要測試的裸設備(硬盤或分區),切勿在系統分區做測試,會破壞系統分區,而導致系統崩潰。

這裡一定要注意,我就是因為沒注意這個問題,在系統分區做了硬盤測速,導致了下圖的悲劇。。o(╥﹏╥)o

 

 

 

 

 

 

 

 

 

 

 

 

 

二、FIO使用參數說明

這裡分為兩種參數說明來給大家參考,一種是在輸入測速命令時,需要使用的參數,一種是得到測速結果時,需要使用的參數

2.1Fio工具執行讀寫命令參數說明

filename: 指定文件(設備)的名稱。可以通過冒號分割同時指定多個文件,如filename=/dev/sda:/dev/sdb。

directory: 設置filename的路徑前綴。在後面的基準測試中,採用這種方式來指定設備。

name: 指定job的名字,在命令行中表示新啟動一個job。

direct: bool類型,如果設置成true (1),表示不使用io buffer。

ioengine: I/O引擎,現在fio支持19種ioengine。默認值是sync同步阻塞I/O,libaio是Linux的native異步I/O。

iodepth: 如果ioengine採用異步方式,該參數表示一批提交保持的io單元數。該參數可參考文章「Fio壓測工具和io隊列深度理解和誤區」。

rw: I/O模式,隨機讀寫,順序讀寫等等。

bs: I/O block大小,默認是4k。

size: 指定job處理的文件的大小。

numjobs: 指定job的克隆數(線程)。

time_based: 如果在runtime指定的時間還沒到時文件就被讀寫完成,將繼續重複知道runtime時間結束。

runtime: 指定在多少秒後停止進程。如果未指定該參數,fio將執行至指定的文件讀寫完全完成。

group_reporting: 當同時指定了numjobs了時,輸出結果按組顯示。

output:將測速結果輸出到對應文件

lockmem=1g :只使用1g內存進行測試。 
=zero_buffers: 用0初始化系統buffer。 
nrfiles=8 :每個進程生成文件的數量。 
ioscheduler: 嘗試切換設備託管文件指定的I / O調度器。
psync : 同步i/o測試
libaio : 異步i/o測試,libaio的讀寫過程簡單說來就是你發出一個讀寫請求,然後你可以開始做其他事情,當讀寫過程結束時libaio會通知你你的這次請求已經完成

。。。。還有很多參數,以上只是常用的部分參數

2.2Fio工具讀寫測速結果參數說明

 io= 執行了多少M的IO

bw= 平均IO帶寬

iops=   IOPS

runt= 線程運行時間

slat 提交延遲  (stdev指標準差)

clat 完成延遲

lat響應時間

bw 帶寬

cpu利用率

IO depths=io隊列

IO submit=單個IO提交要提交的IO數

IO complete= Like the above submit number, but for completions instead.

IO issued= The number of read/write requests issued, and how many

of them were short.

IO latencies=IO完延遲的分佈

io= 總共執行了多少size的IO

aggrb= group總帶寬

minb= 最小平均帶寬.

maxb= 最大平均帶寬.

mint= group中線程的最短運行時間.

maxt= group中線程的最長運行時間.

ios= 所有group總共執行的IO數.

merge= 總共發生的IO合併數.

ticks= Number of ticks we kept the disk busy.

io_queue= 花費在隊列上的總共時間.

util= 磁盤利用率

。。。。。同上

三、   linux使用FIO工具進行硬盤測速方式

3.1下載安裝包並進行安裝

安裝包可以從網上下載,也可以從文檔結尾的網盤鏈接內取,這裡附上網上的下載地址://git.kernel.dk/cgit/fio/

將安裝包使用root用戶傳輸至Linux服務器任意目錄下

將其解壓到當前目錄:tar –zxvf ./fioxx-xx.tar.gz

 

進入解壓好的fio目錄內:cd fioxx-xx/

 

開始安裝fio,依次按順序執行以下命令:

./configure

make

make install

安裝完畢以後,輸入fio –version 查看fio版本

 

出現fio版本,說明安裝成功

3.2 使用fio進行硬盤測速

在root用戶下分批次執行以下命令:(以下命令及測速結果全局參數參照Fio使用參數說明)

   100%順序讀:

fio -filename=/home/read.dat -direct=1 -iodepth 1  -rw=read -ioengine=psync -bs=1024kb -size=4G -numjobs=1 -runtime=180 -group_reporting -name=sqe_100read_4k

執行結果如下:

圖中紅框內的bw項為所需硬盤讀取測速結果

 

   100%順序寫:

fio -filename=/home/write.dat -direct=1 -iodepth 1  -rw=write -ioengine=psync -bs=1024kb -size=4G -numjobs=1 -runtime=180 -group_reporting -name=sqe_100write_4k

執行結果如下:

圖中紅框內的bw項為所需硬盤寫入測速結果

 

 

 還有兩種常用的命令是隨機寫和隨機讀,這裡我就不一一做演示了,附上命令:

隨機寫

fio -filename=/home/randwrite.dat -direct=1 -iodepth 1 -rw=randwrite -ioengine=psync -bs=1024kb -size=4G -numjobs=1 -runtime=180  -group_reporting -name=randwrite

隨機讀

fio -filename=/home/randread.dat -direct=1 -iodepth 1 -rw=randread -ioengine=psync -bs=1024kb -size=4G -numjobs=1 -runtime=180  -group_reporting -name=randread

大家還可以根據實際需要進行參數的添加和刪除

四、windows使用FIO工具進行硬盤測速方式

4.1下載安裝包並安裝

windows的在線下載需要某PN,所以這裡我也提供了部分windows下32位和64位不同版本的安裝包在文章結尾,大家可以根據實際情況進行下載使用                                                                                                                                                                                    

將下載好的fio安裝包解壓到本地,選擇一個版本,雙擊fio-xx-xxx.msi進行安裝

安裝完畢以後,在C:\Program Files\fio目錄下找到fio.exe並雙擊,然後在當前目錄下按住shift鍵,右鍵打開PowerShell,輸入fio –version,出現版本信息,說明安裝成功。

 4.2使用fio進行硬盤測速

在打開的PowerShell窗口依次輸入以下命令:(以下命令及測速結果全局參數參照Fio工具參數說明)

         100%順序讀:

fio.exe –name=4Gread –rw=read –direct=1 –iodepth=1 –blocksize=1024kb –size=4g –ioengine=windowsaio –filename=自定義盤符名稱(不可使用系統分區所在盤符!!)–numjobs=1 -group_reporting   –runtime=180

         執行結果如下:

圖中紅框內的BW項為所需硬盤讀取測速結果

 

 

100%順序寫:

fio.exe –name=4Gwrite  –rw=write –direct=1 –iodepth=1 –blocksize=1024kb –size=4g –ioengine=windowsaio –filename=自定義盤符名稱(不可使用系統分區所在盤符!!) –numjobs=1 -group_reporting  –runtime=180

執行結果如下:

圖中紅框內的BW項為所需硬盤寫入測速結果

 

執行完畢得到測速結果後,windows下無需進行刪除操作。

到這裡就是目前為止windows和linux使用fio工具進行硬盤測速的整體步驟了,下面是附加的安裝包

鏈接://pan.baidu.com/s/1P-HQIdYd0tFYtclijJ_QVw
提取碼:6666

 

轉載本文請和本文作者聯繫授權,本文來自博客園一襲白衣一