软件介绍
Lmbench是个多平台软件,因此能够对同级别的系统进行比较测试,反映不同系统的优劣势,可用于评价系统综合性能的多平台开源benchmark,能够测试包括文档读写、内存操作、进程创建销毁开销、网络等性能,测试方法简单。通过选择不同的库函数我们就能够比较库函数的性能;更为重要的是,作为一个开源软件,lmbench提供一个测试框架,假如测试者对测试项目有更高的测试需要,能够通过少量的修改源代码达到目的(比如现在只能评测进程创建、终止的性能和进程转换的开销,通过修改部分代码即可实现线程级别的性能测试)。
软件使用
1.下载
2.编译执行:
tar xzvf lmbench3-edit.tar.gz
cd lmbench3
make results
make see |tee
注:执行make see可将测试数据/results/i686-pc-linux-gnu/目录下的文件导出为测试报告/results/summary.out文件,summary.out即为测试结果文件。
软件参数
系统基本参数
Tlb pages: 转换后备缓存的页面数;
Cache line bytes: 高速缓存行字节数
mem par: 存储器分层并行化
scal load:并行执行的Lmbench数目
处理器性能 单位μS ,值越小越好
null call: 执行getppid需要的时间;
null I/O: 从/dev/zero读一个字节的时间长A,写一个字节到/dev/null需要的时间长B,A和B取平均得本值;
stat:stat一个文件(即得到一个文件的信息)需用的时间;
open close: open一个文件然后再close它总共需用的时间(不包括读目录和节点的时间);
selct TCP:通过TCP网络连接选择100个文件描述符所耗用的时间;
sig inst: install signal handler所耗用的时间;
sig hndl: catch signal 所耗用的时间;
fork proc: fork一个完全相同的process,并把原来的process关掉所耗用的时间。
exec proc:模拟一个shell进程的工作过程:fork一个新进程执行新命令,所耗用时间。
sh proc:模拟最常见情况:fork一个新进程,同时询问系统shell来找到并运行一个新程序所耗用时间。
上下文切换 单位μS ,值越小越好
2p/0K: 每个进程的size为0(不执行任何任务),进程数为2时上下文切换耗用的时间;
2p/16K:每个进程的size为16K(执行任务),进程数为2时上下文切换耗用的时间;
本地通讯延时 单位μS ,值越小越好
2p/0K: 每个进程的size为0(不执行任何任务),进程数为2时上下文切换耗用的时间;
Pipe:所谓的hot potato测试:两个没有具体任务的进程用unix pipe通信,一个token在两个进程间来回传递,传递一个来回所耗用的平均时间;
AF UNIX:同Pipe,不同的是两个进程采用unix socket通信。
UDP:同Pipe,不同的是两个进程采用UDP/IP 通信;
RPC/UDP:同Pipe,不同的是两个进程采用sun RPC 通信;默认情况下,RPC通过udp协议传送。
TCP:同Pipe,不同的是两个进程采用TCP/IP;
RPC/TCP:同Pipe,不同的是两个进程采用sun RPC 通信;指定RPC通过tcp协议传送。
TCP conn:创建一个AF_INET (aka TCP/IP) socket,并连接到远程主机所耗用的时间,这个时间仅指创建socket和建立连接本身,不包括解析主机名等等其他动作所用时间。
文档内存延时 单位μS ,值越小越好
0k create: 0k文件创建所花的时间;
0k Delete: 0k文件删除所花的时间;
10k create: 10k文件创建所花的时间;
10k Delete: 10k文件删除所花的时间;
Mmap Latency: 将指定文件的开头n个字节map到内存,然后umap,并记录每次map和umap共耗用的时间;记录的是每次耗用时间的最大值;
Prot Fault: 保护页延时时间;
Page Fault: 缺页延时时间;
100fd selct: 对100个文档描述符配置select的时间;
本地通信带宽 单位:MB/S,值越大越好
Pipe:在两个进程间建立一个unix pipe,pipe的每个chunk为64K,通过该管道移动50M数据所用的时间。
AF UNIX:在两个进程间建立一个unix stream socket,每个chunk为64K,通过该socket移动10M数据所用的时间。
TCP:同Pipe,不同的是进程间通过TCP/IP socket 通信,传输的数据为3MB; File reread:读文件并把他们汇总起来所用的时间;
Mmap reread:将文件map到内存中,从内存中读文件并把他们汇总起来所用的时间;
Bcopy(libc): do bw_mem $i bcopy,从指定内存区域拷贝指定数目的字节内容到指定的另一个内存区域的速度;
Bcopy(hand):do bw_mem $i fcp,把数据从磁盘上一个位置拷贝到另一个位置所用的时间;
Mem read:bw_mem $i frd,累加数组中的整数值,测试把数据读入processor的带宽;
Mem write:do bw_mem $i fwr,把整数数组的每个成员设置为1,测试写数据到内存的带宽;
内存操作延时 单位ns,值越小越好
L1 $:输出结果中以 stride=128 开头的段中,首字段(size)为 0.00098 行的第二字段;
L2 $:输出结果中以 stride=128 开头的段中,首字段(size)为 0.12500行的第二字段;
Main mem:最后行的第二字段值;
Rand mem:系统内存随机访问操作延时;
Guesses:判断前面得到的L1和L2值差值占其中最大值的百分比,如果大于20%,且L2和Main mem差值占其中最大值的百分比小于20%,则输出”No L2 cache“;否则,判断L1和L2差距与其中最大值的百分比,如果小于20%,则输出”No L1 cache“;否则什么也不输出。