高通Android安卓编译服务器配置推荐与环境配置搭建

背景概述:

公司编译环境经过多年迭代升级,由最开始的每人一台Ubuntu 16.04主机,到后面的装了Ubuntu 16.04的磁盘阵列、多核CPU、大内存的多用户主机,再到现在的Ubuntu 24.04全闪磁盘阵列、超多核CPU海量内存、多用户加容器化环境的主机。

 

服务器软件环境架构图片描述:

 

 

编译服务器环境配置简述:

在Ubuntu 24.04 LTS系统的基础上,安装ssh、samba、git、repo、python2.7、ccache、p7zip、bees、schroot等基础服务;配置好user slience的cgroup限制;挂载btrfs 全闪磁盘组成的文件系统;部署不同Ubuntu系统的rootfs;通过用户管理脚本添加和配置多个开发者。

 

文件存储上,我们先创建一个本地repo镜像仓库。将所有使用代码的repo仓库拉取到由多块机械硬盘组成的文件系统中。其它用户在拉取代码时只需在加上--reference 指令即可从本地镜像仓库同步,大大减少了拉取时间和远端代码服务器的压力。使用BTRFS格式化多块固态硬盘用在编译代码使用的存储空间。BTRFS是COW高级文件系统,可以支持透明压缩、引用拷贝、文件快照等高级特性。利用这些特性,配合编译脚本优化、bees后台文件整理、ccache 引用拷贝复制等优化手段,可以极大减少代码占用磁盘空间以及提升编译速度!

 

编译环境上,我们使用schroot。chroot方案环境部署极其简单,仅需解压预先配置好的根文件系统即完成了95%的工作量,而且环境可以多用户共享,不受文件系统、用户权限、内核版本、网络等限制。缺点是配置根文件系统环境较麻烦,一旦配置好无需调整即可方便部署到多个编译服务器上。而且单个服务器系统上可以部署多个Ubuntu版本,并让户共享使用环境。使用schroot进入根文件系统无需root权限。我们提供了从Ubuntu 16 ~ 22各个LTS的环境,完全满足高通A7 ~ A16、Rockchip、MTK、展锐等SDK编译环境需求。通过精细优化调试的schroot环境可以兼容高通各个CP版本编译,以及各个厂家Linux(yocto\buildroot)版本编译,可以兼容chroot嵌套化和qemu异构,满足各种奇怪的编译环境需求。

 

服务器优化管理上,我们也想了很多办法。首先是针对大内存服务器的内存调优,其次是cgroup配置,再然后是bees与btrfs服务对文件系统的定期维护。这些手段极大改善了高负载卡顿、爆内存、存储效率低等严重稳定性问题。另外还提供了用户管理脚本,一键增删用户并配置好用户的编译环境,极大降低管理门槛;提供代码同步脚本,同步代码十分方便。

 

编译服务器硬件配置简述:

处理器:EPYC 9654 (96C/192T)

内存:384G

硬盘:4*8T NVMe + 8*16T HDD

总价:9W RMB

 

编译代码实测:进入Ubuntu 16.04 LTS 容器后使用time指令测试整编高通6115 Android14 GMS认证版本耗时仅需46分钟

  全量编译高通Android 14所需时间

 

总结:

高性能硬件与高效率软件环境极大提升工作流效率和硬件利用率。相比起虚拟机,“高版本内核”加“多用户加容器化环境”加“单系统多用户”的组合可以充分挖掘硬件性能,降低硬件成本同时提升效率。

需要更多硬件配置建议参考或者对环境件搭建方案有需求的可以私信留言(付费)。

posted @ 2025-04-28 10:38  PYPYN  阅读(800)  评论(1)    收藏  举报