ARM Linux BenchMark

http://tonyho.github.io/ARM%20Linux%20BenchMark.html

1.背景说明

许多公司有不少不一样的ARM SoC的研发产品,ARM核心可能有Cortex-A8/A9/A15,核心数可能有单核双核和四核.如今,几乎每出一款手机,网络上立刻就有人对其评测.对比和评测不一样ARM SoC 芯片以及嵌入式系统是很是有必要的;经过不一样的SoC和其运行的OS对比,能够帮助咱们了解咱们产品的性能,并根据测试得知系统的瓶颈、找出须要改善的方面。php

嵌入式产品的硬件通常都是由处理器、主存、存储器、显示设备、以及其余外设组成。嵌入式产品的软件方面,通常都选用嵌入式系统,如小的RTOS,如VxWorks、μC/OS-III、RTT、DJYOS、FreeRTOSLinux,或者是更复杂的Linux、Android、WinCE。评测和对比的内容通常也主要由软件和硬件这两个方面组成。html

2.预备基础知识

若是只是对Andorid系统或者是WinCE相关系统评测,那么咱们彻底能够下载一些应用(安装)运行便可评测。而若是要评测的嵌入式系统是基于Linux本身定制的甚至没有GUI的,则极可能须要咱们下载源代码编译。所以对基础的编译知识的了解必不可少①。编译配置又与ARM SoC构架相关,因此须要了解一下与ARM构架以及有关的交叉编译的选项,比较ARM SoC种类较少,因此这类问题变得很简单了,通常咱们须要根据须要配置-mfpu-march以及-mfloat-abi,以及编译优化选项。linux

3.评测工具介绍

评测工具备不少,在这个网页列出了几十个工具。单单系统性评测工具就有7个。那什么是系统性的BenchMark(引用自unixbench):git

Do be aware that this is a system benchmark, not a CPU, RAM or disk benchmark. The results will depend not only on your hardware, but on your operating system, libraries, and even compiler.github

系统测试网络

用得比较广的系统性测试工具:架构

  • lmbench④
  • UnixBench

这两个BenchMark软件,自己是给PC上的Linux上用的,为了给嵌入式开发板子使用,须要交叉编译。和其余嵌入式程序编译同样,通常Makefile要改的只有两个地方:工具

  • CC:指定为嵌入式交叉编译器
  • CFLAGS:须要根据目标板ARM芯片配置②

一些单项测试工具:性能

将系统测试里面的每一个测试项拆开就成了单项测试,通常分为计算性能③,内存性能,图形显示。测试

有一点须要说明的是:在linux启动过程当中会打印BogoMIPS不必定准确。这方面能够参考ARM官方的说明,使用Dhrystone,固然如今在计算能力测试方面,如今你们可能更承认CoreMark和CPU2006,而不是Dhrystone。

一些外设的测试:

SD/eMMC可使用dd命令来测试,例如一个读写的测试命令示例:

Readsync && date && dd if=/dev/block/mmcblk0 of=/dev/null bs=4094 count=40960 && sync && date Writesync && date && dd of=/dev/block/mmcblk0 if=/dev/zero bs=4094 count=40960 && sync && date 

使用date只能精确到秒,可是使用time命令能够精确到0.01S,因此用time更好,可是time只接受一个process做为参数。所以,须要将dd与sync整条命令放入到脚本中,再用time来运行这个脚本。

4.测试结果分析

若是就拿单单一个光秃秃的数据来看,会显得有些空白,因此通常用不一样的板子数据进行对比来看。在lmbench中,就能够将测试结果拷贝到result中的对应OS目录中,再用make see,产生summary.out文件。其余的测试软件也有相似的功能,对于测试结果,咱们须要作的是经过分析测试结果找到系统中性能与理论相差太大的不正常项目,而后去分析可能的缘由并寻求解决之道。


①能够看AnTuTu and Intel这篇文章,里面提到了安兔兔对ICC编译器对Intel处理器的优化,ARM这边却连neon也没有使用。同时另外一篇文章说到了安兔兔在版本变高后,评分降低的issue。

②关于编译选项,能够man gcc,搜索对应的选项来查看详细内容。给出一个CLFAGS示例: CFLAGS 其中这些参数能够在kernel启动后使用cat /proc/cpuinfo查看Arch架构。

③关于计算方面的测试,有一个不错的文档ARM Cortex-A8 vs. Intel Atom:,里面介绍了4中测试Integer和Float的工具,并用这些工具对Atom和Beagle Bone板子进行的测试比较和说明。另外Keil的这个网页上对这些测试程序和Item也有一些介绍。

④编译与运行能够参考这个网页的文章,须要根据直接的板子SoC更改CFLAGS。

 

 

http://bbs.51testing.com/thread-1163336-1-1.html

 

在新项目须要选择一个全新的基于ARM嵌入式处理器平台的时候,不免会须要对新平台的性能进行评估,这时候有
几种思路能够进行参考,

一是ARM芯片厂家发布的性能指标,不过大多数是基于理论状况;

二是购买一样平台的开
发板移植应用进行实测,效果最直接可是可能须要花费较大精力和时间;

那么这个时候也能够考虑使用针对性的benchmark软件在目标平台上面进行性能测试,算是一个折衷的方法,其结果有必定参考意义但因为影响benchm ark软件结果的因素不只仅是硬件自己,还有不一样的BSP以及软件设定等,所以在这些设定一致性越大的前提下其结果的参考意义才越大,不然极可能结果不是预期想要的甚至南辕北辙. 基于上面思路,本文统一采用Toradex工业产品等级 ARM计算机模块以及其官方发布的最新版Linux BSPV2.5Beta 3最为测试基准平台,同时将对结果影响比较大的CPU主频和显示输出分辨率尽量保持一致来进行测试,测试样 本分别是基于NVIDIA Tegra2的Colibri T20 512M, 基于NXP i.MX6DL 的Colibri i.MX6DL 512M以及基于NXP Vybrid 的Colibri VF61 256M;其中前两个均为双核Cortex-A9 ARM核心,第三个为Cortex-A5和M4异构双核核心,不过这里 只测试A5. 1). 本文涉及的硬件平台测试项目及工具以下 a). 硬件平台 上述三种接口兼容的Colibri ARM 计算机模块以及一块Colibri Eva Board b). 测试项目及对应工具 - CPU测试: nbench - Memory测试: stream - Storage测试: dd, hdparm - Ethernet测试: iperf - CPU压力测试: stress - GPU压力测试: glmark2

相关文章
相关标签/搜索