曾經測試Linux系統下的分布式叢集系統的性能,使用了一些測試軟體,公司讓我給部門同僚做一次基礎教育訓練,于是翻看以前所寫的記錄資料挑選了其中幾個,所記之處并不完全,隻記錄使用的功能。
1.Iozone
iozone是一個檔案系統的benchmark工具,可以測試不同的作業系統中檔案系統的讀寫性能。
可以測試 Read, write, re-read, re-write, readbackwards, read strided, fread, fwrite, random read, pread, mmap, aio_read,aio_write 等等不同的模式下的硬碟的性能。
測試參數: -i # 用來指定測試内容,我主要用到以下兩種:
0=write/rewrite
1=read/re-read
例如測試寫:-i 0,測試讀和寫:-i 0 -i 1。
-R 産生execl格式的輸出日志
-b 将産生二進制的execl的日志檔案名
-s 測試的檔案大小
-r 檔案塊大小
-a 在希望的檔案系統上測試,不過隻有-a的話會進行全面測試,要花費很長時間,最好用-i指定測試範圍。

上圖顯示了一個iozone的測試ext3本地檔案系統結果的一部分,測試檔案塊的大小為1m,測試檔案的大小4G,測試包括檔案的關閉時間和flush時間,測試内容包含寫/重寫、讀/重讀,測試時産生的二進制日志會儲存在/home目錄下的test.xls中。
通常情況下,測試的檔案大小要求至少是系統cache的兩倍以上,這樣,測試的結果才是真是可信的。如果小于cache的兩倍,檔案的讀寫測試讀寫的将是cache的速度,測試的結果大打折扣。
2.Mdtest
Mdtest是一個測試檔案系統中繼資料性能的工具。
我們經常用到的一些參數的含義:
-d 測試運作的目錄
-i 測試循環的次數
-n 每個程序将要建立/統計/删除的目錄和檔案數目
-w 檔案建立以後寫入多少bytes
-p 循環前的時間延遲
-D 隻針對目錄進行測試
-F 隻針對檔案進行測試
上圖是一個mdtest的測試結果,測試參數為:測試運作的目錄為/mnt/aaa,建立/統計/删除的目錄和檔案數為30000,反複執行3次。
從上圖可看到目錄建立每秒能夠完成的操作數最大為7016.495次,每秒能夠完成的操作數平均為6691.628次;檔案建立每秒能夠完成的操作數最大為63521.371次,每秒能夠完成的操作數平均為62325.578次。(因測試為本地檔案系統,故數值比較大)
3.Simul
Simul是一個并行檔案系統的測試工具,它可以同時模拟多個結點和程序來執行檔案系統的操作來測試并行檔案系統的準确性和一緻性。
主要參數含義:
-d 測試将要運作的目錄
-f 開始測試時的測試編号(預設為0)
-l 最後測試時的測試編号(預設為39)
-i 測試過程中包含的測試編号
-e 測試過程中不包括的測試編号
-n每次測試重複的次數
-N 所有的測試重複的次數
由上圖可知,測試目錄為/mnt/aaa/,測試執行0到39的所有測試,測試結果為All test passed!
4.Fdtree
Fdtree是一個用來測試檔案系統中繼資料性能的工具,同時也可以用來進行壓力測試。
參數含義:
-C 隻建立目錄樹
-D 打開調試
-R 隻移除目錄樹
-l 建立目錄的遞歸等級,預設為4
-d 每個等級所要建立的目錄個數
-f 每個目錄下所要建立的檔案個數
-o 開始測試時的路徑名
-s 檔案大小(是以block計算的,linux下block大小為4096Bytes),預設為10
fdtree.bash –d 1 –l 2 –f 10000 –s10000
這個例子是一個檔案壓力的測試,創造的目錄結構的等級為2,每個等級下建立1個目錄,每個目錄下檔案的個數為10K,每個檔案的大小為10000*4096Bytes=40.96MB,總的資料大小為2*10000*40.96MB=819.2GB。
fdtree.bash -d 10000 -l 100
這個例子是一個目錄壓力的測試,創造的目錄結構的等級為100,每個等級下目錄的個數為10K。第一等級下的總目錄個數為10K,第二等級下的總目錄總個數為10K*10K,第三等級下的總目錄個數為10K*10K*10K,依次類推!
上圖顯示了一個Fdtree的測試結果,目錄等級為5,每個等級下建立目錄的個數為5,每個目錄下檔案的個數為5,檔案大小為40KB。