iozone測試磁盤性能


什么是iozone?

  iozone是一個文件系統的benchmark工具,可以測試不同的操作系統中文件系統的讀寫性能。 可以測試 Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write 等等不同的模式下的硬盤的性能。 測試的時候請注意,設置的測試文件的大小一定要大過你的內存(最佳為內存的兩倍大小),不然linux會給你的讀寫的內容進行緩存。會使數值非常不真實。

一、iozone安裝

官網地址:http://www.iozone.org/
[root@lvs_m ~]# wget http://www.iozone.org/src/current/iozone-3-471.src.rpm
[root@lvs_m ~]# rpm -ivh iozone-3-471.src.rpm 
   1:iozone                 ########################################### [100%]
[root@lvs_m current]# pwd
/root/rpmbuild/SOURCES/iozone3_471/src/current
[root@lvs_m current]# make linux-AMD64

#最簡單開始使用iozone方法是自動模式
[root@lvs_m ~]# /root/rpmbuild/SOURCES/iozone3_471/src/current/iozone -a
        Iozone: Performance Test of File I/O
                Version $Revision: 3.471 $
                Compiled for 64 bit mode.
                Build: linux-AMD64 

        Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
                     Al Slater, Scott Rhine, Mike Wisner, Ken Goss
                     Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
                     Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
                     Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
                     Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
                     Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
                     Vangel Bojaxhi, Ben England, Vikentsi Lapa,
                     Alexey Skidanov.

        Run began: Thu Nov 23 18:21:03 2017

        Auto Mode
        Command line used: /root/rpmbuild/SOURCES/iozone3_471/src/current/iozone -a
        Output is in kBytes/sec
        Time Resolution = 0.000001 seconds.
        Processor cache size set to 1024 kBytes.
        Processor cache line size set to 32 bytes.
        File stride size set to 17 * record size.
                                                              random    random     bkwd    record    stride                                    
              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
              64       4   763021  2133730  4018152  4274062  5860307  2006158  2772930   2561267   3738358  1780008  1879725  4018152   261173
              64       8   592827  2278628  9318832  5389653  9318832  2298136  2892445   2561267   3791156  1304314  2133730  5389653  8182586
              64      16  1013707  2561267  9006179 10402178 10821524  2772930  2892445   2467108   5283570  1933893  2203800  4897948  7940539
              64      32  1066042   889431  7940539  9006179 12902017  3022727  3203069   2561267   3738358  1828508  2561267  5283570  9006179
              64      64  1066042  2561267 10821524  6421025 10402178  2358717  2923952   2222043   3203069  2067979  1892980  4564786  4018152
             128       4  1133103  2511022  8036304  2511022  6406138   604036  3053774   2843510   3785961  1911894  1852520  5603747  6727225
             128       8   592699  1684006  7082197  9129573  9129573  3199360  3468030   3759450   5847904  1802755  2132084  6406138  8414153
             128      16  1243315  2843510  9129573  5545860  9795896  3036502  3657016   3560017   5545860  2377579   321516   383258  4267461
             128      32  1346196  2140585  8036304 10567140 12842051  4012317  4759253   4717434   5122535  2558895  2784517  7082197  9129573
             128      64  1291158  2511022 11720614  8548124 11720614  3560017  4135958   3657016   4934216  2175277  3199360  3277486  4407601
             128     128  1278855   554157  3199360  2985839  3199360   739689   824932   1051027   1967960  1349580  1911894  3759450  3759450
             256       4   372593   664935  1778290  1881098  1924938   666586  1347557    924200   1369908  1600674  1729594  3285566  2539563
             256       8   213688  2114473  4404088  3756894  7314033  3123106   827989    358056   1280084   650041   859127  1855098  3770085
             256      16   894929   865358  4132864  5569035  9868433  2726577  2463808   1274008   2285501   930608  1755037  3770085  4840911
#iozone將在所有模式下進行測試,使用記錄塊從4k到16M,測試文件大小從64k到512M
#以圖表形式顯示測試結果,可以使用,iozone將測試結果放在Excel中
[root@lvs_m ~]# /root/rpmbuild/SOURCES/iozone3_471/src/current/iozone -Rab output.xls
#內存為2G是我們測試文件設置為4G
[root@lvs_m ~]# /root/rpmbuild/SOURCES/iozone3_471/src/current/iozone -Ra -g 4g
#只關心文件磁盤的read/write性能,而不必花費時間在其他模式上測試,則我們需要指定測試模式。
[root@lvs_m ~]# /root/rpmbuild/SOURCES/iozone3_471/src/current/iozone -Ra -g 4g -i 0 -i 1

 

 二、常用參數

-a 全面測試,比如塊大小它會自動加
-i N 用來選擇測試項, 比如Read/Write/Random 比較常用的是0 1 2,可以指定成-i 0 -i 1 -i2.這些別的詳細內容請查man
0=write/rewrite
1=read/re-read
2=random-read/write
3=Read-backwards
4=Re-write-record
5=stride-read
6=fwrite/re-fwrite
7=fread/Re-fread
8=random mix
9=pwrite/Re-pwrite
10=pread/Re-pread
11=pwritev/Re-pwritev
12=preadv/Re-preadv
-r block size 指定一次寫入/讀出的塊大小
-s file size 指定測試文件的大小
-f filename 指定測試文件的名字,完成后會自動刪除(這個文件必須指定你要測試的那個硬盤中)
-F file1 file2... 指定多線程下測試的文件名
批量測試項:
-g -n 指定測試文件大小范圍,最大測試文件為4G,可以這樣寫 -g 4G
-y -q 指定測試塊的大小范圍
輸出:
下面是幾個日志記錄的參數.好像要輸出成圖象進行分析,需要指定-a的測試才能輸出
-R 產生Excel到標准輸出
-b 指定輸出到指定文件上. 比如 -Rb ttt.xls

 三、測試的定義

