现在的位置: 首页 > 综合 > 正文

磁盘I/O测试工具Bonnie++的专题

2013年10月10日 ⁄ 综合 ⁄ 共 3275字 ⁄ 字号 评论关闭

关于磁盘I/O测试工具Bonnie++的专题

 

作者简介:

张乐奕,通常使用的网名为kamus,也曾用过seraphim,现在任职于北京某大型软件公司,Oracle数据库DBA,主要负责证券行业的核心交易系统数据库管理及维护工作。

热切关注Oracle技术和相关操作系统技术,出没于各大数据库技术论坛,目前是中国最大的Oracle技术论坛www.itpub.net的数据库管理版版主。

阅读更多技术文章和随笔可以登录我的个人bloghttp://blog.cdsn.net/kamus

 

目录

前言.... 1

安装.... 2

使用... 4

评测... 7

相关链接.... 8

 

前言

最早是eygleitpub上推荐这个工具,起因是我对于Sun的软RAID性能提出的置疑,后来eygle陆续用这个工具作了一些盘阵IO的测试,包括EMCT3的一些比较。

这些测试结果都发表在eygle的个人站点上,见本文最后相关链接部分。

 

但是我却一直没有自己用Bonnie++测试过IO性能,最近一个客户要修改自己盘阵的RAID配置,本来就是使用D2的阵列,只能支持软RAID的一个性能比较差的古老东东了,在我们的测试过程中忽然又发现12块盘的盘阵配置的是RAID10,但是同时只有2块盘在作读写,也就是stripe设置只是2,这个问题在一年多以前刚上系统的时候就是这样,居然一直没有发现用了这么长时间。

客户最终决定重新设置一下RAID的配置,首先将redodatafile分开,redo所在的盘用4块作RAID10,剩下8块再作RAID10,供数据文件使用,并且重新设置striperedo所在的lun设置为2datafile所在的lun设置为4

从理论上看,这样的修改应该会大幅度提到整个数据库的I/O效率,但是客户要求能够有一个实际的修改效果报告,也就是需要作修改前和修改后的对比。

这样,于是决定使用bonnie++来作磁盘级的修改效果报告。至于数据库级的修改效果自然有压力测试程序可以完成,此处不表。

 

既然决定使用,那么自然要琢磨一下该怎么用了。刚刚bonnie++已经开始运行了,于是闲下来,写了这篇文章。

 

安装

其实今天大部分的时间是耗在怎么让bonnie++运行起来上面了。

 

bonnie++的主页上下载了最新的sourcebonnie++1.03a.tgz

gunzip bonnie++-1.03a.tgz

生成bonnie++-1.03a.tar文件,然后解包

tar xvf bonnie++-1.03a.tar

生成bonnie++-1.03a文件夹

cd bonnie++-1.03a

make

报错。

/usr/ucb/cc:  language optional software package not installed

 

原来编译器就根本没装。

先介绍一下主机情况,一台SunFire v480,两块73G内置硬盘,4UltraSPARC-III+CPU8G内存,安装的是Solaris8,由于需要模拟真实环境,所以安装的是比较老的02.2版本,而且没有打任何patch

 

Sun给的安装光盘中居然没有找到Companion CD,编译器应该是在这张盘上,没办法只好上网自己找,还好,很快就找到一个很棒的站点blastwave,包括了Solaris89sparcx86版本的所有需要的package

 

根据gcc包下载页面中的说明,发现需要下载下面四个package

common-1.3.3-SunOS5.8-sparc-CSW.pkg.gz

gcc3rt-3.3.3,REV=2004.04.23-SunOS5.8-sparc-CSW.pkg.gz

libiconv-1.8,REV=2003.01.12-SunOS5.8-sparc-CSW.pkg.gz

gcc3-3.3.3,REV=2004.03.22-SunOS5.8-sparc-CSW.pkg.gz

 

前面三个包是最后gcc3包的前提条件,必须安装。全部下载完毕,开始安装第一个包,也就是common那个包,报错。

提示操作系统的110934补丁版本过低,需要升级。

 

OK,再上网找,直接用google查,关键字是“110934 soalris”,通常前面几个link就会指向SunSolve站点的下载页面,patch通常不大,很快就下载完了。

 

开始打补丁,patchadd 110934-21

系统运行半天,报错。

说要安装这个补丁就需要先安装110380-04的补丁。我倒。

再上网找,下载完110380-04,先patchadd 110380-04,一切正常。

再重新patchadd 110934-21,一切正常。

 

打完补丁以后,重新安装common包,OK,一切正常。

pkgadd -d common-1.3.3-SunOS5.8-sparc-CSW.pkg.gz

 

然后依次安装其它的包,一切正常。

 

这个包将gcc安装到/opt/csw/gcc3目录下。

说明文件指出安装完gcc将创建/opt/csw/bin下的gcc执行程序,所以要求将这个路径加入用户的PATH变量中,但是实际上安装完gcc3.3的版本以后,并没有在上面的路径中生成任何文件。

后来我再安装gcc2.95版本的时候发现这个版本的安装才是将gcc生成到/opt/csw/bin中。

所以如果我们在Solaris8中即安装了gcc2.95又安装了gcc3.3,那么要注意这两个版本的gcc文件在不同的路径下,其实这也是应该的,否则新版本会覆盖旧版本,往往是很多人不愿意的。

 

回到上面,安装完gcc3以后,再次运行make,仍然报错。

/usr/ucb/cc:  language optional software package not installed

 

检查PATH环境变量,已经将/opt/csw/gcc3/bin目录加入了。

想了一下,感觉应该是系统还在使用原来的/usr/ucb/cc。于是将cc链接到新安装的gcc上,这样无论什么时候调用cc其实都是直接使用gcc了。

whereis cc

cd /usr/ucb

mv cc cc.org

ln -s /opt/csw/gcc3/bin/gcc /usr/ucb/cc

 

备注:如果要安装gcc2的包,那么需要下载下面两个package

gcc2rt-2.95.3,REV=2003.03.01-SunOS5.8-sparc-CSW.pkg.gz

gcc2-2.95.3-SunOS5.8-sparc-CSW.pkg.gz

安装完毕以后,同样是将cc链接到这个版本的gcc上。

whereis cc

cd /usr/ucb

mv cc cc.org

ln -s /opt/csw/bin/gcc /usr/ucb/cc

 

修改完毕以后编译成功。

 

运行bonnie++,报错。

libstdc++.so.5: cannot open shared object file: No such file or directory.

 

继续查资料,发现bonnie++寻找的lib路径是环境变量LD_LIBRARY_PATH指定的路径,但是这个路径下并没有libstdc++.so.5文件,于是手工将libstdc++.so.5文件从gcc3的安装路径中ln/usr/lib下面。

# ln -s /opt/csw/gcc3/lib/libstdc++.so.5 /usr/lib/libstdc++.so.5

再次运行,仍然报错。

libgcc_s.so.1: cannot open shared object file: No such file or directory.

这次就轻车熟路了,直接再作一次link

# ln -s /opt/csw/gcc3/lib/libgcc_s.so.1 /usr/lib/libgcc_s.so.1

 

终于,bonnie++可以正常运行了。

 

我们可以不需要自己编译,在eygle的站点上有Solaris8下载编译好的bonnie++。直接可以使用,当然如果运行报libstdc++.so.5

抱歉!评论已关闭.