好文档 - 专业文书写作范文服务资料分享网站

ZGCC性能评估

天下 分享 时间: 加入收藏 我要投稿 点赞

修订历史 版本 V1.0

ZGCC编译性能评测

内容 修订者 时间 2014-12-1 内核态评测 李斌 2014-12-3 用户态评测 李斌 李彦龙 摘要:为对比ZGCC与原生GNU GCC编译性能的差异,本文在Linux OS内核态与用户态分别进行评测。在内核态,使用UnixBench分别评测自带原生内核及用ZGCC编译安装的同版本新内核性能,获得数据;在用户态,挑选典型应用,分别ZGCC与GNU GCC编译后运行,使用系统命令top及shell内建命令time测时间及内存消耗,获得数据;对比内核态及用户态数据,得出评测结论。

一. 内核态评测 1. 评测说明 1.1 工具简介

UnixBench是一个类unix(Unix,BSD,Linux)系统的性能评测工具,开源,被广泛用于测试linux系统主机的性能。如被评测主机为多CPU系统,其默认处理方式是运行两次测试,一次测试系统运行单任务的性能,一次测试系统运行多任务的性能,并分别给出测试结果。UnixBench的测试结果不仅依赖硬件,还取决于操作系统、库及编译器。

1.2 测试项说明 测试项 Double-Precision Whetstone Execl Throughput File copy Pipe Throughput 说明 测试浮点数操作的速度和效率 测试每秒可执行的execl 系统调用的次数 测试从一个文件向另外一个文件传输数据的速率 测试一秒内一个进程可以向一个管道写512字节数据然后再读回的次数,需注意pipe throughtput在实际编程中并不存在 用于测试string handling,因无浮点操作,故深受软件和硬件设计、编译和链接、代码优化、内存cache、等待状态、整数数据类型的影响 测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数,这个测试首先创建一个子进程,再和这个子进程进行双向管道传输 测试每秒一个进程可以创建子进程然后收回子进程的次数,其关注点是新进程PCB创建和内存分配 测试进入和离开操作系统内核的代价,即一次系统调用的代价 测试一秒钟内一个进程可并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8 Dhrystone 2 using register variables Pipe-based Context Switching Process Creation System Call Overhead Shell Scripts 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 次数

单任务 多任务

374.7 384.7 369.8 638.2 627.4 638.5

371.3 656.4 387.7 650.6 373.2 631.8 387.4 623.6 374.3 658.2 381.9 646.6 383.5 671.7 表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次,统计评测分数得下表2。 次数 单任务 多任务 1 2 3 4 5 6 7 8 9 10 表2 编译安装新内核跑分统计

3. 数据处理

对表1与表2单任务跑分与多任务跑分取和后取均值,得表3: GNU gcc内核 1023.15 ZGCC内核 性能 跑分均值 二. 用户态评测 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。

ZGCC性能评估

修订历史版本V1.0ZGCC编译性能评测内容修订者时间2014-12-1内核态评测李斌2014-12-3用户态评测李斌李彦龙摘要:为对比ZGCC与原生GNUGCC编译性能的差异,本文在LinuxOS内核态与用户态分别进行评测。在内核态,使用UnixBench分别评测自带原生内
推荐度:
点击下载文档文档为doc格式
7jwno894is3gznb0gt563y3j84vsq000aes
领取福利

微信扫码领取福利

微信扫码分享