一、簡介
fio是一款廣泛使用的IO基準測試工具,支持眾多的負載模式和選項。如果要逐步解析fio的參數選項,需要了解一些基本概念和術語,例如負載,流,塊,隊列等等。下面將介紹這些概念。
二、概念解析
1. 負載(job)
負載是一組IO操作,用於測試磁盤或者文件系統的性能。可以通過命令行選項或者配置文件來定義一組負載,一般包含如下幾種負載類型:
- 隨機寫
- 隨機讀
- 順序寫
- 順序讀
[job0]
filename=/dev/sdb
iodepth=4
rw=randwrite
bs=4k
runtime=120
size=30G
2. 流(stream)
流是一個FIO負載中,獨立的一段IO操作序列。每個流可以有不同的IO模式,如順序或隨機讀寫,每個流也可以使用不同的塊大小。通過流的使用,可以模擬多個相互獨立的IO請求序列。
[job0]
filename=/dev/sdb
iodepth=4
rw=randwrite
bs=4k
runtime=120
size=30G
numjobs=16
3. 塊(block)
塊是每個IO請求和操作的最小單位,一般使用字節大小來定義。理論上,每種應用程序都有最適合的塊大小。使用合適的塊大小可以極大提高數據傳輸效率。在FIO測試過程中,可以通過bs選項指定塊大小。
[job0]
filename=/dev/sdb
iodepth=4
rw=randwrite
bs=4k
runtime=120
size=30G
numjobs=16
4. 隊列深度(queue depth)
隊列深度是指在時間單位內可以提交給磁盤控制器的最大請求數。FIO中可以通過選項-iodepth進行設置,常見的隊列深度值有1,2,4,8,16,32等等。
[job0]
filename=/dev/sdb
iodepth=4
rw=randwrite
bs=4k
runtime=120
size=30G
numjobs=16
5. 遍歷部署(travese)
遍歷部署是指在負載中多個流的執行順序是按照流定義的順序依次循環,一般用於模擬實際生產系統中的IO訪問。在FIO中,可以通過選項-travese_seq來實現遍歷流的部署。
[job0]
filename=/dev/sdb
iodepth=4
rw=randwrite
bs=4k
runtime=120
size=30G
numjobs=16
traverse_seq=1
三、常用參數選項
1. filename
指定測試的文件或者設備,例如:
[test]
filename=/dev/sda
2. iodepth
定義同時間的IO隊列深度,在測試中使用的最小值為1,通常的隊列深度為128或256。默認值為1。
[test]
iodepth=64
3. bs
指定塊大小。通常,在測試中塊大小最小為4k。默認值為128k。
[test]
bs=4k
4. rw
指定IO操作類型,包括:read,write,randread,randwrite,randrw等。
[test]
rw=read
5. size
測試文件大小。默認為1M。
[test]
size=1G
6. runtime
指定測試時間,默認值為10s。
[test]
runtime=120
7. numjobs
指定實時運行的流數。
[test]
numjobs=16
8. group_reporting
在所有流完成運行後輸出已提交的運行統計信息。
[test]
group_reporting
四、總結
本文對fio的基本概念和術語進行解析,以及常用參數選項進行講解。通過良好的理解和配置,可以使fio在IO性能測試中發揮最優的作用。
原創文章,作者:XCID,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/147537.html