采访:Linaro对Android ICS的性能改进

Linaro大幅改进了AOSP标准版Android 4.0.4的性能表现,在不同类型的基准测试中成绩提高了20-30%到500%。进步最大的方面归因于对libc库中字符串操作的优化,而且他们用了跟Google不一样的编译器和编译参数来生成Androud程序。Linaro在香港举办他们的Linaro Connect Q2.12会议,会上演示了他们的Android版本和标准版本的对比,演示在一台配备TI OMAP4430芯片的Pandaboard设备上进行。选择该特定设备是因为它刚好两个版本都支持,测试并不难在其他设备上重现。基准测试的结果是标准Android跑到30 FPS的3D图形测试,Linaro Android能跑到60 FPS。

InfoQ对Linaro从事Android开发工作的工程师Bernhard Rosenkränzer进行了采访,请他说明他们对Android的改进工作。

InfoQ:我们说的是多大程度的性能改进?能给个数字吗?

BR:还是那句话,看你要做什么事情。如果是手写的汇编代码,根本不调用共享库的,显然不会有多少性能提升,反过来,当测试场景严重依赖于memchr()strlen()的时候,让Linaro版比标准版Android快个五倍一点都不难。以显示的应用来说,估计速度提升20%-30%比较合理。

InfoQ:我看到有的测试标准版Android跑到30 FPS的,Linaro能跑到60 FPS。是什么测试有这种成绩?

BR: 那个是0xbench的3D部分,测试环境是Pandaboard配720p的屏幕。这个测试还不算成绩最好的,只不过它除了测试的成绩漂亮,画面也很漂亮。考虑到观众里面有不少非技术背景的,我们不能只拿出干巴巴的结果数据。

InfoQ:你们具体做了哪些改进?

BR:有好几个方面。按实际改动的代码量来算的话,Bionic(即Android的libc)是改得最多的。我们把其中的多数核心字符串处理函数替换为针对ARMv7 CPU家族优化的版本, 尤其针对Cortex A9做了优化。

我们用Linaro的工具链(基于gcc 4.7)重新生成了整个系统,编译参数也一样。(标准版Android的构建系统看上去并没有规划对不同设备设置不同编译参数,也就是说没有用上-mcpu=、-mtune=这些参数。)Android默认加了-fno-strict-aliasing参数(对于优化结果是否正确由代码是否遵循C/C++别名规则决定的情况,关闭优化)——我们选择去掉这个参数,同时修正Android代码树中所有违反aliasing规则的地方。(有几个子目录我们认为改起来太费劲,不值得,所以在不连累OS其他部分的前提下,单独针对几个目录保留了-fno-strict-aliasing参数。)

我们还更新了内核,同时微调了一些设置。其实内核还有一些优化的空间,例如我们的内核还保留了完整的调试支持、性能计数器等等。这些功能都是有性能代价的,如果不是像我们这样做开发平台的,显然应该关闭这些功能去追求运行速度。

还有一件事情需要特别声明:我们没有修改任何驱动。(有人怀疑FPS提升是因为我们在驱动里面关了vsync。)我们的成绩并不依赖于特别的硬件平台,演示中用了Pandaboard只是因为它是仅有的同时支持AOSP标准版和Linaro版Android的现成平台,用不同硬件的话没法直接比较。Linaro Android在其他板子上有同样优秀的表现,,比如Origen、Snowball和iMX6。

InfoQ:这些改进会整合回标准版Android吗?

BR:我们打算进一步测试之后提交给AOSP。至于会不会被接纳到下一版的Android并不由我们决定。有些Android修改版制作者(如CyanogenMod)已经在着手整合我们的修改。

InfoQ:Linaro的改进会不会只在成员企业的小圈子里使用?

BR:这件事也不由我们决定。我们把代码准备好了,用不用是他们的事。

InfoQ:Google对这件事情有什么回应吗?

BR:有一位Google工程师在相关Google Plus帖子上给了个“+1”,除此之外,没有。

InfoQ:你跟Google其实有合作吗?

BR:有的,我们曾经提交过一些补丁让Android能在gcc 4.6和gcc 4.7上编译。有些被接纳了,有些被忽略掉,因为他们已经在内部的树上用别的方法修正了问题。

InfoQ:Linaro有没有别的Android相关项目正在进行中?

BR:我们每个月都为成员企业的开发板发布Android版本(且每天发布快照版本),放在https://android-build.linaro.org/,一般已经整合了我们所有的新改进。

除了一般性的性能优化,我们还会做平台整合(集成驱动之类),以及移植开发工具。例如Linaro Android包括busybox、perf、lrzsz和gator(执行ARM的DS-5图形化调试/性能测量工具需要)。

编辑提示:Linaro是ARM、Freescale、IBM、Samsung、Ericsson和TI共同组建的非营利组织,它的任务是巩固和优化ARM平台上的开源软件。

查看英文原文:Interview: Improving the Performance of Android ICS

你可能感兴趣的:(采访:Linaro对Android ICS的性能改进)