基本系统调用性能lmbench测试方法和下载

简介

Lmbench是一套简易,可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间和带宽。

Lmbench旨在使系统开发者深入了解关键操作的基础成本。

本文以银河麒麟/Ubuntu为例。

文末获取【lmbench】工具下载地址

测试方法

1.将lmbench工具拷贝到系统下,(例如:/home/kylin/目录)并解压:

tar -xvf lmbench-3.0-a9-1.tar.bz2 

2.进入lmbench目录

cd /home/kylin/lmbench

3.如果是飞腾cpu,执行这一步,若是x86跟mips机器,则跳过这一步:

sudo sed -i ‘s/arm/aarch/’ scripts/gnu-os

4.第一种方法:
 将提前修改好的config-run、lmbench.config配置文件(文件名要一致,如有不同,则需要改名)复制到 scripts/目录中,并赋权限chmod -R 777 *,然后返回/home/kylin/lmbench 目录执行make results;
第二种方法:
 直接在/home/kylin/lmbench目录执行make results,根据提示信息,一步步完成,测试内存(单位MB)选择时:服务器建议使用10000,桌面系统可按照默认值设置,保证测试能够尽可能的加快,内存的大小与该测试项的测试指标没有关系,本测试项不牵涉到内存的测试;邮件时选择no;
如下图所示:
基本系统调用性能lmbench测试方法和下载_第1张图片

5.继续在解压缩包的目录里(/home/kylin/lmbench目录)执行:

make see

测试过程如下图所示:
基本系统调用性能lmbench测试方法和下载_第2张图片

6.打开/home/kylin/lmbench/results目录中summary.out文件查看测试结果。

测试结果分析

打开summary.out查看各项指标具体数值。

1.系统基本参数
基本系统调用性能lmbench测试方法和下载_第3张图片
Tlb pages: 转换后备缓存的页面数
Cache line bytes:高速缓存行字节数
Mem par:存储器分层并行化
Scal load:并行执行的lmbench数目

2.处理器Processor性能【单位:us,数值越小越好】
基本系统调用性能lmbench测试方法和下载_第4张图片
Null call: 执行getppid需要的时间;
Null I/O: 从/dev/zero读一个字节的时间长A,写一个字节到/dev/null需要的时间长B,A和B取平均值;
Stat: stat一个文件(即得到一个文件的信息)需用的时间;
Open close: open一个文件然后再close它总共需用的时间(不包括读目录和节点的时间);
Slct 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来找到并运行一个新程序所耗用的时间。

3.数学运算【单位:ns,值越小性能越好】
整型:
基本系统调用性能lmbench测试方法和下载_第5张图片
无符号整型:
基本系统调用性能lmbench测试方法和下载_第6张图片

浮点型:
基本系统调用性能lmbench测试方法和下载_第7张图片
双精度型:
基本系统调用性能lmbench测试方法和下载_第8张图片
4.上下文切换【单位:us,值越小性能越好】
基本系统调用性能lmbench测试方法和下载_第9张图片
多个进程用unix pipe换连接起来,每个进程从自己的管道中读取token,执行任务,然后将token写给下一个进程。

Context swithing时间包括:切换进程时间,加上恢复进程所有状态所用时间(包括恢复cache状态);
2p/0K:每个进程的size为0(不执行任何任务),进程数为2时上下文切换耗用的时间;
2p/16K:每个进程的size为16K(执行任务),进程数为2时上下文切换耗用的时间。

5.本地通讯延时【单位:us,值越小性能越好】
基本系统调用性能lmbench测试方法和下载_第10张图片
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和建立连接本身,不包括解析主机名等其他动作所用时间。

6.文档、内存延时【单位:us,值越小越好】
基本系统调用性能lmbench测试方法和下载_第11张图片
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的时间;

7.本地通信带宽【单位:MB/S,值越大越好】
基本系统调用性能lmbench测试方法和下载_第12张图片
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):从指定内存区域拷贝指定数目的字节内容到指定的另一个内存区域的速度;
Bcopy(hand):把数据从磁盘上一个位置拷贝到另一个位置所用的时间;
Mem read:累加数据组中的整数值,测试把数据读入processor的带宽;
Mem write:把整数数组的每个成员设置为1,测试写数据到内存的带宽。

8.内存操作延时【单位:ns,值越小性能越好】
基本系统调用性能lmbench测试方法和下载_第13张图片
本项测试执行lat_mem_rd,将整数数组每第4个元素的值累加起来;测试的是读数据到processor的带宽。

如果测试配置为:执行快速测试,则本测试只测128M内存的情况,否则,将分别测试16M 32M 64M 126M 256M 512M 1024M 的情况;

测试结果:读输出结果中以stride=128开头的段,段中两个字段单位为megabytes,megabytes_per_second;
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”否则什么也不输出。

更多精彩文章可关注公众号【天耀数码】,公众号回复【lmbench】获取下载地址。

你可能感兴趣的:(整机性能测试,服务器,性能测试,linux,lmbench)