软件说明:


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表的未命中延迟。另外,缓存的大小可以被正确划分成一些结果集并被读出。硬件族与上面的描述相象。这种测评工具已经找到了操作系统分页策略的中的一些错误。


 


—上下文转换计算结果


   很多人好象喜欢上下文转换的数量。这种测评工具并不是特别注重仅仅引用“在缓存中”的数量。它时常在进程数量和大小间进行变化,并且在当前内容不在缓存中的时候,将结果以一种对用户可见的方式进行划分。您也可以得到冷缓存上下文切换的实际开销。


配置文件

[root@jiangyi01.sqa.zmf /tmp/lmbench3/lmbench3]
#ll bin/x86_64-linux-gnu/*`hostname`
-rw-r--r-- 1 root root 719 Mar 8 17:18 bin/x86_64-linux-gnu/CONFIG.jiangyi01.sqa.zmf
-rwxr-xr-x 1 root root 1232 Mar 7 20:52 bin/x86_64-linux-gnu/INFO.jiangyi01.sqa.zmf


生成配置文件脚本

[root@jiangyi01.sqa.zmf /tmp/lmbench3/lmbench3]
#ll scripts/config-run
-r-xr-xr-x 1 14557 501 21018 Mar 8 17:18 scripts/config-run


生成配置文件脚本

make results 命令实际上是调用了 scripts/config-run

[root@jiangyi01.sqa.zmf /tmp/lmbench3/lmbench3]
#make results


参数说明

我这里对每个测试结果参数的说明不全,更加全面的请看REF链接

(1)Basic system parameters(系统基本参数)

Tlb pages:TLB(Translation Lookaside Buffer)的页面数

Cache line bytes :(cache的行字节数)

Mem par

memory hierarchy parallelism

Scal load:并行的lmbench数

(2)Processor, Processes(处理器、进程操作时间)

Null call:简单系统调用(取进程号)

Null I/O:简单IO操作(空读写的平均)

Stat:取文档状态的操作

Open clos:打开然后立即关闭关闭文档操作

Slct tcp

Select:配置

Sig inst:配置信号

Sig hndl:捕获处理信号

Fork proc :Fork进程后直接退出

Exec proc:Fork后执行execve调用再退出

Sh proc:Fork后执行shell再退出

(3)Basic integer/float/double operations

(4)Context switching 上下文切换时间

2p/16K: 表示2个并行处理16K大小的数据

(5)Local Communication latencies(本地通信延时,通过不同通信方式发送后自己立即读)

Pipe:管道通信

AF UNIX

Unix协议

UDP

UDP

RPC/UDP

TCP

RPC/TCP

TCP conn

TCP建立connect并关闭描述字

(6)File & VM system latencies(文档、内存延时)

File Create & Delete:创建并删除文档

MMap Latency:内存映射

Prot Fault

Protect fault

Page Fault:缺页

100fd selct:对100个文档描述符配置select的时间

(7)Local Communication bandwidths(本地通信带宽)

Pipe:管道操作

AF UNIX

Unix协议

TCP

TCP通信

File reread:文档重复读

MMap reread:内存映射重复读

Bcopy(libc):内存拷贝

Bcopy(hand):内存拷贝

Mem read:内存读

Mem write:内存写

(8)Memory latencies(内存操作延时)

L1:缓存1

L2:缓存2

Main Mem:连续内存

Rand Mem:内存随机访问延时

Guesses

假如L1和L2近似,会显示“No L1 cache?”

假如L2和Main Mem近似,会显示“No L2 cache?”