一、 准备
操作系统 :Linux, 内核版本2.6
需要软件:tpccuva-1.2.3, postgresql-8.1.15, gnuplot-4.2.5。
tccuva是实现标准TPC-C。
Postgresql是最稳定的开源sql数据库。
gunplot是一个数学软件,可以根据数据画出相应的函数图形。
二、 安装
1. 创建用户
[root@RedHat /]# useradd -m tpcctest
[root@RedHat /]# passwd tpcctest(密码自行创建)
以tpcctest身份登录到系统
[root@RedHat /]# su tpcctest
[tpcctest@RedHat /]$
创建相关目录
tpcctest@linux:>mkdir $HOME/tpcc-uva
tpcctest@linux:>mkdir $HOME/tpcc-uva/pgsql
tpcctest@linux:>mkdir $HOME/tpcc-uva/bin
2. 安装PostgreSQL
1)执行下列命令安装PostgreSQL数据库
tpcctest@linux:> ./configure –prefix=$HOME/tpcc-uva/pgsql
tpcctest@linux:>gmake
tpcctest@linux:>gmake install
2)修改PATH和LD_LIBRARY_PATH环境变量。
3)编辑~/.bash_profile文件,添加以下内容
PATH=/usr/local/pgsql/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
export PATH LD_LIBRARY_PATH
4)执行下面的命令,使修改的环境变量生效。
tpcctest@linux :> source ~/.bash_profile
5)输入以下命令,检验环境变量的修改是否生效
tpcctest@linux:> which initdb
如果修改正确,则会输出以下信息
$HOME/tpcc-uva/bin/initdb
6) 启动PostgreSQL
tpcctest@linux:>initdb -D $HOME/tpcc-uva/pgsql/data
tpcctest@linux:> postmaster -D $HOME/tpcc-uva/pgsql/data >log.out 2>log.err&
每次重启系统后都要执行上面的命令来启动PostgreSQL。
7)修改PostgreSQL的参数
修改$HOME/tpcc-uva/pgsql/data/postgresql.conf
将#checkpoint_segments = 3 # in logfile segments (16MB each), min 1
替换为checkpoint_segments = 10 # in logfile segments (16MB each), min 1
将#checkpoint_timeout = 300 # in seconds, range 30-3600
替换为checkpoint_timeout = 3600 # in seconds, range 30-3600
8)强制PostgreSQL重新读取配置文件
tpcctest@linux:>killall -HUP postmaster
3. 安装gnuplot
解压gnuplot后,进入gnuplot的源代码的目录,执行下列命令安装
tpcctest@linux:> ./configure –prefix=$HOME/tpcc-uva/bin –without-x
tpcctest@linux:> make
tpcctest@linux:> make install
4. 安装tpcc-uva.
将tpcc-uva的安装包放在$HOME/tpcc-uva目录下
解压,进入解压后的目录,执行下列命令安装
tpcctest@linux:> make
tpcctest@linux:> make install
更多见下一页: http://www.linuxidc.com/Linux/2013-07/87987p2.htm
三、 使用tpcc-uva测试
执行$HOME/tpcc-uva/bin/bench命令,开始执行tpcc-uva测试工具。测试工具启动后最多会出现8个选项让用户选择。
1. 选项1Create a New Test Database(创建新的测试数据库)
这个选项允许用户创建一个新的数据库供tpcc-uva测试用,新创建的数据库惠子tpc-uva测试的工程中根据需要来填充。如果这个选项没有出现,说明数据库已经被创建了,新数据库被放在$HOME/tpcc-uva/pgsql/data目录下。
选了这个选项后,程序会问数据库需要包含几个数据仓库。数据仓库的数目在1~100之间。数据仓库越多,测试压力越大。
注意:数据仓库的个数太多可能会造成测试失效。对于pc来说数据仓库的个数一般是1,处理能力强的机器数目可以相应增加。每个数据仓库占用137M的空间。
2. 选项2 Restore Existing Database (恢复存在的数据库)
这个选项撤销在测试过程中测试软件对数据库的修改,只有创建数据库之后这个选项才会出现。
如果使用恢复的数据库做测试,测试的结果可能会比用新创建的数据库做测试的结果差。另一方面恢复一个数据库的时间会比创建一个新数据库的时间少很多。一般推荐使用恢复的数据库做初步的测试
3. 选项3Run The Test(开始测试)
这个选项开始性能测试。只有当有数据库被创建或者被恢复时这个选项才会出现。
程序会询问用户用于测试的参数。这些参数包括:
Number of warehouses (数据仓库的个数):这个数字应该少于或等于存在数据库中的数据仓库的个数。
Number of terminals per warehouse (每个数据仓库的终端数):TPC-C官方规范规定这个数字应该是10,如果用于初级测试我们推荐这个数字应该小于10。
Ramp-up period(启动时间):终端进程会在启动时间内开启。这段时间过后性能会趋于稳定,这是再开始测试会比较准确。典型的启动时间应该设置为20分钟。
Measurement period (测试时间):这段时间测试工具测量系统的性能。TPC-C规定这个周期应该持续2小时~8小时。
所有的参数设置正确后,程序会提醒用户测试过程中是否要执行清理。清理可以减少数据库产生的残留信息,残留信息过多会影响测试的性能。对于8个小时的测试,最好每60分钟执行一次清理,清理的次数要小于6次。
4. 选项4:Check Database Consistency(检查数据库一致性)
在经过确认之后,测试要在检查完数据库的一致性后开始。如果对某个表的检查失败,程序会要求用户确认后继续处理。虽然出错后仍然可以继续处理,但是仍然强力要求在出错时恢复或重构数据库。
5. 选项5Delete Database(删除数据库)
删除存在的数据库
6. 选项6Perform Data Analysis(执行数据分析)
这个选项让程序分析测试的结果数据。所有的信息包括检查点文件和清理的信息都在屏幕上显示。在屏幕上显示的信息还有用于生成性能分析图形的文件都会在当前路径下保存。在显示完后在屏幕上打印一条信息来通知用户测试是否通过了。
7. 选项7 Check Database State(检查数据库状态)
这个选项检查数据库的行数,并把得到的信息告诉用户。这个信息用来指导数据库是否在前一次测试中被使用过了。如果被使用过了,用户可以选择删除这个数据库并建立一个新数据库,或者恢复这个数据库并继续使用它。
8. 选项8 Quit(退出)
这个选项退出测试程序。创建的数据库会保留下次使用。
四、查看测试结果
1. 保存结果
测试完成进入主菜单后,输入选项6可以查看测试结果。测试结果在屏幕上输出完毕后测试程序会提示是否需要保存结果,输入文件名后结果会保存到文件中(如gresult)。
greult中保存了测试的大体情况,对每种事务类型分别记录统计信息。在gresult文件中可以看到类似”NEW-ORDER TRANSACTIONS:”的标题,这就是对每种事物类型进行总结的开始。
在测试过程注意使用抓取系统信息:
iostat –xkd 1 20(表示1秒抓取一次,连续20次)
vmstat 1 20 (表示1秒抓取一次,连续20次)
测试结果如果是failed,具有参考意义;
注意:在当前目录下回生成很多文件,其数据具有参考意义,比如g4.dat文件可以用来画图,可以观察到数据的波动与走向。
2. 使用gnuplot画图
使用gnuplot画图需要先有一个画图脚本,tpcc-uva准备了一些脚本模板存在tpcc-uva源代码中的scripts目录下。脚本名561,562,563,564的含义是tpcc官方说明的第5.6.1节,5.6.2节…561画的是响应时间的图,562画的是响应时间与吞吐率对比的图,563画的是思考时间(think time)的图,564画的是吞吐率的图。
使用561.gnp时,要把这个脚本拷贝到保存tpcc结果的目录下,然后用gresult中统计响应时间的90th的值乘以4得到的记过替换561.gnp中的<4x90thPERCENTILE>。
Gnuplot生成的图片是以.eps结尾的,可以用photoshop打开.
五、附录
linux修改用户主目录方法:
第一:修改/etc/passwd文件
这个找到要修改的用户那几行,修改掉就可以了。
第二:usermod命令