用bonnie++測試磁碟I/O
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux下磁碟I/O測試Linux
- 如何監測 Linux 的磁碟 I/O 效能Linux
- 【面試】I/O 複用面試
- 【工具】ORION I/O 測試工具
- 如何在Linux系統伺服器中測試儲存/磁碟I/O效能?Linux伺服器
- MySQL之磁碟I/O過高排查MySql
- 測試boot庫下I/O模型型別boot模型型別
- Linux下的5種I/O模型與3組I/O複用Linux模型
- 計算機I/O與I/O模型計算機模型
- 從網路I/O模型到Netty,先深入瞭解下I/O多路複用模型Netty
- I/O多路複用技術(multiplexing)
- Java I/OJava
- I/O流
- 在 Linux 中如何使用 iotop 和 iostat 監控磁碟 I/O 活動?LinuxiOS
- 多路I/O複用:select、poll、epoll(二)
- 網路程式設計-I/O複用程式設計
- Python教程:精簡概述I/O模型與I/O操作Python模型
- c++ I/OC++
- Java(8)I/OJava
- 關於I/O
- 【java】I/O流Java
- 02. I/O 操作
- Hadoop的I/O操作Hadoop
- NodeJs 非同步 I/ONodeJS非同步
- Java 非同步 I/OJava非同步
- 理解I/O Completion Port
- python 非同步 I/OPython非同步
- JAVA I/O系統Java
- 系統級 I/O
- Google I/O Extend 2018Go
- 網路I/O模型模型
- Netty權威指南:I/O 多路複用技術Netty
- Google I/O 2018 : 應用於 PC 端的 PWAGo
- 一文搞懂I/O多路複用及其技術
- 詳解Go語言I/O多路複用netpoller模型Go模型
- 流?I/O 操作?阻塞?epoll?
- I/O模型、Libuv和Eventloop模型OOP
- 由Nodejs來說I/ONodeJS