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和内存不是主要的瓶颈。


  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋宝华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值