benchmark系列——Unixbench 5.1.6嵌入式环境编译运行指导

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(核数)