用bonnie++測試磁碟I/O

space6212發表於2019-07-20

bonnie++是一款開源的磁碟I/O測試的工具。我們可以用它來測試磁碟和檔案系統的I/O效能。


一、下載安裝
下載地址是:

目前正式釋出的最新版本是bonnie++-1.03a
你也可以在下面的地址下載更新的版本,但這些版本是試驗版本,可能會存在問題。

下載後需要編譯安裝。過程如下:
[root@test src]# tar zxvf bonnie++-1.03a.gz
bonnie++-1.03a/
bonnie++-1.03a/sun/
bonnie++-1.03a/sun/Makefile
bonnie++-1.03a/sun/pkginfo.in
bonnie++-1.03a/sun/pkginfo
bonnie++-1.03a/sun/prototype
bonnie++-1.03a/semaphore.cpp
bonnie++-1.03a/bon_suid.cpp
bonnie++-1.03a/Makefile
bonnie++-1.03a/bon_csv2html.1
bonnie++-1.03a/bon_file.h
bonnie++-1.03a/bon_csv2html.in
bonnie++-1.03a/conf.h.in
bonnie++-1.03a/bon_io.cpp
bonnie++-1.03a/bonnie++.spec
bonnie++-1.03a/configure
bonnie++-1.03a/bon_csv2html
bonnie++-1.03a/bon_csv2txt.in
bonnie++-1.03a/bon_time.h
bonnie++-1.03a/semaphore.h
bonnie++-1.03a/configure.in
bonnie++-1.03a/bonnie++.8
bonnie++-1.03a/forkit.h
bonnie++-1.03a/credits.txt
bonnie++-1.03a/bonnie++.spec.in
bonnie++-1.03a/install.sh
bonnie++-1.03a/changelog.txt
bonnie++-1.03a/bonnie++.cpp
bonnie++-1.03a/forkit.cpp
bonnie++-1.03a/zcav.cpp
bonnie++-1.03a/port.h.in
bonnie++-1.03a/debian/
bonnie++-1.03a/debian/dirs
bonnie++-1.03a/debian/docs
bonnie++-1.03a/debian/control
bonnie++-1.03a/debian/rules
bonnie++-1.03a/debian/changelog
bonnie++-1.03a/debian/copyright
bonnie++-1.03a/conf.h
bonnie++-1.03a/bon_file.cpp
bonnie++-1.03a/Makefile.in
bonnie++-1.03a/bon_csv2txt.1
bonnie++-1.03a/bonnie.h.in
bonnie++-1.03a/port.h
bonnie++-1.03a/zcav.8
bonnie++-1.03a/copyright.txt
bonnie++-1.03a/sh.common
bonnie++-1.03a/bon_io.h
bonnie++-1.03a/bonnie.8
bonnie++-1.03a/bonnie.h
bonnie++-1.03a/bon_csv2txt
bonnie++-1.03a/bon_time.cpp
bonnie++-1.03a/readme.html

[root@test bonnie++-1.03a]# make
g++ -O2 -DNDEBUG -Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -c bon_io.cpp
g++ -O2 -DNDEBUG -Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -c bon_file.cpp
g++ -O2 -DNDEBUG -Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -c bon_time.cpp
g++ -O2 -DNDEBUG -Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -c semaphore.cpp
g++ -O2 -DNDEBUG -Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -c forkit.cpp
g++ -O2 -DNDEBUG -Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -c bon_suid.cpp
g++ -O2 -DNDEBUG -Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope bonnie++.cpp -o bonnie++ bon_io.o bon_file.o bon_time.o semaphore.o forkit.o bon_suid.o
bonnie++.cpp: In function `void ctrl_c_handler(int, siginfo_t*, void*)':
bonnie++.cpp:142: warning: unused parameter `int sig'
bonnie++.cpp:142: warning: unused parameter `void*unused'
g++ -O2 -DNDEBUG -Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope zcav.cpp -o zcav bon_suid.o
[root@test bonnie++-1.03a]# ls
bon_csv2html bon_file.h bonnie++.8 bon_suid.o config.log forkit.cpp port.h.in zcav
bon_csv2html.1 bon_file.o bonnie++.cpp bon_time.cpp config.status forkit.h readme.html zcav.8
bon_csv2html.in bon_io.cpp bonnie.h bon_time.h configure forkit.o semaphore.cpp zcav.cpp
bon_csv2txt bon_io.h bonnie.h.in bon_time.o configure.in install.sh semaphore.h
bon_csv2txt.1 bon_io.o bonnie++.spec changelog.txt copyright.txt Makefile semaphore.o
bon_csv2txt.in bonnie++ bonnie++.spec.in conf.h credits.txt Makefile.in sh.common
bon_file.cpp bonnie.8 bon_suid.cpp conf.h.in debian port.h sun

二、使用說明
[root@test bonnie++-1.03a]# ./bonnie++
You must use the "-u" switch when running as root.
usage: bonnie++ [-d scratch-dir] [-s size(Mb)[:chunk-size(b)]]
[-n number-to-stat[:max-size[:min-size][:num-directories]]]
[-m machine-name]
[-r ram-size-in-Mb]
[-x number-of-tests] [-u uid-to-use:gid-to-use] [-g gid-to-use]
[-q] [-f] [-b] [-p processes | -y]

Version: 1.03
-d:在測試時會生成一些檔案,並讀或更改這些檔案。這個引數是設定測試檔案放置的路徑。
-s:單個測試檔案的尺寸。這個引數值必須大於等於2倍測試使用的記憶體(最好為測試使用記憶體的兩倍)。測試時應該用大檔案尺寸。
-m:測試的機器名稱
-r:測試需要用多少記憶體。如果省略這個值,則會用全部的實體記憶體。
-x:迴圈幾次
-u:指定執行測試的OS使用者。當以root執行時,必須顯式指定。

三、例項測試

下面是在一個普通PC上的測試過程和結果:

[root@test bonnie++-1.03a]# ./bonnie++ -d /test -s 1000 -u root
Using uid:0, gid:0.
File size should be double RAM for good results, RAM is 1000M.
[root@test bonnie++-1.03a]# ./bonnie++ -d /test -s 2000 -u root
Using uid:0, gid:0.
Writing with putc()...done
Writing intelligently...done
Rewriting...done
Reading with getc()...done
Reading intelligently...done
start 'em...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
test 2000M 18765 47 29007 6 12849 3 11894 27 12196 1 67.0 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 912 31 +++++ +++ +++++ +++ 2910 98 +++++ +++ 12508 95
test,2000M,18765,47,29007,6,12849,3,11894,27,12196,1,67.0,0,16,912,31,+++++,+++,+++++,+++,2910,98,+++++,+++,12508,95

Sequential Output部分表示寫檔案的相關資訊
Sequential Input部分表示讀檔案的相關資訊
Per Chr表示以字元為單位讀寫檔案
Block表示以block為單位讀寫檔案
Rewrite表示修改並重寫已經存在的檔案的每一個block
K/sec表示每秒讀或寫檔案的速率,以K為單位
%CP表示在某階段執行操作時平均消耗的CPU

可以看到,該機器(普通PC)的字元寫速度可達18765K/sec,block寫速度可達29007K/sec,
字元讀速度可達11894K/sec,block讀速度可達12196K/sec

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63733/,如需轉載,請註明出處,否則將追究法律責任。

相關文章