【问题标题】:Speeding up Android (AOSP) build time加快 Android (AOSP) 构建时间
【发布时间】:2014-09-11 14:54:09
【问题描述】:

我使用的是配备 16Gb RAM 和 SSD 的 Intel i7 笔记本电脑。除了指定 -j 参数和启用 CCACHE 之外,我还可以使用其他技巧来加快 AOSP 的编译时间吗?目前大约是 2 小时。

我发现 -j12 在我的 CPU 下具有最佳性能。

【问题讨论】:

    标签: performance makefile android-source


    【解决方案1】:

    我有两个建议:

    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 构建),但我还没有尝试过。

    欢呼快乐建设

    【讨论】:

    • 另一个更彻底地解释 ramdisk 的好资源:ubuntuguide.net/…
    • 使用 ramdisk 是否存在收益递减点?如果我有 20gb 空闲而不影响工作流,是否应该将所有这些都放到 tmp 中,或者我是否会从将一些源代码树移到 ramdisk 中受益?
    【解决方案2】:

    AOSP 构建对我来说也需要大约 2 小时,但只是第一次。下一次构建需要 10 分钟到 1 小时,这取决于修改了哪个模块(java 侧或cpp 核心模块)。如果不修改cpp 代码,编译器会占用缓存的编译代码,编译java 代码不会花费太多时间。

    【讨论】:

      猜你喜欢
      • 2021-10-25
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 2013-06-26
      • 2017-03-17
      • 2012-10-31
      • 1970-01-01
      相关资源
      最近更新 更多