1. unixbench简介
UnixBench 是一个类 unix 系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试 linux 系统主机的性能。UnixBench 的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C 库等系统基准性能提供测试数据。
本文主要介绍unixbench在嵌入式环境上的移植工作,关于unixbench和其他benchmark工具更详细的内容将会在后面一系列文章中进行介绍。
2. unixbench版本分析
a、unixbench官方维护者Ian Smith,将unixbench版本发展到unixbench 5.1.3
b、2018年,谷歌的Kelly Lucas,在github上(从code.google.com/p/byte-unixbench)建立了自己个人的unixbech仓库。
版本:5.1.3 https://github.com/kdlucas/byte-unixbench
c、 2018年,qcsuper从Kelly Lucas的github创建子库,修复了pipe Context Switch问题,从提交到自己的github代码仓库。
版本:5.1.4 https://github.com/qcsuper/byte-unixbench/releases/tag/v5.1.4
d、2018年,阿里云的钱超同学自己修改了n8问题,从Kelly Lucas的github创建aliyun子库,将代码提交到自己的github上。
版本:5.1.5 https://github.com/aliyun/byte-unixbench/releases/tag/v5.1.5
e、2021年,阿里云修复了getpid问题,提交到github aliyun子库。
版本:5.1.6 https://github.com/aliyun/byte-unixbench/tree/master/UnixBench
f. 2022年,https://github.com/kdlucas/byte-unixbench.git重新接回了大棒,合入了阿里云5.1.6版本内容并修改了部分问题。
版本:master https://github.com/kdlucas/byte-unixbench.git
3. unixbench编译
a. 下载Unixbench5.1.6版本,参考上面的链接
b. 修改unixbench编译工程
- unixbench目录下修改Makefile中的编译器和编译选项即可,包括CC和MCPU等
- 修改Run,将main函数中的 preChecks();注释掉
- unixbench默认不运行图形测试,如果要运行,需要修改Makefile文件,打开GRAPHIC_TESTS = defined
c. 执行make -j编译
4. 移植perl
Unixbench的Run脚本是perl语言编写,运行Unixbench需要移植perl到嵌入式单板,移植perl的步骤如下:
a. 下载perl和交叉编译补丁包
perl交叉编译补丁:https://github.com/arsv/perl-cross/releases/download/1.3/perl-cross-1.3.tar.gz
perl:https://www.cpan.org/src/5.0/perl-5.30.0.tar.gz
注意:补丁包和版本有配套关系
b. 配置工作目录
解压并加载补丁
tar vxf perl-5.30.0.tar.gz
tar --strip-components=1 -zxf ../perl-cross-1.3.tar.gz
c. 配置交叉编译环境
cd perl-5.30.0
./configure --target=arm-linux-xxxx(配置你自己的编译工具链)
编译成功后将config.sh拷贝到Cross目录下并重命名
cp config.sh Cross/config.sh-arm-linux-xxx
d. 修改配置文件和编译选项
cd Cross
vim config,主要修改ARCH和OS,与上面的工具链相对应,例如
OS = Linux-gnu
ARCH = aarch64-xxx
修改Cross目录下的Makefile,尤其注意浮点数,fPIC等选项。、
d. 在cross目录下编译perl
在perl-5.30.0的同级目录下创建perl_ins目录, DESTDIR指定安装路径,命令完成安装文件就存放在perl_ins目录。
make patch
make DESTDIR=../perl_ins/ install
make 后会提示失败,这里不用管它,perl-5.30.0 目录下已经生成了 perl 程序
将perl_ins目录拷贝到开发板的/opt/目录下
编辑/etc/profile,添加export PATH=/opt /perl_ins/usr/bin:$PATH
5. 完成以上操作即可运行unixbench
执行单核测试运行./Run -c 1,执行多核测试运行./Run -c n(核数)