一、引言
要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具,一般来说为了确保测试结果的公平和权威性,会选用比较成熟的商业测试软件。但在特定情形下,只是想要简单比较不同系统或比较一些函数库性能时,也能够从开源世界里选用一些优秀的工具来完成这个任务,本文就通过lmbench 简要介绍系统综合性能测试。

二、测试软件

Lmbench是一套简易,可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间和带宽。Lmbench旨在使系统开发者深入了解关键操作的基础成本。
软件说明:
lmbench是个用于评价系统综合性能的多平台开源benchmark,能够测试包括文档读写、内存操作、进程创建销毁开销、网络等性能,测试方法简单。
Lmbench是个多平台软件,因此能够对同级别的系统进行比较测试,反映不同系统的优劣势,通过选择不同的库函数我们就能够比较库函数的性能;更为重要的是,作为一个开源软件,lmbench提供一个测试框架,假如测试者对测试项目有更高的测试需要,能够通过少量的修改源代码达到目的(比如现在只能评测进程创建、终止的性能和进程转换的开销,通过修改部分代码即可实现线程级别的性能测试)。
下载:
www.bitmover.com/lmbench,最新版本3.0-a9
LMbench的主要功能:
*带宽测评工具
         —读取缓存文件
          —拷贝内存
          —读内存
          —写内存
          —管道
          —TCP
    * 反应时间测评工具
          —上下文切换
          —网络: 连接的建立,管道,TCP,UDP和RPC
hot potato
          —文件系统的建立和删除
          —进程创建
          —信号处理
          —上层的系统调用
          —内存读入反应时间
    * 其他
          —处理器时钟比率计算
 
LMbench的主要特性:
—对于操作系统的可移植性测试
评测工具是由C语言编写的,具有较好的可移植性(尽管它们更易于被GCC编译)。这对于产生系统间逐一明细的对比结果是有用的。
 
—自适应调整
Lmbench对于应激性行为是非常有用的。当遇到BloatOS比所有竞争者慢4倍的情况时,这个工具会将资源进行分配来修正这个问题。
 
— 数据库计算结果
  数据库的计算结果包括了从大多数主流的计算机工作站制造商上的运行结果。
 
—存储器延迟计算结果
   存储器延迟测试展示了所有系统(数据)的缓存延迟,例如一级,二级和三级缓存,还有内存和TLB表的未命中延迟。另外,缓存的大小可以被正确划分成一些结果集并被读出。硬件族与上面的描述相象。这种测评工具已经找到了操作系统分页策略的中的一些错误。
 
—上下文转换计算结果
   很多人好象喜欢上下文转换的数量。这种测评工具并不是特别注重仅仅引用“在缓存中”的数量。它时常在进程数量和大小间进行变化,并且在当前内容不在缓存中的时候,将结果以一种对用户可见的方式进行划分。您也可以得到冷缓存上下文切换的实际开销。
 
 — 回归测试
   Sun公司和SGI公司已经使用这种测评工具以寻找和补救存在于性能上的问题。
   Intel公司在开发P6的过程中,使用了它们。
   Linux在Linux的性能调整中使用了它们。
 
 
— 新的测评工具
   源代码是比较小的,可读并且容易扩展。它可以按常规组合成不同的形式以测试其他内容。举例来说,如包括处理连接建立的库函数的网络测量,服务器关闭等。