Write: 測試向一個新文件寫入的性能。當一個新文件被寫入時,不僅僅是那些文件中的數據需要被存儲,還包括那些用於定位數據存儲在存儲介質的具體位置的額外信息。這些額外信息被稱作“元數據”。它包括目錄信息,所分配的空間和一些與該文件有關但又並非該文件所含數據的其他數據。拜這些額外信息所賜,Write的性能通常會比Re-write的性能低。
Re-write: 測試向一個已存在的文件寫入的性能。當一個已存在的文件被寫入時,所需工作量較少,因為此時元數據已經存在。Re-write的性能通常比Write的性能高。
Read: 測試讀一個已存在的文件的性能。
Re-Read: 測試讀一個最 近讀過的文件的性能。Re-Read性能會高些,因為操作系統通常會緩存最 近讀過的文件數據。這個緩存可以被用於讀以提高性能。
Random Read: 測試讀一個文件中的隨機偏移量的性能。許多因素都可能影響這種情況下的系統性能,例如:操作系統緩存的大小,磁盤數量,尋道延遲和其他。
Random Write: 測試寫一個文件中的隨機偏移量的性能。同樣,有許多因素可能影響這種情況下的系統性能,例如:操作系統緩存的大小,磁盤數量,尋道延遲和其他。
Random Mix: 測試讀寫一個文件中的隨機偏移量的性能。許多因素可能影響這種情況下的系統性能運作,例如:操作系統緩存的大小,磁盤數量,尋道延遲和其他。這個測試只有在吞吐量測試模式下才能進行。每個線程/進程運行讀或寫測試。這種分布式讀/寫測試是基於round robin 模式的。最好使用多於一個線程/進程執行此測試。
Backwards Read: 測試使用倒序讀一個文件的性能。這種讀文件方法可能看起來很可笑,事實上,有些應用確實這么干。MSC Nastran是一個使用倒序讀文件的應用程序的一個例子。它所讀的文件都十分大(大小從G級別到T級別)。盡管許多操作系統使用一些特殊實現來優化順序讀文件的速度,很少有操作系統注意到並增強倒序讀文件的性能。
Record Rewrite: 測試寫與覆蓋寫一個文件中的特定塊的性能。這個塊可能會發生一些很有趣的事。如果這個塊足夠小(比CPU數據緩存小),測出來的性能將會非常高。如果比CPU數據緩存大而比TLB小,測出來的是另一個階段的性能。如果比此二者都大,但比操作系統緩存小,得到的性能又是一個階段。若大到超過操作系統緩存,又是另一番結果。
Strided Read: 測試跳躍讀一個文件的性能。舉例如下:在0偏移量處讀4Kbytes,然后間隔200Kbytes,讀4Kbytes,再間隔200Kbytes,如此反復。此時的模式是讀4Kbytes,間隔200Kbytes並重復這個模式。這又是一個典型的應用行為,文件中使用了數據結構並且訪問這個數據結構的特定區域的應用程序常常這樣做。
許多操作系統並沒注意到這種行為或者針對這種類型的訪問做一些優化。同樣,這種訪問行為也可能導致一些有趣的性能異常。一個例子是在一個數據片化的文件系統里,應用程序的跳躍導致某一個特定的磁盤成為性能瓶頸。
Fwrite: 測試調用庫函數fwrite()來寫文件的性能。這是一個執行緩存與阻塞寫操作的庫例程。緩存在用戶空間之內。如果一個應用程序想要寫很小的傳輸塊,fwrite()函數中的緩存與阻塞I/O功能能通過減少實際操作系統調用並在操作系統調用時增加傳輸塊的大小來增強應用程序的性能。
這個測試是寫一個新文件,所以元數據的寫入也是要的。
Frewrite:測試調用庫函數fwrite()來寫文件的性能。這也是一個執行緩存與阻塞寫操作的庫例程。是緩存在用戶空間之內。如果一個應用程序想要寫很小的傳輸塊,fwrite()函數中的緩存與阻塞I/O功能可以通過減少實際操作系統調用並在操作系統調用時增加傳輸塊的大小來增強應用程序的性能。
這個測試是寫入一個已存在的文件,由於無元數據操作,測試的性能會高些。
Fread:測試調用庫函數fread()來讀文件的性能。這是一個執行緩存與阻塞讀操作的庫例程。緩存在用戶空間之內。如果一個應用程序想要讀很小的傳輸塊,fwrite()函數中的緩存與阻塞I/O功能能通過減少實際操作系統調用並在操作系統調用時增加傳輸塊的大小從而增強應用程序的性能。
幾個特殊測試:
Mmap:許多操作系統支持mmap()的使用來映射一個文件到用戶地址空間。映射之后,對內存的讀寫將同步到文件中去。這對一些希望將文件當作內存塊來使用的應用程序來說很方便。一個例子是內存中的一塊將同時作為一個文件保存在於文件系統中。

 更多用法可以用命令查看:

[root@lvs_m ~]# /root/rpmbuild/SOURCES/iozone3_471/src/current/iozone -h

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM