ZGCC性能评估
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ZGCC编译性能评测
用户态分别进行评测。在内核态,使用UnixBench分别评测自带原生内核及用ZGCC编译安装的同版本新内核性能,获得数据;在用户态,挑选典型应用,分别ZGCC与GNU GCC编译后运行,使用系统命令top及shell内建命令time测时间及内存消耗,获得数据;对比内核态及用户态数据,得出评测结论。
一. 内核态评测
1. 评测说明
1.1 工具简介
UnixBench是一个类unix(Unix,BSD,Linux)系统的性能评测工具,开源,被广泛用于测试linux系统主机的性能。如被评测主机为多CPU系统,其默认处理方式是运行两次测试,一次测试系统运行单任务的性能,一次测试系统运行多任务的性能,并分别给出测试结果。UnixBench的测试结果不仅依赖硬件,还取决于操作系统、库及编译器。
2. 评测步骤
下载最新版UnixBench5.1.3并编译,命令如下:
root@lyl:/unixbench-5.1.3# ls
Makefile pgms README results Run src testdir tmp USAGE WRITING_TESTS root@lyl:/unixbench-5.1.3# vi Makefile
# GRAPHIC_TESTS = defined //去掉图形化测试
root@lyl:/unixbench-5.1.3# make //编译
2.1 原生内核性能评测
使用如下命令启动UnixBench:
root@lyl:/unixbench-5.1.3# ./Run
运行约2小时结束,在results目录下生成2014-12-1-1.html文件,该文件含重要评测结果如下图1及图2:
图1 单任务评测结果
图2 多任务评测结果
由图1及图2知系统运行单任务性能跑分为386.1,系统运行多任务跑分为660.4。
重复以上过程10次,统计评测分数得下表1。
次数 1 2 3 4 5 6 7 8 9 10
表1 原生内核跑分统计
2.2 编译安装新内核性能评测
使用如下命令安装ZGCC:
root@lyl:/eglibc-deb# dpkg –I * //安装c库
root@lyl:/gcc-32# dpkg –I * //安装gcc工具
如出现库依赖问题导致部分deb包安装失败,使用如下命令解决:
root@lyl:/home# apt-get –f instll //-y即fix,系统自动解决库依赖
root@lyl:/home# gcc –E –v -< /dev/null
……‘-march=nano’//说明工具链安装成功
使用ZGCC工具链编译安装同版本新内核,启动UnixBench,如上重复运行10次,统计
3. 数据处理
二. 用户态评测
1. 评测说明
选取典型App,在指定Nano CPU-Ubuntu平台,用Nano gcc与GNU gcc分别编译产生可执行文件,在保证运行环境相同前提下分别运行,测时间及内存相关参数。
1.1 App选定
选择Ubuntu平台下ffmpeg与mplayer两款App,选择原因如下:
①开源
②大小合适(解压后源码70M左右)
③典型(ffmpeg用于音视频格式转换,mpleyer用于视频播放)
④涉及颜色空间转换及视频编解码,用到大量浮点运算
⑤运行时负载接近恒定,便于测量(其它如建模、3D游戏等,运行时负载波动大)
1.2 测试工具选定
第三方软件如gprof、valgrind、oProfile、google-perftools等均用于代码调优,如统计App中各函数调用次数及时间消耗等,不适合在本测试场合使用。
shell内建命令time(非系统命令/user/bin/time)可用于测量可执行文件运行详细时间消耗,系统命令top通过配置后,可用于测量可执行文件运行详细内存消耗。
故测试工具选定shell内建命令time及系统命令top。
1.3 测试项选定
①时间,测real(时钟时间)、user(用户时间)、sys(内核时间)
②内存,测RES(常驻内存)、SHR(共享内存)、%CPU、%MEM、CODE(代码段)、DATA(数据段)
1.4 测试项说明
real time、user time、sys time系统帮助文档解释如下:
real时钟时间,程序从开始至结束总时间,期间其它进程所耗时间片及进程被阻塞时间包含在内;user和sys分别为用户态及内核态所耗CPU时间,期间其它进程所耗时间片及阻塞时间不包含在内。
SHR包括程序代码段、共享库代码段、nmap文件映射、shmget申请的共享内存等。RES (resident memory usage)常驻内存,为进程运行时所使用物理内存总和。
为保证获得结论的可靠性,本文求得user、sys、RES、SHR均值后,分别取user+sys及RES-SHR结果作为对比依据。
2. 评测步骤
打开一终端,运行top命令,单击f后对top实时显示结果进行配置,配置显示项如下:
2.1 ffmpeg测试用例
用GNU gcc与Nano gcc分别编译ffmpeg-2.5.tar.bz2,分别产生elf可执行文件GNU ffmpeg 与Nano ffmpeg。
打开另一终端,运行可执行文件GNU ffmpeg将mp4格式720p测试片转换为flv格式,命令如下:
root@lyl:/home/lyl# time /usr/local/ffmpeg/bin/ffmpeg -i "./720p.mp4" -y -ab 32 -ar 22050 -qscale 10 -s 1280*720 -r 30 ./out.flv
运行10秒后,top终端显示内存相关测试项如下图:
转换完毕,显示时间相关测试项如下图: