性能测试工具_磁盘性能测试工具fio
1.磁盤性能測試工具FIO
FIO是常見的磁盤性能測試工具,使用 FIO 時,建議配合使用 libaio 的 I/O 引擎進(jìn)行測試。
一般使用以下指標(biāo)衡量硬盤的性能:
IOPS:每秒讀/寫次數(shù),單位為次(計數(shù))。存儲設(shè)備的底層驅(qū)動類型決定了不同的 IOPS。
吞吐量:每秒的讀寫數(shù)據(jù)量,單位為MB/s。
時延:I/O 操作的發(fā)送時間到接收確認(rèn)所經(jīng)過的時間,單位為秒。
2.測試建議與注意事項
l建議在空閑的、未保存重要數(shù)據(jù)的硬盤上進(jìn)行 FIO 測試,并在測試完后重新制作被測硬盤的文件系統(tǒng)。
l測試硬盤性能時,建議直接測試裸數(shù)據(jù)盤(如 /dev/vdb)。
l測試文件系統(tǒng)性能時,推薦指定具體文件測試(如 /data/file)。
l請不要在系統(tǒng)盤上進(jìn)行 FIO 測試,避免損壞系統(tǒng)重要文件。
l為避免底層文件系統(tǒng)元數(shù)據(jù)損壞導(dǎo)致數(shù)據(jù)損壞,請不要在業(yè)務(wù)數(shù)據(jù)盤上進(jìn)行測試。
參數(shù)說明:
參數(shù)名 | 說明 | 取值樣例 |
bs | 每次請求的塊大小。取值包括4k、8k及16k等 | 4k |
ioengine | I/O 引擎。推薦使用 Linux 的異步 I/O 引擎。 | libaio |
direct | 指定 direct 模式。 True(1)表示指定 O_DIRECT 標(biāo)識符,忽略 I/O 緩存,數(shù)據(jù)直寫。 False(0)表示不指定 O_DIRECT 標(biāo)識符。 默認(rèn)為 True(1)。 | 1 |
rw | 讀寫模式。取值包括順序讀(read)、順序?qū)?write)、隨機(jī)讀 (randread)、隨機(jī)寫(randwrite)、混合隨機(jī)讀寫(randrw)和混合 順序讀寫(rw,readwrite)。 | read |
time_based | 指定采用時間模式。無需設(shè)置該參數(shù)值,只要 FIO 基于時間來運行。 | N/A |
runtime | 指定測試時長,即 FIO 運行時長 | 600 |
refill_buffers | FIO 將在每次提交時重新填充 I/O 緩沖區(qū)。默認(rèn)設(shè)置是僅在初始時填充并重 用該數(shù)據(jù)。 | N/A |
norandommap | 在進(jìn)行隨機(jī) I/O 時,FIO 將覆蓋文件的每個塊。若給出此參數(shù),則將選擇新 的偏移量而不查看 I/O 歷史記錄。 | N/A |
randrepeat | 本隨機(jī)序列是否可重復(fù),True(1)表示隨機(jī)序列可重復(fù),False(0)表示隨 機(jī)序列不可重復(fù)。默認(rèn)為 True(1)。 | 0 |
group_reporting | 多個 job 并發(fā)時,打印整個 group 的統(tǒng)計值。 | N/A |
name | job 的名稱。 | fio-read |
size | I/O 測試的尋址空間。 | 100GB |
filename | 測試對象,即待測試的磁盤設(shè)備名稱。 | /dev/sdb |
zero_buffers? | 用0初始化系統(tǒng)buffer | |
nrfiles=8 | 每個進(jìn)程生成文件的數(shù)量 | |
3.常見測試方案
3.1讀性能測試用例
普通模式:
#4k隨機(jī)讀 $ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #8k隨機(jī)讀 $ fio --bs=8k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #64k隨機(jī)讀 $ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #1M隨機(jī)讀 $ fio --bs=1m --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb |
3.2寫性能測試用例
普通模式:
#4k隨機(jī)寫 $ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #8k隨機(jī)寫 $ fio --bs=8k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #64k隨機(jī)寫 $ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #1M隨機(jī)寫 $ fio --bs=1m --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb |
3.3吞吐測試用例
4M順序?qū)?/p>
$ fio --bs=4m --ioengine=libaio --iodepth=128 --direct=1 --rw=write --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb
#4M順序讀
$ fio --bs=4m --ioengine=libaio --iodepth=128 --direct=1 --rw=read --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb
3.4 混合讀寫測試用例
普通模式:
#4k隨機(jī)讀寫 70%讀30%寫 $ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=70? --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #4k隨機(jī)讀寫 70%寫30%讀 $ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=30? --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #4k隨機(jī)讀寫 50%讀50%寫 $ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=50? --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #64k隨機(jī)讀寫 70%讀30%寫 $ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=70? --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #64k隨機(jī)讀寫 70%寫30%讀 $ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=30? --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb #64k隨機(jī)讀寫 50%讀50%寫 $ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=50? --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb |
4.云硬盤測試方案
4.1時延性能測試用例
bs = 4k iodepth = 1:隨機(jī)讀/寫測試,能反映硬盤的時延性能
執(zhí)行以下命令,測試硬盤的隨機(jī)讀時延
fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randread -time_based -runtime=600? -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-lat --size=10G -filename=/dev/vdb
執(zhí)行以下命令,測試硬盤的隨機(jī)寫時延。
fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randwrite -time_based -runtime=600? -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-lat --size=10G -filename=/dev/vdb
執(zhí)行以下命令,測試 SSD 云硬盤的隨機(jī)混合讀寫時延性能。
fio --bs=4k --ioengine=libaio --iodepth=1 --direct=1 --rw=randrw --time_based --runtime=100 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-read --size=1G --filename=/dev/vdb
測試結(jié)果如下圖所示:
4.2吞吐性能測試用例
bs = 128k iodepth = 32:順序讀/寫測試,能反映硬盤的吞吐性能
執(zhí)行以下命令,測試硬盤的順序讀吞吐帶寬。
fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=read -time_based -runtime=600? -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-read-throughput --size=10G -filename=/dev/vdb
執(zhí)行以下命令,測試硬盤的順序?qū)懲掏聨挕?/p>
fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=write -time_based -runtime=600? -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-write-throughput --size=10G -filename=/dev/vdb
執(zhí)行以下命令,測試 SSD 云硬盤的順序讀吞吐性能。
fio --bs=128k --ioengine=libaio --iodepth=32 --direct=1 --rw=read --time_based --runtime=100 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-rw --size=1G --filename=/dev/vdb
測試結(jié)果如下圖所示
4.3 IOPS性能測試用例
bs = 4k iodepth = 32:隨機(jī)讀/寫測試,能反映硬盤的 IOPS 性能
執(zhí)行以下命令,測試硬盤的隨機(jī)讀 IOPS。
fio -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randread -time_based -runtime=600? -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-iops --size=10G -filename=/dev/vdb
執(zhí)行以下命令,測試硬盤的隨機(jī)寫 IOPS。
fio -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randwrite -time_based -runtime=600? -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-iops --size=10G -filename=/dev/vdb
測試 SSD 云硬盤的隨機(jī)讀 IOPS 性能。如下圖所示:
總結(jié)
以上是生活随笔為你收集整理的性能测试工具_磁盘性能测试工具fio的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装百分之80卡住_新车买回来要不要安装
- 下一篇: vue 声明周期函数_Vue2.0 探索