【发布时间】:2014-09-11 14:54:09
【问题描述】:
我使用的是配备 16Gb RAM 和 SSD 的 Intel i7 笔记本电脑。除了指定 -j 参数和启用 CCACHE 之外,我还可以使用其他技巧来加快 AOSP 的编译时间吗?目前大约是 2 小时。
我发现 -j12 在我的 CPU 下具有最佳性能。
【问题讨论】:
标签: performance makefile android-source
我使用的是配备 16Gb RAM 和 SSD 的 Intel i7 笔记本电脑。除了指定 -j 参数和启用 CCACHE 之外,我还可以使用其他技巧来加快 AOSP 的编译时间吗?目前大约是 2 小时。
我发现 -j12 在我的 CPU 下具有最佳性能。
【问题讨论】:
标签: performance makefile android-source
我有两个建议:
1.) 将 /tmp 设置为 ramdisk
这是一个很好的链接,关于在 Ubuntu 中将 /tmp 目录设置为 ramdisk
http://cpiekarski.com/2013/01/02/speeding-up-aosp-builds/
只需为系统临时目录 (/tmp) ramdisk 牺牲几 MB 的 RAM (~60 MB) 就可以将编译时间缩短约 2%-10%,具体取决于总系统吞吐量(其他硬件规格)。
为此,您只需将以下内容添加到 /etc/fstab 文件中:
ramdisk /tmp tmpfs mode=1777,size=2g
其中 size 等于您希望使用的 ram 数量。在这种情况下 2 GB
2.) 交换使用
再次链接: http://ubuntuguide.net/optimize-the-usage-of-swap-to-speed-up-response-for-ubuntu
有一个 swappiness 参数控制内核将进程移出物理内存并移到交换磁盘上的趋势。它的范围从 0 到 100,当 swappiness=0 时,它告诉内核尽可能长时间地避免将进程交换出物理内存,当 swappiness=100 时,它告诉内核积极地将进程交换出物理内存并将它们移动到交换缓存。
要检查您的交换因子,请打开终端并输入:
cat /proc/sys/vm/swappiness
使用以下命令暂时将swappiness的值改为10,下次重启时会恢复。
sudo sysctl vm.swappiness=10
要永久更改该值,请在文本编辑器中打开 /etc/sysctl.conf 并更改 vm.swappiness 的值。如果此值不存在,则将其添加到末尾,例如:
vm.swappiness=10
正如其他帖子中提到的,make -j 和 CCache 也非常重要和有用。有一个名为 schedtool 的程序可以调度 CPU 进程。他们声称它适用于长时间运行的非交互式任务(即 AOSP 构建),但我还没有尝试过。
欢呼快乐建设
【讨论】:
AOSP 构建对我来说也需要大约 2 小时,但只是第一次。下一次构建需要 10 分钟到 1 小时,这取决于修改了哪个模块(java 侧或cpp 核心模块)。如果不修改cpp 代码,编译器会占用缓存的编译代码,编译java 代码不会花费太多时间。
【讨论】: