經常使用參數:node
-c count stop after count requests. -i interval Set time between requests to interval(Default 1s). -l 速度 default size(-s size)/speed = interval(-i) 若是size=4k 若是要實現80iops則-l 320k -L 順序,同時每次操做塊大小會變成256k.(即-s 256k) -D Derect IO -s size 指定請求數據塊的大小(默認:4k) 4k時那麼平均每次讀寫的扇區就是8個 -S wsize 指定工做路徑的大小,若是不指定,默認是1m的,也就是io會只在這個1m的塊上執行,指定該參數執行ioping會先建立一個指定大小的塊文件,再開始讀寫。 -W 寫io。會從0磁道開始寫,要與-WWW一塊兒使用。 -G 混合讀寫 -k 在使用目錄作測試時,保留ioping.tmp(-S 建立的文件,默認會完成測試後自動刪除)。 -Y sync IO
把要測試的盤掛載到一個目錄好比/test,cd /test開始測試ios
測試4k隨機寫(寫測試必須使用目錄或者文件)異步
ioping -W -WWW -S 1G -D -c 100 .
測試順序讀(讀能夠測試設備)工具
ioping -L -D -S 1G -c 100 .
如下是man page方法:性能
簡單用法:測試
使用默認值和當前目錄顯示磁盤I / O延遲,直到被中斷code
[root@node-1 ops]# ioping -D /dev/sda 4 KiB <<< /dev/sda (block device 557.9 GiB): request=1 time=56.1 ms (warmup) 4 KiB <<< /dev/sda (block device 557.9 GiB): request=2 time=8.89 ms 4 KiB <<< /dev/sda (block device 557.9 GiB): request=3 time=9.45 ms 4 KiB <<< /dev/sda (block device 557.9 GiB): request=4 time=5.37 ms 4 KiB <<< /dev/sda (block device 557.9 GiB): request=5 time=5.34 ms 4 KiB <<< /dev/sda (block device 557.9 GiB): request=6 time=7.24 ms 4 KiB <<< /dev/sda (block device 557.9 GiB): request=7 time=2.62 ms (fast) 4 KiB <<< /dev/sda (block device 557.9 GiB): request=8 time=8.16 ms 4 KiB <<< /dev/sda (block device 557.9 GiB): request=9 time=10.2 ms (slow) 4 KiB <<< /dev/sda (block device 557.9 GiB): request=10 time=7.02 ms ^C --- /dev/sda (block device 557.9 GiB) ioping statistics --- 9 requests completed in 64.3 ms, 36 KiB read, 140 iops, 560.3 KiB/s generated 10 requests in 9.11 s, 40 KiB, 1 iops, 4.39 KiB/s min/avg/max/mdev = 2.62 ms / 7.14 ms / 10.2 ms / 2.24 ms
測量磁盤搜索率(iops,avg)隊列
$ ioping -R /dev/sda --- /dev/sda (device 465.8 GiB) ioping statistics --- 186 requests completed in 3004.6 ms, 62 iops, 0.2 MiB/s min/avg/max/mdev = 6.4/16.0/26.8/4.7 ms
測量磁盤順序速度(MiB / s)get
$ ioping -RL /dev/sda --- /dev/sda (device 465.8 GiB) ioping statistics --- 837 requests completed in 3004.1 ms, 292 iops, 72.9 MiB/s min/avg/max/mdev = 2.0/3.4/28.9/2.0 ms
獲取磁盤每秒順序速度(bytes)同步
[root@node-1 ops]# ioping -RLB . | awk '{printf "%s MB\n",$4/1024/1024}' 1129.74 MB
raw 統計
ioping -p 100 -c 200 -i 0 -q . 100 26694 3746 15344272 188 267 1923 228 100 26694 100 24165 4138 16950134 190 242 2348 214 100 24165 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (1) 請求次數統計 (2) 運行時間 (usec) (3) 每秒的請求次數 (iops) (4) 傳輸速度 (bytes/sec) (5) 最低的請求時長 (usec) (6) 平均請求時長 (usec) (7) 最大的請求時長 (usec) (8) request time standard deviation (usec) (9) 總的請求數 (including too slow and too fast) (10) 總的運行時長 (usec)
名詞解釋
tps: 每秒接收的I/O請求數,等於r/s + w/s
avgrq-sz: 平均每次io請求扇區數
avgqu-sz: 平均每次io等待隊列數
maxsect: max sectors per request
經過blockdev --getmaxsect /dev/sdx獲取,sas默認值512,sata默認值128
sector: 扇區,每一個扇區512Bytes,1k=2sect
iops: 每秒的io次數
這次測試使用的硬盤爲sas 10k, iops爲140, 平均io time/per爲14ms
寫測試實例
同步IO寫
測試一:
ioping -DWWW -S 1G -s 4k -l 560k .
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 140.00 0.00 0.55 8.00 0.02 0.15 0.00 0.15 0.15 2.10
扇區達到8以後,tps、avgrq、avgqu和await符合預期
測試二:
測試命令: ioping -DWWW -S 1g -s 256k -l 35m .
04/20/2019 03:07:59 PM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 140.00 0.00 35.00 512.00 0.03 0.20 0.00 0.20 0.20 2.80
Note:
扇區達到512後,符合預期
size爲256k時,恰好avgrq爲512個sector;
此時tps = 35m / 256k = 140 , 與測試結果w/s相符,也於10k sas盤的iops參數相符;
觀察此時avgqu爲0.04,幾乎沒有隊列等待, iops = 140 / (1 + 0.04) = 134;
w_wait: 0.29;
且util值爲4%,接近0;
能夠認爲此時是硬盤的最佳io處理狀態,能夠做爲基準狀態;
測試三:
ioping -DWWW -S 1g -s 256k -l 70m .
正常的盤: Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 280.00 0.00 70.00 512.00 0.05 0.18 0.00 0.18 0.17 4.80
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc1 0.00 0.00 0.00 153.00 0.00 38.25 512.00 0.95 6.21 0.00 6.21 6.19 94.70
Note:
穩定後,wMB/s和avgrq達到參數值後,也符合預期,此時若是wMB達不到參數值的話就會增長util,並tps也會達不到預期。
正常的盤和異常的盤在這個壓力下,已經顯現了差距
size不變,增長數據量及加快給數據的速度,speed爲70m,此時util開始接近100%;
此時計算tps = 70m / 256 k = 280 ,與實際測出結果有必定差距,
可是此時avgqu-sz已經達到0.95,接近1,
根據avgqu,計算iops ≈ 280 / (1 + 0.95) = 143 接近153;
w_wait: 6.21有所增長,可是依然符合io time;
再增長speed,後實際結果也沒有大的變化,只增長這個值此時已經沒有測試效果;
測試四:
增長size 測試命令: ioping -DWWW -S 1g -s 512k -l 35m . iostat輸出:
正常的盤: Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 140.00 0.00 35.00 512.00 0.02 0.16 0.00 0.16 0.09 1.20
異常的盤 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc1 0.00 0.00 0.00 140.00 0.00 35.00 512.00 0.06 0.42 0.00 0.42 0.24 3.40
Note:
wMB/s和avgrq達到參數值後,符合預期
低壓力的狀況下,正常的盤和異常的盤區別不大
size爲512k=1024sector,爲測試一的兩倍,也就是每次request都要分紅兩次完成,由於每次是512個sector;
計算tps = 35m / 512k = 70 , 可是結果是140, 結合size,那麼新的tps計算方法就應該是: tps = speed / size × (size_k *2 /maxsect)
tps = 35 * 1024 / 512 * (512 * 2 / 512) = 140
avgqu-sz: 0.06
w_wait: 0.42;
數據總量不變的狀況下,增長request的size,會增長tps,並保持io處理能力不降低。
測試五:
ioping -DWWW -S 1g -s 512k -l 70m .
正常的盤: Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 280.00 0.00 70.00 512.00 0.05 0.17 0.00 0.17 0.11 3.00
異常的盤: Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc1 0.00 0.00 0.00 220.00 0.00 55.00 512.00 1.44 6.52 0.00 6.52 4.15 91.20
Note:
正常的盤在wMB/s avgrq達到參數值後符合預期,若是達不到參數值則會出現iops下降,util增長和avgqu增長,以及await增長
異常的盤已經基本上達不到參數值了
size: 512k
計算tps: 70 * 1024 / 512 * 2 = 280, 與實際測試的值略有差距;
avgqu: 1.44 , 根據avgqu 沒有avgqu時的tps = 280 / (1 + 1.44) = 114;
此時w_wait: 6.52,處於合理狀態的範圍;
測試六:
ioping -DWWW -S 1g -s 5m -l 150m .
正常的盤: Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 600.00 0.00 150.00 512.00 1.07 1.79 0.00 1.79 0.14 8.30
異常的盤: Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc1 0.00 0.00 0.00 460.00 0.00 115.00 512.00 9.31 20.33 0.00 20.33 1.99 91.60
Note:
此時正常的盤,達到參數值後,依然符合預期,而異常的盤已經遠遠達不到了。
size: 5m
計算tps: 150 / 50 * (5 * 1024 * 2 / 512) = 600
因爲有avgqu值偏大,此時已經不具備生產使用意義
測試名稱 | size | speed | 測試tps | 計算tps | avgqu-sz | wait | util | MB/s |
---|---|---|---|---|---|---|---|---|
一 | 256k | 35m | 140 | 140 | 0.04 | 0.29 | 4% | 35 |
二 | 256k | 70m | 153 | 280 | 0.95 | 6.21 | 94.7% | 38.25 |
三 | 512k | 35m | 140 | 140 | 0.06 | 0.42 | 3.4% | 35 |
四 | 512k | 70m | 220 | 280 | 1.44 | 6.52 | 91.2% | 55 |
五 | 5m | 150m | 460 | 600 | 9.31 | 20.33 | 91.6% | 115 |
當size爲256k時 avgrq-sz就已經等於maxsect,此時增長-l speed的值並不能提高iops了,只能增長-s的size,
而增長size必然會帶來增長avgqu-sz即等待隊列,也就會致使wait上升.10k的sas的iops爲140,此時140256k = 140/4m = 35m 此時-l 35m,基本上就是硬盤最高繁忙度了util接近100%,此時要下降util,就必須增長-s的size(增長了等待的隊列,也能夠理解是增長了io通道或者iodepth), 好比size=512k,此時util下降一半,tps=35m/0.5m2 =140
io供給速度快時,util增長的狀況下,tps就達不到計算的結果。
讀測試實例
ioping -D -S 100g -s 4m -l 160m /dev/sdc1 iostat輸出 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc1 0.00 0.00 486.00 0.00 121.50 0.00 512.00 9.66 19.78 19.78 0.00 2.04 99.30 此時看wait開始增長到較高的值了,且avgqu-sz已經很高了。
磁盤測試能夠根據計算的方式獲取預期的瓶頸範圍
avgqu-sz開始接近1的時候就是盤的性能最佳狀態。
即最佳狀態爲-s 256k -l 35m此時tps 140 util接近100%
磁盤在等待隊列avgqu-sz <= 4的狀況下處於較好的狀態,最終獲取最大承受範圍約 -s 1.5m -l 150m,此時承載能裏達到最大承載臨界值。(隊列avgqu-sz每增長1幾乎tps就增長一倍)
04/19/2019 12:03:34 AM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc1 0.00 0.00 388.00 0.00 97.00 0.00 512.00 4.32 11.20 11.20 0.00 2.56 99.50 04/19/2019 12:03:35 AM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc1 0.00 0.00 370.00 0.00 92.50 0.00 512.00 4.37 11.83 11.83 0.00 2.68 99.10
測試一:
ioping -ADWWW -S 1g -s 4k -l 560k .
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 140.00 0.00 0.55 8.00 0.00 0.01 0.00 0.01 0.01 0.20
wMB/s和 avgrq達到預期後,其餘的輸出都符合預期
ioping -AD -W -WWW -S 1G -s 256k -l 35m .
04/20/2019 02:42:57 PM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 140.00 0.00 35.00 512.00 0.02 0.16 0.00 0.16 0.16 2.20
符合預期
ioping -AD -W -WWW -S 1G -s 256k -l 70m .
04/20/2019 02:46:11 PM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 280.00 0.00 70.00 512.00 0.05 0.17 0.00 0.17 0.17 4.90
開始階段avgrq只能到達256,此時iops爲500左右
異步io的util不高
ioping -AD -W -WWW -S 1G -s 512k -l 35m .
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 140.00 0.00 35.00 512.00 0.03 0.21 0.00 0.21 0.11 1.60
表現與sync io同樣,此時iops一致
ioping -AD -W -WWW -S 1G -s 512k -l 70m .
04/20/2019 02:50:49 PM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 280.00 0.00 70.00 512.00 0.07 0.26 0.00 0.26 0.14 3.90
符合預期
ioping -AD -W -WWW -S 1G -s 512k -l 140m .
04/20/2019 02:52:43 PM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 542.00 0.00 135.50 512.00 0.21 0.39 0.00 0.39 0.24 12.80 04/20/2019 02:52:44 PM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 440.00 0.00 110.00 512.00 0.85 1.93 0.00 1.93 1.43 62.80
數據量增大後,tps就很難穩定了
ioping -AD -W -WWW -S 1G -s 2m -l 140m .
04/20/2019 02:54:11 PM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 3.00 0.00 623.00 0.00 140.20 460.88 0.44 0.70 0.00 0.70 0.12 7.50
ioping -AD -W -WWW -S 1G -s 5m -l 140m .
04/20/2019 02:55:19 PM Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb4 0.00 0.00 0.00 540.00 0.00 135.00 512.00 2.54 4.71 0.00 4.71 0.29 15.40