以前用過 dd – http://benjr.tw/458, hdparm – http://benjr.tw/450 或是 Iometer – http://benjr.tw/370 來測試 Disk I/O 的是速度,但 dd, hdparm 太過簡單,Iometer 太過老舊 ,目前看到一套 Fio – Flexible I/O Tester 的 Disk I/O 測試工具.
Ubuntu 直接用 apt-get install 就可以找到該相關套件.
root@ben-SDV:~# apt-get install fio
|
CentOS/RHEL (RedHat) 需要透過 EPEL (epel-release, Extra Packages for Enterprise Linux)來安裝
[root@localhost ~]# yum install -y epel-release
[root@localhost ~]# yum install -y fio
|
Fio 的相關參數很多,我們先來看看他提供了哪一些參數!!
http://manpages.ubuntu.com/manpages/natty/man1/fio.1.html
恩!!這麼多要從哪裡開始呢!!!
直接來看範例比較快
# fio --filename=/dev/sdb --direct=1 --rw=randrw --ioengine=libaio --bs=4k --rwmixread=100 --iodepth=16 --numjobs=16 --runtime=60 --group_reporting --name=4ktest
|
參數參考:
執行結果
4ktest: (g=0): rw=randrw, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=16
...
4ktest: (g=0): rw=randrw, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=16
2.0.8
Starting 16 processes
Jobs: 16 (f=16): [rrrrrrrrrrrrrrrr] [100.0% done] [139.5M/0K /s] [35.8K/0 iops] [eta 00m:00s]
4ktest: (groupid=0, jobs=16): err= 0: pid=4982
read : io=8469.8MB, bw=144453KB/s, iops=36113 , runt= 60040msec
slat (usec): min=2 , max=99881 , avg=396.92, stdev=4518.49
clat (usec): min=3 , max=106708 , avg=6656.22, stdev=17488.79
lat (usec): min=192 , max=106732 , avg=7059.84, stdev=17945.19
clat percentiles (usec):
| 1.00th=[ 286], 5.00th=[ 382], 10.00th=[ 382], 20.00th=[ 386],
| 30.00th=[ 386], 40.00th=[ 386], 50.00th=[ 390], 60.00th=[ 390],
| 70.00th=[ 394], 80.00th=[ 398], 90.00th=[30592], 95.00th=[60160],
| 99.00th=[68096], 99.50th=[72192], 99.90th=[80384], 99.95th=[82432],
| 99.99th=[86528]
bw (KB/s) : min= 7776, max=10998, per=6.26%, avg=9037.62, stdev=312.92
lat (usec) : 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%, 100=0.01%
lat (usec) : 250=0.38%, 500=85.62%, 750=0.19%, 1000=0.02%
lat (msec) : 2=0.02%, 4=0.12%, 10=0.58%, 20=1.59%, 50=4.22%
lat (msec) : 100=7.26%, 250=0.01%
cpu : usr=0.60%, sys=5.24%, ctx=20755, majf=0, minf=403
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=2168242/w=0/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
READ: io=8469.8MB, aggrb=144453KB/s, minb=144453KB/s, maxb=144453KB/s, mint=60040msec, maxt=60040msec
Disk stats (read/write):
sdb: ios=2164277/0, merge=0/0, ticks=71276/0, in_queue=70568, util=81.63%
|
怎麼檢視這一份報告呢!!
其實我看不是很懂裡面的數值,比較像是 Disk IO 效能的大概就是下面這一行.
在執行中會顯示執行結果.這大概就是他的 I/O 效能.
Jobs: 16 (f=16): [rrrrrrrrrrrrrrrr] [100.0% done] [139.5M/0K /s] [35.8K/0 iops] [eta 00m:00s]
如果要看執行結果請參考最後兩段
Run status group 0 (all jobs):
READ: io=8469.8MB, aggrb=144453KB/s, minb=144453KB/s, maxb=144453KB/s, mint=60040msec, maxt=60040msec
Disk stats (read/write):
sdb: ios=2164277/0, merge=0/0, ticks=71276/0, in_queue=70568, util=81.63%
所有的執行緒所統計所出的資料結果如下:
Disk I/O 效能統計所代表的結果如下:
下面的值有機會再深入討論了.
上面用於單顆硬碟的測試,當多顆硬碟時你可以直接指定 –filename=/dev/sdb:/dev/sdc (用冒號隔開) 或是寫 configuration 檔案.
# vi fio.cfg
[
global
]
direct=1
iodepth=16
ioengine=libaio
#numjobs=16
blocksize=512k
time_based
rw=read
rwmixread=100
runtime=60s
group_reporting
[dev-sdb]
filename=/dev/sdb
[dev-sdc]
filename=/dev/sdc
|
其實就兩段 [global] : 共用的設定參數 , [job] :特別指定的參數(這邊指定待測裝置名稱).
執行 fio 後面接設定檔即可.
# fio fio.cfg
|
Fio 的進階使用:
转载地址:http://benjr.tw/34632