一、windows環境
1. 安裝fio:http://www.bluestop.org/fio/ 可以選擇不同版本的安裝,安裝后在C:\Program Files\fio目錄中可以找到fio的執行程序和相應的文檔。fio.exe 會自動 加入環境變量中
2. 使用
找到要測試的磁盤的序號:
powershell 輸入 diskpart進入磁盤工具
list disk 顯示所以的磁盤編號
選擇沒有分區的磁盤(fio 在qwindows上只能測試沒有分區的磁盤)
所有我們選擇 disk 1 進行測試
測試腳本
1 fio --name=test --rw=randrw --direct=1 --iodepth=8 --blocksize=1024k --ioengine=windowsaio --filename=\\.\PhysicalDrive1 --numjobs=1 --refill_buffers --norandommap --randrepeat=0 --rwmixread=0 --group_reporting --runtime=600 --thread
各參數的含義
--name 為測試起一個名字
--rw 讀寫的形式 --rw=write 連續寫 --rw=randwrite 隨機寫 --rw=read 連續讀 --rw=randread 隨機讀 --rw=randrw 隨機讀寫 取決於后面的讀寫比例
--direct=1 1 表示不使用緩存
--iodepth=8 每個測試線程的隊列深度
--blocksize io的大小
--ioengine=windowsaio IO引擎是Windows的異步IO引擎
--filename=\\.\PhysicalDrive1 這里就是我們要測試的磁盤
--numjobs=1 同時測試的線程數量(這個值乘以上面的iodepth就是對磁盤產生的實際隊列深度,這里1X8,所以實際隊列深度為8)
--refill_buffers 這個選項告訴fio將在每次submit之后都會將重新填滿IO buffer。否則fio會在初始時填滿,以后重復利用
--norandommap 般情況下,fio在做隨機IO時,將會覆蓋文件/磁盤的每一個block。如果這個選項設置的話,fio將只是獲取一個新的隨機offset,而不會查詢過去的歷史。這意味着一些塊可能沒有讀或寫,一些塊可能要讀/寫很多次。
--randrepeat=0 對於隨機IO負載,配置生成器的種子,使得路徑是可以預估的,使得每次重復執行生成的序列是一樣的。
--rwmixread=0 隨機讀寫的讀寫比率。0,表示100%寫,這個值設置為100 表示百分百讀
--group_reporting 報道結果
--runtime=600 測試的時間
--thread 由於使用了多線程 所以要加上這個參數
從上面的報告可以看出,IOPS平均值為 153 帶寬利用率 為 162Mb/s 56.87%的延時在50ms
例子
1 全盤1024KB隨機讀 2 fio --name=test --rw=randrw --direct=1 --iodepth=8 --blocksize=1024k --ioengine=windowsaio --filename=\\.\PhysicalDrive1 --numjobs=8 --refill_buffers --norandommap --randrepeat=0 --rwmixread=100 --group_reporting --runtime=180 --thread 3 全盤128KB連續讀 4 fio --name=test --rw=read --direct=1 --iodepth=8 --blocksize=128k --ioengine=windowsaio --filename=\\.\PhysicalDrive1 --numjobs=8 --group_reporting --runtime=1800 --thread 5 全盤128KB連續寫 6 fio --name=test --rw=write --direct=1 --iodepth=8 --blocksize=128k --ioengine=windowsaio --filename=\\.\PhysicalDrive1 --numjobs=8 --group_reporting --runtime=1800 --thread
完整的使用請看 安裝目錄下的參考文檔 HOWTO
二、linux環境
centos 下安裝
yum install -y fio