Android编译时主要瓶颈分析
16lz
2022-05-15
模拟2个用户同时登陆一个4核心处理器的电脑进行Android编译,编译选项make -j8,CPU配置如下:
bhsong@SHA-IT-Lintester01:~/workspace/android/kernel$cat /proc/cpuinfoprocessor :0vendor_id :GenuineIntelcpu family :6model :37model name :Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz processor :1vendor_id :GenuineIntelcpu family :6model :37model name :Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz processor :2vendor_id :GenuineIntelcpu family :6model :37model name :Intel(R) Core(TM) i3 CPU 550 @ 3.20GHzprocessor :3vendor_id :GenuineIntelcpu family :6model :37model name :Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz
如果模拟 2 个用户同时登录服务器并且同时编译 Android ,我们分析一下 CPU 和磁盘利用率,如下图:
我们可以看出CPU的利用率保持在100%几乎不动(绝大多数时间在userspace运算而非进入kernel系统调用),而磁盘的占用率依然非常低,不超过10%。
基本可以看出由于受限于编译过程中等待CPU和Makefile的同步,Android编译过程中对IO的需求不大(或者此案例无法发挥),基本在1MB以内或者1MB左右徘徊。
到编译的后期阶段,主要工作变成了将编译结果拷贝到out目录,则呈现出IO需要增大的趋势,不过到install阶段,CPU利用率依然很高:
另外,也考察了一下内存的情况,这个编译电脑的内存是12G左右,2个用户编译几乎没有达到满载,看到的高峰时段如下:
bhsong@SHA-IT-Lintester01:/proc$ free total used free shared buffers cachedMem: 12255168 11840396 414772 0 654472 5788252-/+ buffers/cache: 5397672 6857496Swap: 4050940 5256 4045684我们看到swap的使用情况很低,意味着内存尚为成为瓶颈要求磁盘虚拟内存,高峰时段free的memory一直都存在(高峰时段还剩下400MB),其中耗掉的内存中有多达6GB左右也是做文件系统cache用在,实际hold住的内存大概5.5GB。
由此,对于Android编译而言,选择高档CPU如16核心是重要需求,IO和内存不是主要的瓶颈。
更多相关文章
- linux ,Android基础知识总结
- Android(安卓)JNI编程内存问题定位方法
- Android图形库Skia(一)-基本测试生成PNG图片
- android直接找一个文件,部分编译等实用
- Android(安卓)CTS 测试总结【转】
- android 使用openCV编译.so库
- Ubuntu11.04 Android编译时遇到 cannot find -lncurses错误解决
- android 进程内存查看
- Android(安卓)NDK环境搭建(Windows环境)