歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 黃金搭檔之fio+blktrace--Linux下模擬塊設備訪問方式

黃金搭檔之fio+blktrace--Linux下模擬塊設備訪問方式

日期:2017/2/28 16:02:24   编辑:Linux教程

這裡主要介紹下自己的操作步驟以及在操作過程中遇到的問題,以對新學者作個借鑒。

假定,一切操作均在root權限下。

1.在實施之前,首先要確保debugfs被掛載到/sys/kernel/debug

默認掛載到的目錄是/dev/kernel/debug,也可以設置自己的目錄,但在blktrace命令中要通過-r參數指定新選擇的路徑。一般情況下,選擇默認即可。

檢查方法:

$ grep debug /proc/mounts

如果debugfs已掛載,應該看到這樣的輸出:

none /sys/kernel/debug debugfs rw 0 0

否則的話,要自己掛載:

$mount -t debugfs none /sys/kernel/debug

這是因為,blktrace要用到debugfs的trace輸出,從它的輸出中進行分析,必須依賴於它。

2.在終端#1,啟動blktrace,准備記錄設備的訪問模式

$blktrace /dev/sdb

在終端#2,運行應用程序。這裡,簡單用dd做測試。

$dd if=/dev/zero of=/dev/sdb bs=4k count=100 oflag=direct

3.回到終端#1,按CTRL+C終止blktrace的運行,由ls命令可看到,在當前目錄下出現了新的文件,它的名字與設備名相關,文件個數與CPU個數相同。

對我來說,只有一個CPU,出現的文件名為sdb.blktrace.0

轉化成二進制文件,作為fio的讀寫日志,即Fio的讀寫的數據來源。

$blkparse sdb -d sdb.bin > /dev/null

操作完成後,在當前目錄下會生成sdb.bin二進制文件。

如果想生成結果文件以查看,可以將/dev/null改為文件名,如file1,則輸出結果會保存到file1中,如

$blkparse sdb -d sdb.bin > file1

4.利用fio重放日志

fio --name=replay --filename=/dev/sdb --direct=1 --read_iolog=sdb.bin

就可以看到結果了。

要注意的,fio要采用最近的版本,否則在重放的時候可能會出現問題。

我原先采用了apt-get方式安裝,默認1.38版本,結果老是報錯,糾結了很久。。。。。。

後來,采用源碼編譯安裝的方式,更換為更高的1.58版本,立馬通過。在編譯過程中,可能會報錯,要注意libaio的庫已安裝,即libaio-dev。通過這兩步,應該就沒什麼問題了。(Ubuntu下不同源好像版本不同,有較高版本的,如果需要,可仔細看下。不過,編譯也很簡單,幾分鐘的事。。。。)

fio 的詳細介紹:請點這裡
fio 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved