Android编译时主要瓶颈分析

模拟2个用户同时登陆一个4核心处理器的电脑进行Android编译,编译选项make -j8,CPU配置如下:

bhsong@SHA-IT-Lintester01:~/workspace/android/kernel$cat /proc/cpuinfo processor :0 vendor_id :GenuineIntel cpu family :6 model :37 model name :Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz processor :1 vendor_id :GenuineIntel cpu family :6 model :37 model name :Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz processor :2 vendor_id :GenuineIntel cpu family :6 model :37 model name :Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz processor :3 vendor_id :GenuineIntel cpu family :6 model :37 model name :Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz
如果模拟 2 个用户同时登录服务器并且同时编译 Android ,我们分析一下 CPU 和磁盘利用率,如下图:


我们可以看出CPU的利用率保持在100%几乎不动(绝大多数时间在userspace运算而非进入kernel系统调用),而磁盘的占用率依然非常低,不超过10%

基本可以看出由于受限于编译过程中等待CPUMakefile的同步,Android编译过程中对IO的需求不大(或者此案例无法发挥),基本在1MB以内或者1MB左右徘徊。


到编译的后期阶段,主要工作变成了将编译结果拷贝到out目录,则呈现出IO需要增大的趋势,不过到install阶段,CPU利用率依然很高:


另外,也考察了一下内存的情况,这个编译电脑的内存是12G左右,2个用户编译几乎没有达到满载,看到的高峰时段如下:

bhsong@SHA-IT-Lintester01:/proc$ free total used free shared buffers cached Mem: 12255168 11840396 414772 0 654472 5788252 -/+ buffers/cache: 5397672 6857496 Swap: 4050940 5256 4045684我们看到swap的使用情况很低,意味着内存尚为成为瓶颈要求磁盘虚拟内存,高峰时段free的memory一直都存在(高峰时段还剩下400MB),其中耗掉的内存中有多达6GB左右也是做文件系统cache用在,实际hold住的内存大概5.5GB。

由此,对于Android编译而言,选择高档CPU如16核心是重要需求,IO和内存不是主要的瓶颈。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值