使用 UnixBench5 进行linux系统服务器性能综合测试
1.简介
Unixbench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试linux系统主机的性能,简称UB。Unixbench的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。
测试项目:
Dhrystone
这个基准测试使用来计算和比较计算机性能的。由于没有浮点操作,这个测试主要集中在字符串处理上。这个测试深受以下因素的影响:硬件和软件设计,编译程序和链接程序选项,代码优化 ,高速缓冲存储器, 等待状态和整数数据类型。
Whetstone
这个测试测量浮点运算速度和效率。这个测试包含几个模块,这些模块被认为是由在典型运用在科学应用中的操作组成的混合体。 各种各样的C函数,包括sin、cos、sqrt、exp和log还有整形,浮点算术操作、数组访问、条件转移和过程调用,都使用了。 整数和浮点算术,在这个测试中都会计算。
Execl Throughput
这个测试计算每秒钟出现的execl调用数。Execl是 exec 函数家族的一部分。它用一个新的进程映像更新当前的进程映像。 它和许多其他相似的命令都是execve()的前端程序。
File Copy
这个测试测量使用不同的缓冲区大小时,数据可以从一个文件被传输到另一个的速率。文件的读写复制测试可以获得在指定时间内(默认为10秒)能够读、写、复制的字符数目。
Pipe Throughput
管道是进程间通信最简单的方式之一。管道吞吐量指的是每秒中,一个进程能将512个字节数据写入管道和从管道中回读它们的次数。这个测试在真实的程序设计中并没有对应物。
Pipe-based Context Switching
这个测试是计算两个进程通过管道交换一个增长的整数的次数。基于管道的上下文切换测试更像一个真实的应用程序。这个测试产生一个可以用来继续双向管对话的子进程。
Process Creation
这个测试计算一个进程派生和收获一个马上退出的子进程的次数。由于进程创建涉及创建进程控制块和为新的进程分配内存,因此这项测试直接取决于内存带宽。这个测试一般地会用于比较各种各样的操作系统进程创建调用的执行。
Shell Scripts
这个shells scripts测试测量每秒进程能够启动和收获一组1,2,4,8个shell脚本程序的并行的拷贝的次数。The shells scripts test measures the number of times per minute a process can start and reap a set of one, two, four and eight concurrent copies of a shell scripts where the shell script. applies a series of transformation to a data file.
System Call Overhead
这个测试是估计进入和离开操作系统内核的开销。例如执行一个系统调用的开销。它由一个简单的系统组成,这个系统重复的调用getid系统调用,getid返回调用进程的进程IS号。这个测试是用执行这些调用的时间来估算进入和离开内核的开销。
Graphical Tests
这个测试提供了2D,3D的图形化测试。报告性能不仅依赖于硬件,还与你的系统是否对硬件有合适的驱动程序有关 。
2.软件包下载安装
# Create new soft download dir
mkdir -p /workspace
cd /workspace
# Download unixbench
wget http://www.ctohome.com/linux-vps-pack/unixbench-5.1.2.tar.gz
tar xzf unixbench-5.1.2.tar.gz
cd unixbench-5.1.2
yum -y install gcc gcc-c autoconf gcc-c++ time perl-Time-HiRes -y
#Run unixbench
sed -i "s/GRAPHIC_TESTS = defined/#GRAPHIC_TESTS = defined/g" ./Makefile
make
./Run
wget http://www.CTOHome.com/linux-vps-pack/unixbench.sh;sh ./unixbench.sh;
Unixbench的官方网址:http://code.google.com/p/byte-unixbench/
Unixbench下载地址:http://code.google.com/p/byte-unixbench/downloads/list
3.快速使用
执行system测试方法:Run
执行graphic测试方法:Run graphics
执行system,graphics测试方法:Run gindex
4。详细使用方法
4.1.Run用法
Run [ -q | -v ] [-i <n> ] [-c <n> [-c <n> ...]] [test ...]
选项说明:
-q
不显示测试过程
-v
显示测试过程
-i <count>
执行次数,最低3次,默认10
-c <n>
每次测试并行n个copies(并行任务)
备注:-c选项可以用来执行多次,如:
Run -c 1 -c 4表示执行两次,第一次单个copies,第二次4个copies的测试任务。
4.2. 测试说明
对于多cpu系统的性能测试策略,需要统计单任务,多任务及其并行的性能增强。
以4个cpu的PC为例,需要测试两次,4个CPU就是要并行执行4个copies,
Run -q -c 1 -c 4
5.测试内容解释
Double-precision Whetstone
5.1. ***********************
Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
此项产生于 1984,测试 string handling,因为没有浮点操作,所以深受软件和硬件设计(hardware and software design)、编译和链接(compiler and linker options)、代码优化(code optimazaton)、对内存的cache(cache memory)、等待状态(?wait states)、整数数据类型(integer data types)的影响
5.2. ********************
Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列 c 函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支(conditional branch)和程序调用。此测试同时测试了整数和浮点数算术运算。
5.3. **************
System Call Overhead 1 2 3 4 5 6 7 8 9 10
测试进入和离开操作系统内核的代价,即一次系统调用的代价。它利用一个反复地调用 getpid 函数的小程序达到此目的。
5.4. ***************
Pipe Throughput 1 2 3 4 5 6 7 8 9 10
管道(pipe)是进程间交流的最简单方式,这里的 Pipe throughtput 指的是一秒钟内一个进程可以向一个管道写 512 字节数据然后再读回的次数。需要注意的是,pipe throughtput 在实际编程中没有对应的真实存在。
5.5. *************
Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输。
5.6. ************
Process Creation 1 2 3
测试每秒钟一个进程可以创建子进程然后收回子进程的次数(子进程一定立即退出)。process creation 的关注点是新进程进程控制块(process control block)的创建和内存分配,即一针见血地关注内存带宽。一般说来,这个测试被用于对操作系统进程创建这一系统调用的不同实现的比较。
5.7. ***********
Execl Throughput 1 2 3
此测试考察每秒钟可以执行的 execl 系统调用的次数。 execl 系统调用是 exec 函数族的一员。它和其他一些与之相似的命令一样是 execve() 函数的前端。
5.8. ***********
File copy
测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。这一针对文件 read、write、copy 操作的测试统计规定时间(默认是 10s)内的文件 read、write、copy 操作次数。
Filesystem Throughput 1024 bufsize 2000 maxblocks 1 2 3
Filesystem Throughput 256 bufsize 500 maxblocks 1 2 3
Filesystem Throughput 4096 bufsize 8000 maxblocks 1 2 3
5.9. **********
Shell Scripts
测试一秒钟内一个进程可以并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8.(我的系统上取 1, 8, 16)。这个脚本对一个数据文件进行一系列的变形操作(?transformation)。
6.测试结果分析
VPS服务器:低于400的就算性能低下;600-800是属于正常水准;超过1000分性能就算给力。
实体服务器服务器配置对测试得分影响较大,我测试了一台 IBM 的双核+8G 内存服务器,测试得分2685。
# 安装测试工具unixbench时,系统报错如下所示:
Can't locate Time/HiRes.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at ./Run line 6.
BEGIN failed--compilation aborted at ./Run line 6.
# 解决方案:
错误提示Can't locate,猜测可能是HiRes.pm没有安装,或者是路径配置问题
locate HiRes.pm # 发现没有,确定应该是没有安装
网上查找答案:
.pm实际上是Perl的包,只需安装如下软件包即可:
yum install perl-Time-HiRes
7.磁盘IO,网络性能测试方法简介
7.1.硬盘IO性能测试
测试硬盘IO性能,对硬盘的损害很大,不建议多次或长时间尝试,命令如下:
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
测试结果,如果超过10M,对正常建站就无影响。超过50M,就是非常给力状态。
7.3.网络性能测试
VPS的网络性能,主要分出口和入口二个指标,入口可以用wget文件得到:
wget http://cachefly.cachefly.net/100mb.test
看下载速度,如果是11M/s,大概就是百兆口。70M/S,大概就是G口。您的VPS搭建好网站环境后,可以用其它的VPS去拽这个文件,得到出口的带宽。
7.3.VPS的访问速度测试
这个主要测试是PING值,和观看TRACERT值,来判断速度。大概这几个网站:
站长站:ping.chinaz.com – ping.chinaz.com/tracert
卡卡网:www.webkaka.com/ping.aspx – www.webkaka.com/Tracert.aspx
国外的:www.just-ping.com 软件:speedtest.net/mini.php