三、测试
在此次测试中我分两种测试,一个是在我的pc机上测试的,一个是在SEP4020的arm720t平台上测试的:
(1)     在pc机上的测试
测试平台:HP compoq,fedora 7 Linux 2.6.21
1、  确认安装了C编译器,假如没有需要先安装
2、  拷贝lmbench源码文档lmbench-3.0-a9.tgz到fedora的/root/test目录下,解压到当前目录即可
3、  cd lmbench-3.0-a9,在命令行键入make results即可开始编译测试
4、  假如编译没有错误,会出现一些选择提示以对测试进行一个配置并生成配置脚本,后续的测试将使用该配置脚本,在以后测试中也能够直接使用同样的配置多次测试。配置提示除了测试的内存范围(如“MB
[default 371]”时,对内存较大的应该避免选择太大值,否则测试时间会很长)和是否Mail results外,基本上都能够选择缺省值。
5、  Lmbench根据配置文档执行任何测试项,在results目录下根据系统类型、系统名和操作系统类型等生成一个子目录,测试结果文档(system name+序号)存放于该目录下。
6、  测试完毕执行make see可查看到测试结果报告,则可以将测试数据/results/i686-pc-linux-gnu/目录下的文件导出为测试报告/results/summary.out文件,我们查看summary.out文件就可以看测试结果了。
(2)    在SEP4020上的测试
测试平台:SEP4020 evb1.5, Linux 2.6.16
1、  确认宿主机上安装了交叉编译编译器arm-linux-gcc,假如没有需要先安装
2、  拷贝lmbench源码文档lmbench-3.0-a9.tgz到fedora的/root/test目录下,解压到当前目录即可
3、  cd lmbench-3.0-a9,在命令行键入make CC=arm-linu-gcc OS=arm-linux 即可开始编译测试用例,编译完成后,会在/root/test/lmbench-3.0-a9/bin下出现一个arm-linux目录,在这个目录下就是测试用例的目标文件。由于我们的目标平台不支持make命令,所以我们必须另外写一个运行脚本,脚步名为run_all.sh,放在scripts下面,内容是:
#!/bin/sh
echo run the lmbench on sep4020 arm-linux
env OS=arm-linux ./config-run
env OS=arm-linux ./results
4、  然后将整个lmbench-3.0-a9目录拷贝到目标机的nfs根目录下面,然后进入目标机的串口终端,在/lmbench-3.0-a9/scripts下面输入./run_all.sh
假如交叉编译没有错误,会出现一些选择提示以对测试进行一个配置并生成配置脚本,后续的测试将使用该配置脚本,在以后测试中也能够直接使用同样的配置多次测试。配置提示除了测试的内存范围(如“MB
[default 19]”时,对内存较大的应该避免选择太大值,否则测试时间会很长)和是否Mail results外,基本上都能够选择缺省值。
5、  Lmbench根据配置文档执行任何测试项,在results目录下根据系统类型、系统名和操作系统类型等生成一个子目录,测试结果文档(system name+序号)存放于该目录下。
6、  测试完毕执行,在虚拟机fedora7中进入/nfs/lmbench-3.0-a9 键入make see命令可生成测试结果报告,它可以将测试数据/results/i686-pc-linux-gnu/目录下的文件导出为测试报告/results/summary.out文件,我们查看summary.out文件就可以看测试结果了。
 
https://blog.csdn.net/u014756722/article/details/68067457

lmbench的使用方法的更多相关文章

  1. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  2. Buildroot lmbench使用方法

    /********************************************************************** * Buildroot lmbench使用方法 * 说明 ...

  3. mapreduce多文件输出的两方法

    mapreduce多文件输出的两方法   package duogemap;   import java.io.IOException;   import org.apache.hadoop.conf ...

  4. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  5. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  6. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  7. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  8. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

  9. [BOT] 一种android中实现“圆角矩形”的方法

    内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...

随机推荐

  1. iOS----实现scrollView或者scrollView的子类下拉图片放大的效果

    代码是通过Tableview来说明的,用在其他情况下同样适用 - (void)viewDidLoad { [super viewDidLoad]; _imageview = [[UIImageView ...

  2. BZOJ 3963: [WF2011]MachineWorks 斜率优化 + splay动态维护凸包

    Description 你是任意性复杂机器公司(Arbitrarily Complex Machines, ACM)的经理,公司使用更加先进的机械设备生产先进的机器.原来的那一台生产机器已经坏了,所以 ...

  3. 北风设计模式课程---备忘录(Memento)模式

    北风设计模式课程---备忘录(Memento)模式 一.总结 一句话总结: 备忘录模式也是一种比较常用的模式用来保存对象的部分用于恢复的信息,和原型模式有着本质的区别,广泛运用在快照功能之中.同样的使 ...

  4. MySQL体系结构概览

    MySQL体系结构 InnoDB体系结构 MySQL实例有一组后台线程.一些内存块和若干服务线程组成 在默认情况下,MySQL有7组后台线程,分别为1个主线程,4组IO线程,1个锁线程,1个错误监控线 ...

  5. Jupyter Notebook 快捷键(基本)

    Jupyter Notebook 快捷键 Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的单 ...

  6. Android O编译前修改文件和目录权限

    当需要修改某文件或路径权限时,我们可以在init.rc开机启动某节点添加chmod命令进行修改.但是对于system分区,由于是ro权限,在init.rc使用chmod修改权限无效.需要在文件编译时, ...

  7. yum安装Development Tools报错问题

    yum安装Development Tools报错问题 我们通过yum安装Development Tools开发组工具的时候,有时可能会遇到如下报错信息. [root@superdesktop ~]# ...

  8. RESTful_基础知识

    目录 目录 前言 RESTful REST原则 REST的Web原则 分层系统原则 RESTful的实现 SOA 面向服务的体系结构 RPC样式 Web服务 RPC的实现过程 SOAP 简单对象访问协 ...

  9. jmeter之断言的使用

    和写功能测试用例一样,写接口测试用例也可以先可以写预期结果,然后用于后面的批量执行接口用例 目录 1.jmeter常用的断言元件 2.响应断言 3.json串断言 1.jmeter常用的断言元件 jm ...

  10. hbase报Dead Region Servers

    问题描述: 16010端口启动成功,16020未启动. hbase-root-regionserver-hbase2.log日志: 2019-08-14 16:45:10,552 WARN [Thre ...