首頁 > 軟體

Linux下 fio磁碟壓測實錄

2020-06-16 17:15:55

專業的測試磁碟IO效能的軟體:

1、fio 【推薦使用】

2、iometer

fio的使用:

參考

http://www.linuxidc.com/Linux/2017-04/143255.htm

http://www.linuxidc.com/Linux/2017-04/143251.htm

注意,我先使用yum安裝的fio,測試時候報錯,建議使用最新版的fio工具編譯安裝。方法如下:

yum install libaio libaio-devel   需要先安裝2個包

新版的 fio-2.1.4 原始碼包下載 http://brick.kernel.dk/snaps/  

tar xf fio-2.1.4.tar.gz

cd fio-2.1.4

./configure

make  即可在當前目錄下生成fio可執行檔案。

fio的幾個引數:

filename=/bdata/test.big 測試檔名稱,通常選擇需要測試的盤所在的目錄。

direct=1 測試過程繞過機器自帶的buffer。使測試結果更真實。

rw=randwrite 測試隨機寫的I/O

rw=randrw 測試隨機寫和讀的I/O

bs=4k 單次io的塊檔案大小為4k

size=2g 本次的測試檔案大小為2g,以每次4k的io進行測試。

numjobs=64 本次的測試執行緒為64.   【建議設定為CPU的CORE數量一致】

runtime=20 測試時間為20秒,如果不寫則一直將2g檔案分4k每次寫完為止。

ioengine=psync io引擎使用pync方式 ,此外還有libaio 非同步方式。

rwmixwrite=30 在混合讀寫的模式下,寫佔30%

group_reporting 關於顯示結果的,匯總每個進程的資訊。

sync=1 設定非同步io

fsync=1 一個io就同步資料

幫助命令: 

fio --help 

fio --cmdhelp 等等

# 準備個2GB的測試用的檔案

dd if=/dev/zero of=/bdata/test.big bs=4k count=524288    # 通常在需要測試的那個磁碟下面生成一個這種測試用的大檔案 

測試隨機讀寫:

fio --filename=/bdata/test.big -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=2G -numjobs=64 -runtime=20-group_reporting -name=test-rand-write

測試順序讀取:

fio --filename=/bdata/test.big -iodepth=64 -ioengine=libaio --direct=1 --rw=read --bs=1m --size=2g --numjobs=4 --runtime=10 --group_reporting --name=test-read

測試順序寫效能

fio --filename=/bdata/test.big -iodepth=64 -ioengine=libaio -direct=1 -rw=write -bs=1m -size=2g -numjobs=4 -runtime=20 -group_reporting -name=test-write

測試隨機讀:

fio --filename=/root/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randread -bs=4k -size=2G -numjobs=64 -runtime=20 -group_reporting -name=test-rand-read

測試隨機寫:

fio --filename=/root/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=2G -numjobs=64 -runtime=20-group_reporting -name=test-rand-write

採用同步IO的隨機寫:

fio --filename=/root/rndwrite -iodepth=64 -ioengine=psync -direct=1 -rw=randwrite -bs=4k -size=2G -numjobs=32 -runtime=20 -group_reporting -name=test-rand-write 

其他: 

# 4k,100%讀寫:

fio --filename=/dev/sdx --direct=1 --rw=randrw --refill_buffers --norandommap --randrepeat=0 --ioengine=libaio --bs=4k --rwmixread=100 --iodepth=16 --numjobs=16 --runtime=60 --group_reporting --name=4ktest

# 8k,70%讀取,30%寫入:

fio --filename=/dev/sdx --direct=1 --rw=randrw --refill_buffers --norandommap --randrepeat=0 --ioengine=libaio --bs=8k --rwmixread=70 --iodepth=16 --numjobs=16 --runtime=60 --group_reporting --name=8k7030test

在阿里雲SSD測試時候,使用libaio方式能達到較高的IOPS,使用psync的話,IOPS下降的很嚴重。從網上其他測試資料來看,非同步的libaio比同步的psync方式效能高15倍左右。

附帶一個MySQL DELL物理機的測試情況:

1 aio非同步模式隨機寫入5G資料

測試命令:

fio --filename=/root/rndwrite -iodepth=64-ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=5G -numjobs=64-runtime=20 -group_reporting -name=test-rand-write

Samsung SSD 750 EVO 500GB盤為例,測試截圖

2 psync同步模式隨機寫入5G資料

測試命令:

fio --filename=/root/rndwrite -iodepth=64-ioengine=psync -direct=1 -rw=randwrite -bs=4k -size=5G -numjobs=64 -runtime=20-group_reporting -name=test-rand-write

10.0.36.4 Samsung SSD 750 EVO 500GB盤為例,測試截圖

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-04/143258.htm


IT145.com E-mail:sddin#qq.com