Benchmark调研报告
作者:陈*
日期:2009年4月29
目录
1 进程测试基准 (3)
1.1 Linux环境LMbench (3)
1.2 Cygwin环境下的LMbench (3)
1.3 SFU环境的LMbench (4)
2 线程测试基准 (5)
2.1多线程基准测试Sysbench (5)
2.2 基于Java的基准测试V olanoMark (5)
2.3 其他线程基准测试 (6)
附录I LMbench的安装与使用 (7)
1. 下载 (7)
2. 安装 (7)
3. 编译测试 (8)
4. 查看结果 (8)
5. lmbench2的说明 (8)
附录II Cygwin环境下的LMbench (9)
1. 下载Cygwin (9)
2. 安装Cygwin (9)
3. LMbench编译测试 (10)
附录III Windows SFU环境下的LMbench (11)
1. Windows XP平台下SFU的配置 (11)
2. Windows 2003平台下SUA的配置 (11)
3. LMbench的移植 (12)
附录IV Sysbench的安装与使用 (14)
1. 下载 (14)
2. 安装 (14)
3. 测试 (15)
附录V V olanoMark的安装与使用 (18)
1. 下载 (18)
2. 安装 (18)
3. Java环境的配置 (18)
4. 本地测试 (18)
5. 网络测试 (19)
1 进程测试基准
1.1 Linux环境LMbench
LMbench是一款用于评价系统综合性能的多平台开源benchmark,支持多种Unix/Linux 操作系统,能测试包括文件读写、内存操作、进程创建销毁开销、网络等性能,测试方法简单。但是需要注意的是,并没有对线程的支持。它的开发者是Carl Staelin 和 Larry McV oy,由Sun Microsystems资助开发,但是采用GPL授权。
LMbench的评测内容主要分为三类:评测各种带宽、各种延迟和其他评测。其中测试进程性能的两个benchmark是:
z lat_proc:用于评测进程创建和终止的性能;
z lat_ctx:用于评测进程切换的开销。
有关于LMbench各项测试功能的介绍及使用,具体请参考文献[2]。这里只作简单的介绍:评测带宽的子程序有:
z缓存(Cache)文件的读带宽
z内存拷贝操作(bcopy)的带宽
z内存的读写带宽
z管道的读写带宽
z TCP读写带宽
z磁盘读写带宽
评测延迟的子程序有:
z进程上下文切换延迟
z TCP、RPC、PIPE连接建立延迟
vb采用什么的编程机制
z文件系统创建文件、删除文件延迟
z采用fork(),fork()+exec(),system()三种方式创建新进程的延迟
z信号建立和处理的延迟
z系统调用延迟
z内存访问延迟
其他评测有:
z评测CPU的时钟频率
1.2 Cygwin环境下的LMbench
Cygwin是用于各种版本的Microsoft Windows上运行UNIX类系统的模拟层。Cygwin 的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上。Cygwin包括了一套库,该库在Win32系统下实现了POSIX系统调用的API;还有一套GNU开发工具集(比如GCC、GDB),这样可以进行简单的软件开发;还有一些UNIX系统下的常见程序。
在实现机理上,Cygwin是把Win32 api中没有的Unix风格的调用(如fork,sockets等)封装在一个共享库
(cygwin.dll)里,这就提供了一个基于Win32 api的Unix系统库的模拟层。然后把gcc,gdb,gas等开发工具和这个共享库连接到一起,就可以使用Unix主机上的交叉编译器来生成可以在windows平台上运行的工具集。这样,在windows平台上运行
Bash和开发工具、用户工具,感觉好像在Unix上工作。
Cygwin为Windows系统提供了一个运行Unix程序的环境,将Linux下的LMBench移植到该环境下,借助于Cygwin的gcc交叉编译器来生成适用于Windows平台的LMbench 测试小程序来对Windows平台进行基准测试。该方法的一个缺点就是移植到Windows上由于多了模拟层的中间转换,运行速度会有较大的问题。针对该问题,有人提出了使用Windows Native GCC进行编译和运行,但是这样还存在一些问题:
z无法识别部分的头文件,如rpc/xxxx.h等
z有些Unix专用的函数无法使用,如fork()
如果要测试一些Windows的函数,或者系统项,需要修改相关的原代码。
1.3 SFU环境的LMbench
Microsoft Windows Services for UNIX (SFU) 允许Windows和UNIX的计算机之间共享数据、安全信任。目前的版本 SFU 3.5技术为Unix应用程序和脚本提供了在Windows环境下高效执行的机制。
IT管理者正在寻无缝地在他们的Windows和UNIX系统之间整合混杂网络和共享信息的解决方案。当用户在网络中不同操作系统之间计算机漫游时,不应该遇到障碍。企业也正在寻在Unix应用、资源及专有的技术上不断发展的最小投资方案。
基于Windows计算机技术解决方案的拥有总成本(TCO)是无法抗拒的。Microsoft Windows XP and Microsoft Windows Server 2003已经增加新的特性,并且已经对操作系统的安全性、可靠性、可用性进行了巨大改进。随着CPU的处理性能以指数的比率在提升、IA 架构解决方案性价比的大大提高,使得IA架构解决方案逐渐进入企业应用的高端服务器平台的领域。基于Windows/Windows Server的企业应用已经逐渐渗透到传统地基于UNIX的网络应用环境中, 基于Windows/Windows Server的应用已经与基于Unix的应用同样重要和可靠,甚至在某些应用领域已经成为Unix应用的替代方案。
很多企业已经在基于Unix和 Windows的应用、数据库、商业逻辑等进行了很大的投入,而在这两种应用体系下的应用之间存在广泛的集成关系,企业的职员熟练掌握了其中一种技术后,还需要花费大量的精力将他的经验和知识转移到另一种技术。SFU提供一种框架,包括在两种环境下协同的工具、执行环境、管理架构,使经验和知识的转移尽量的简单化。
SFU的主要目的要提供对使用者、管理者和开发者克服在 UNIX 和Windows之间的互通性工具,允许企业信息资源在它们之间无缝地分享。对资源的访问取决于企业的安全策略。
SFU 的设计目标是:
z无缝的在Windows和 UNIX 网络协议之间数据分享
z采用现有的Unix惯例和协议,对Windows和Unix进行远程命令行访问
z混杂网络管理, 包括通常的目录管理和用户密码同步
z完整支持UNIX脚本, 包括shell,公用程序, 文件联接和根文件系统
z为关键企业应用提供高效率的应用开发和执行环境
z简单、集成的安装过程
z所有的SFU系统管理和维护简单化
Service for UNIX 提供一个完全支持UNIX脚本,开发的环境,这个环境就是Interix。Interix是基于Windows 内核之上的子系统, 而不是一个Unix的仿真环境。Interix 子系统是一个基于Windows NT/2000/XP之上的完全整合的POSIX系统。它在Windows操作系统上对Unix应用的编译和运行提供完全的支持,它为Unix开发人员对运行于Unix之上的应用提供了超过 1,900个API和已有的Shell脚本的完整支持,其他Unix应用从而可以简单快速
的重新部署到Interix上。
在Service for UNIX环境下,可以利用Interix子系统提供的编译环境来编译和运行测试基准LMbench。通过Service for UNIX将LMbench移植到Windows下也是一种很好的实现方案,目前SFU的运行环境支持以下版本:
服务器端:
z Windows Server 2003
z Windows 2000 Server
客户机端:
z Windows XP Professional
z Windows 2000 Professionalr
2 线程测试基准
2.1多线程基准测试Sysbench
Sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。
它主要包括以下几种方式的测试:
z cpu性能
z磁盘io性能
z调度程序性能
z内存分配及传输速度
z POSIX线程性能
z数据库性能(OLTP基准测试)
Sysbench 是以源代码包的形式发布的,可以在Linux、Unix、Windows 平台上编译。详细的编译步骤将在后面描述。需要注意,虽然Sysbench 的测试结果最初是用来分析MySQL 数据库性能的,但在编译Sysbench 源代码时MySQL 不是必需的。如果在编译时选择不支持MySQL 数据库(或者Oracle 等数据
库),那么仅仅不能对“数据库服务器性能(OLTP benchmark)”进行测试,不影响其它系统参数的测试。
Sysbench 创建指定数量的线程(由命令行参数指定)和指定数量的互斥锁。每个线程运行一个循环,在每一个循环中,线程请求占有互斥锁,然后让出CPU,此时线程会被调度器置入等待队列(run queue)中,当它被再度调用的时候释放互斥锁。在线程测试时需要注意以下方面:
z须保证线程的数量至少是CPU 数量的2 倍
z互斥锁的数量须少于线程数量的一半
2.2 基于Java的基准测试VolanoMark
V olanoMark基准测试程序是一种综合测试benchmark,它创建了 10 个(每个)可容纳20 个客户机的聊天室,每个聊天室可以将一个客户机的消息回应给同一聊天室中的其他 19 个客户机。该基准测试程序(目前还不是开放源码基准测试程序)包含V olanoChat 服务器和另外一个用于模拟聊天室中客户机的程序,可以用它来测量原始服务器性能和网络可伸缩