是否可以在 32GB RAM 上构建 AOSP?

问题描述 投票:0回答:1

我很清楚最低要求明确规定了 64GB RAM,但在另一篇操作文章中我读到了 32GB,并且该文章下的评论也证实了这一点。

但是当我尝试“m -j28”时,我得到了这样的结果: (现在还使用 -j8 进行了测试)

[100% 1/1] analyzing Android.bp files and generating ninja file at out/soong/build.aosp_cf_x86_64_phone.ninja
FAILED: out/soong/build.aosp_cf_x86_64_phone.ninja
cd "$(dirname "out/host/linux-x86/bin/soong_build")" && BUILDER="$PWD/$(basename "out/host/linux-x86/bin/soong_build")" && cd / && env -i  "$BUILDER"     --top "$TOP"     --soong_out "out/soong"     --out "out"     --soong_variables out/soong/soong.aosp_
cf_x86_64_phone.variables -o out/soong/build.aosp_cf_x86_64_phone.ninja -l out/.module_paths/Android.bp.list --available_env out/soong/soong.environment.available --used_env out/soong/soong.environment.used.aosp_cf_x86_64_phone.build Android.bp
Warning: Module 'androidx.wear_wear' depends on non-existing optional_uses_libs 'wear-sdk'
Warning: Module 'androidx.wear.compose_compose-foundation' depends on non-existing optional_uses_libs 'wear-sdk'
Killed
20:55:51 soong bootstrap failed with: exit status 1
ninja: build stopped: subcommand failed.

#### failed to build some targets (54 seconds) ####

我在 out/verbose.log 文件中没有看到更多有用的信息。
另外,我不认为缺少可选库“wear-sdk”是构建被终止的原因。
那么到底是 RAM 吗?


  • 内存: 32.0 GiB
  • 处理器:AMD Ryzen™ 9 7950X × 32
  • 操作系统名称:Ubuntu 24.04.1 LTS
  • 操作系统类型: 64 位
android ubuntu
1个回答
0
投票

尝试配置 ZRAM。 ZRAM 是内存交换的一种形式,它将交换的内存页面压缩到 RAM 中,而不是将它们交换到磁盘。我建议将 ZRAM 设置为总 RAM 大小的 3/4。这应该可以让您在具有 32 GiB 物理 RAM 的计算机上获得接近 64 GiB 的可用 RAM。

如果绝对必要,请同时使用 ZRAM 和磁盘交换,但首先尝试仅使用 ZRAM 并使用较少的线程,因为磁盘交换非常慢。理论上,足够大的磁盘交换几乎可以保证成功。

这里是解释如何配置 ZRAM 的示例文章:https://fosspost.org/enable-zram-on-linux-better-system-performance

我注意到在 AOSP 构建期间有两个阶段需要大量 RAM:

  1. 构建的初始启动阶段,评估构建文件(Soong 和 makefile)并创建构建计划。根据我的观察,这几乎是一个单线程操作。我不知道为什么会使用如此多的 RAM,但我发现在此阶段 Android 13 版本上的 RAM 使用量超过 40 GiB。由于我不知道根本原因并且它是单线程的,因此我不知道有什么方法可以减少此阶段的 RAM 需求。
  2. 在构建期间,有一个阶段,根据分配给构建的线程数并行执行 kotlin 编译器和/或 java 编译器的许多实例。我观察到这些编译器的每个实例都可以使用 1.5 GiB 或更多的 RAM,因此如果您有 32 个线程运行这些编译器,您可以轻松消耗超过 48 GiB 的 RAM。在此阶段可能有助于限制并发线程的数量。使用上述 ZRAM/交换技术,您可能会在您的情况下使用 24 个线程,但可能不是您的 CPU 能够处理的完整 32 个线程。
© www.soinside.com 2019 - 2024. All rights reserved.