嵌入式系统的性能测试嵌入式系统的性能测试(1) – lmbench篇篇
要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具。既有比较成熟的商业测
试软件,也有许多优秀的开源工具来完成这个任务。本文简要介绍如何使用lmbench来完成系统综合性能测试。
&nbs
要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具。既有比较成熟的商业测试软件,也有许多优秀的开源工具来完成这个任务。本文
简要介绍如何使用lmbench来完成系统综合性能测试。
Lmbench用C语言编写的,是一套具有较好可移植性的,简易的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间
和带宽。Lmbench旨在使系统开发者深入了解系统关键操作的基础成本。
Lmbench是个多平台库函数我们就能够比较库函数的性能;更为重要的是,作为一个开源软件,lmbench提供一个测试框架,假如测试者对测试项目有更高的测试需
要,能够通过少量的修改源代码达到目的(比如现在只能评测进程创建、终止的性能和进程转换的开销,通过修改部分代码即可实现线程级别的性能测试)。
lmbench是一个用于评价系统综合性能的软件,主要测试内容包括:
*存储器延迟计算结果
—存储器延迟测试展示了所有系统(数据)的缓存延迟,包括L1/L2 cache以及主内存
*带宽测评工具
—读取缓存文件
—拷贝内存
—读内存
—写内存
—管道
—TCP
*反应时间测评工具
—上下文切换
—网络: 连接的建立,管道,TCP,UDP和RPC hot potato
—文件系统的建立和删除
—进程创建
—信号处理
—上层的系统调用
—内存读入反应时间
* 其他
—处理器时钟比率计算
Lmbench的测试内容有很多,实在是benchmarking领域的“瑞士军刀”啊。
Lmbench的成功应用案例包括:
Sun公司和SGI公司已经使用这种测评工具以寻找和补救存在于性能上的问题。
Intel公司在开发P6的过程中,使用了它们。
Linux在Linux的性能优化中使用了它们。
1. 下载:
Lmbench当前的最新版本为3.0。
lmbench的主站:
http://www.bitmover.com/lmbench/
lmbench 3版本的下载链接:
http://www.bitmover.com/lmbench/lmbench3.tar.gz
2. 编译:
下载解压后运行make build后会出现以下错误:
make[2]: *** No rule to make target `../SCCS/s.ChangeSet', needed by `bk.ver'. Stop.
make[2]: Leaving directory `/home/wave/xilinx/lmbench3/src'
make[1]: *** [lmbench] Error 2
make[1]: Leaving directory `/home/wave/xilinx/lmbench3/src'
make: *** [build] Error 2
问题来源:
SCCS是Sun的版本管理工具。lmbench这个项目是Sun资助的,而且作者Larry McVoy也曾经是Sun的员工,就用了这玩艺。
解决办法1:
修改src/Makefile,将231行的bk.ver去掉就可以了。编译完成后在bin下有benchmarking需要的的binary。
解决办法2:
在lmbench3/SCCS目录下创建一个工程要的文件s.ChangeSet,骗过make。
交叉编译:
本人在Xilinx ZC706开发板上尝试用PetaLinux 2013.04附带的交叉编译工具链进行了编译,可以在lmbench3目录下使用以下命令完成编译:
make OS=armv7l-linux-gnu CC=arm-xilinx-linux-gnueabi-gcc AR=arm-xilinx-linux-gnueabi-ar build
如果使用其他pre-built的交叉编译工具,需要修改CC和AR的内容。编译完成后,会在lmbench3in目录下生成OS指定的目录,可执行文件放在这个目录下。这个OS名
称适用于ZC706开发板,在其他嵌入式开发板上可能会不同。一个简单的工程上取得合适名字的办法:如果不是这个名字,在下一步配置完成后会提示无法保存配置文
件到某个位置,看系统提示修改就好了。
注意:使用PetaLinux 2013.04交叉编译工具链之前,要先’source settings.sh’初始化环境变量。
3. 配置:
把Host上编译好的lmbench转移到嵌入式Linux中有很多种办法,本人采用以下办法:
在Host上把lmbench3目录打成一个tar ball,然后拷贝到SD卡中,嵌入式Linux从SD卡启动。
Linux启动后,将SD卡mount到文件系统中:
mount /dev/mmcblk0p1 /mnt
评论0