V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yitingbai
V2EX  ›  Android

求超强 Android 系统编译主机推荐

  •  
  •   yitingbai · 2021-05-14 09:28:21 +08:00 · 16492 次点击
    这是一个创建于 1320 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为项目需要定制安卓系统, 适配好多的手机, 每次修改或者发布版本都要编译好久, 我的 iMac 的 CPU 是 i9 9900K 的, 性能吃满完整编译一次 Android10 耗时 2 个小时左右, 求懂行的朋友推荐一个编译服务器, 我在网上看到有 E5 双路 CPU 这种, 不知道能不能满足快速编译的需求, 怕买回来还不如我的 i9 处理器.

    只要 CPU 强, 内存 32G 差不多了, 显卡不需要,SSD 不需要,显示器不需要, 其他配件凑合稳定就行, 组这样一台机器, 最低预算是多少? 或者有经验的老哥可以推荐一下配置吗?

    86 条回复    2021-08-19 22:32:45 +08:00
    lagoon
        1
    lagoon  
       2021-05-14 09:36:10 +08:00
    嗯?编译 Android 系统,这不上分布式怎么顶得住?
    xunandotme
        2
    xunandotme  
       2021-05-14 09:37:03 +08:00
    ......
    zongren
        3
    zongren  
       2021-05-14 09:38:29 +08:00
    这么慢的吗
    wellsc
        4
    wellsc  
       2021-05-14 09:48:07 +08:00
    @lagoon 别瞎说,分布式是解决单点问题和 IO 密集问题的,编译系统明显是计算密集任务,加配置就得了
    sunny352787
        5
    sunny352787  
       2021-05-14 09:50:07 +08:00
    @wellsc 我之前写 C++的时候还真的是分布式编译的
    richard1122
        6
    richard1122  
       2021-05-14 09:54:20 +08:00
    看看有木有分布式的构建系统,给开源社区用的,比如 chromium 有这个: https://www.electronjs.org/docs/development/goma
    Vindroid
        7
    Vindroid  
       2021-05-14 09:54:46 +08:00
    什么需求啊,要一直完整编译系统啊?
    ch2
        8
    ch2  
       2021-05-14 09:56:55 +08:00   ❤️ 1
    linus 用的是 32 核的 3970X
    yolee599
        9
    yolee599  
       2021-05-14 09:57:22 +08:00
    我们公司是买了一个双 CPU 的 IBM 服务器放机房,专门做安卓内核编译
    yitingbai
        10
    yitingbai  
    OP
       2021-05-14 09:58:09 +08:00
    @richard1122 预算不够, 性价比越高越好
    qwerrewt
        11
    qwerrewt  
       2021-05-14 09:58:59 +08:00
    AMD 锐龙 Threadripper 3990X 。基本上用 80 个线程同时编的话可以半小时编完。
    hello2060
        12
    hello2060  
       2021-05-14 09:59:42 +08:00
    没怎么搞过 android, 不能增量编译的吗?每次改动都要完整编一次?
    Stevenv
        13
    Stevenv  
       2021-05-14 10:01:55 +08:00   ❤️ 1
    10 楼说的对,配一个 amd 的线程撕裂者。。
    lagoon
        14
    lagoon  
       2021-05-14 10:05:36 +08:00
    @wellsc
    猎手遇到学者,猎手说见到老虎打不过
    学者说根据我的计算,用 xx 角度滑铲,就能把老虎开膛破腹。你说,我的公式,哪里有问题?

    猎手:我错了,我知识不足。惭愧惭愧。
    yolee599
        15
    yolee599  
       2021-05-14 10:05:38 +08:00
    @yolee599 #9 CPU 配置如下:
    # grep "model name" /proc/cpuinfo | cut -f2 -d:

    Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
    ...省略了 31 条...
    lagoon
        16
    lagoon  
       2021-05-14 10:07:46 +08:00
    我做过板子+Android 系统 = xx 机器人的项目。
    但楼主说的似乎是纯手机的 Android 系统,不涉及硬件部分。


    我错了。
    3dwelcome
        17
    3dwelcome  
       2021-05-14 10:13:34 +08:00
    正常来说,C++都是分布式编译的,最耗时间的就是 C 文件到 OBJ 文件。除了最后链接阶段不能分布式,别的都可以。

    你看大型游戏公司的源代码编译,就有这种需求,有专门适配 VS 的分布式工具。

    但安卓编译就不太清楚了。没用过不好乱说。
    yitingbai
        18
    yitingbai  
    OP
       2021-05-14 10:19:01 +08:00
    @hello2060 有模块编译, 但是也很慢, 而且有时候不知道编译错误的原因, 全编一次是最快的解决方法
    waruqi
        19
    waruqi  
       2021-05-14 10:22:25 +08:00
    上 ccache
    root99527
        20
    root99527  
       2021-05-14 10:28:57 +08:00 via iPhone
    增量编译就可以吧?以前全量拍包都是在服务器上搞的
    cslive
        21
    cslive  
       2021-05-14 10:31:18 +08:00
    搞一套洋垃圾
    gnahzraensim
        22
    gnahzraensim  
       2021-05-14 10:32:55 +08:00
    E5 还可以 我有个单路 E5 2680 V4 14 核 我编译 AOSP -j28 的参数 也要将近一小时 你配置个双路 应该可以缩减一点时间
    dalabenba
        23
    dalabenba  
       2021-05-14 10:33:36 +08:00 via Android
    Cpu 强在编译这件事上就是核多
    wellsc
        24
    wellsc  
       2021-05-14 10:37:35 +08:00
    @lagoon ???
    mingl0280
        25
    mingl0280  
       2021-05-14 10:59:53 +08:00
    AMD EPYC 7702 64c128t 走你。
    gam2046
        26
    gam2046  
       2021-05-14 11:12:05 +08:00
    9900K 编译一次应该不需要这么久,即使是全量编译也不需要,检查一下是否磁盘存在瓶颈。我用 8700 全量编译也就 1 个小时,之后增量编译就 3 分钟以内(如果跳过 CTS 检查可以到 1 分钟以内)
    kokutou
        27
    kokutou  
       2021-05-14 11:15:16 +08:00 via Android
    3950x,有钱上更高的,固体上好的 980pro 。
    kokutou
        28
    kokutou  
       2021-05-14 11:15:30 +08:00 via Android
    e5 主频低,不合适。
    dinghmcn
        29
    dinghmcn  
       2021-05-14 11:16:49 +08:00
    @yitingbai #18 我们公司全部重新编译要 4 个小时,都是 make installclean 后增量编译;出错了找不到原因?看那个模块出错 单独 make clean-模块名,没有出现过出错了必现全部重新编译的
    yitingbai
        30
    yitingbai  
    OP
       2021-05-14 11:25:05 +08:00
    @gam2046 在 mac 下的虚拟机跑的, 因为 mac 环境配置总是编译失败,无奈采用虚拟机. 看完大家的评论, 我准备配一台 x99 平台的双路 E5 了, 比较便宜
    yitingbai
        31
    yitingbai  
    OP
       2021-05-14 11:27:35 +08:00
    @gam2046 在 mac 下的虚拟机跑的, 因为 mac11 环境配置总是编译失败,无奈采用虚拟机. 而且 iMac 散热不行, 长时间编译温度维持在 98 度以上, 频率被限制在 3.6g 附近, 又因为机型多,out 目录超大, 所以用的外置 sata ssd, io 速度确实不行,所以我才动了杀心, 搞一台专门编译的服务器
    Michaelssss
        32
    Michaelssss  
       2021-05-14 11:30:37 +08:00
    线程撕裂者,把 U 开满。。差不多,毕竟计算集中。。。。。。双路 E5 这种低频方案不要尝试了。意义不大
    napsterwu
        33
    napsterwu  
       2021-05-14 11:31:46 +08:00 via iPhone
    7700k 在 VMware 里编译 lineageos 全量大概三个小时吧
    billlee
        34
    billlee  
       2021-05-14 11:43:49 +08:00
    分布式编译是可以,但那是单机达到瓶颈后的措施,先上双路至强吧,肯定不是拿台桌面机型去搞分布式的

    注意现在的 xeon 都不叫 e5 了,最后用 e5 系列编号的是 haswell 架构吧,很多年前的了
    yitingbai
        35
    yitingbai  
    OP
       2021-05-14 12:00:02 +08:00
    @billlee 你这句话太重要了, 难怪淘宝全都是卖 E5 整机的,都是垃圾啊,我得研究研究
    calpes
        36
    calpes  
       2021-05-14 12:16:48 +08:00
    这个需求基本上就是县城撕裂者的场景了
    azhangbing
        37
    azhangbing  
       2021-05-14 12:46:54 +08:00   ❤️ 1
    线程撕裂者 5900X,速度买,矿老板都在扫这个 CPU
    sherlock1122
        38
    sherlock1122  
       2021-05-14 12:49:41 +08:00   ❤️ 1
    目前我用 3950X + 3900X,编译内核好快,测试 centos 7 内核 rpm 或者 fedora 34 内核 rpm 带 debuginfo rpm,时间为 10 min 左右。

    建议至少 3950X 起步,5900X,5950X,59XXX 更好。
    这个钱花得值。
    updateing
        39
    updateing  
       2021-05-14 12:54:01 +08:00 via Android
    我用 3950X,45 分钟编译出魔趣的完整包。但是 SSD 绝对是必要的,不能没有(虽然我用的是个辣鸡 D4502 )
    killeder
        40
    killeder  
       2021-05-14 12:55:42 +08:00
    加到 256G 内存 1TB SSD
    zpxshl
        41
    zpxshl  
       2021-05-14 13:03:03 +08:00 via Android
    编制系统,也吃 io 吧
    kingiis
        42
    kingiis  
       2021-05-14 13:24:58 +08:00
    固态+i710 就够了
    l4ever
        43
    l4ever  
       2021-05-14 13:38:05 +08:00
    Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz
    Android 5.1 48 分钟左右.
    0312birdzhang
        44
    0312birdzhang  
       2021-05-14 13:47:10 +08:00
    @ch2 #8 单纯只编译 kernel 快多了,我的 j3455 都能上。Android 那些 jar 编起来慢的一 p,还要大内存。。。
    aneostart173
        45
    aneostart173  
       2021-05-14 13:56:31 +08:00
    5950x 走起
    yazoox
        46
    yazoox  
       2021-05-14 13:56:33 +08:00
    @3dwelcome 兄弟,有相关的文档,wiki,或者工具的名字么?我们的项目,有几千个 c++的 proj,相互之间还有以来。现在都是在一台机器上编译。我想能否也做成分布式编译?
    3dwelcome
        47
    3dwelcome  
       2021-05-14 14:02:20 +08:00
    @yazoox Windows 上最早的是 Incredibuild,我只知道这个。

    现在应该还有不少可选方案,可以试着搜一下。
    NSAgold
        48
    NSAgold  
       2021-05-14 14:16:04 +08:00 via Android
    可以去 mokee 社区问问
    据说最好使用高性能 cpu+高性能 ssd+debian 系编译 内存 32g 应该是够的
    另外 准不准备适配小众机型😏
    vessel
        49
    vessel  
       2021-05-14 14:18:08 +08:00
    @yazoox 国内大厂都是分布式编译的,应该没开源
    luny
        50
    luny  
       2021-05-14 14:31:24 +08:00
    安卓编译确实比较费,我们的是两颗 E5-2680 v4 28 核心,512G 的内存,2T 的 SSD 。
    luny
        51
    luny  
       2021-05-14 14:33:38 +08:00
    @yitingbai 另外有没有推荐的安卓 rom 开发,我们急需,深圳的
    Puteulanus
        52
    Puteulanus  
       2021-05-14 14:37:12 +08:00
    https://metal.equinix.com/product/servers/
    按小时付费的独立服务器
    lakehylia
        53
    lakehylia  
       2021-05-14 14:40:03 +08:00
    @qwerrewt 京东 29999,好贵啊
    rrZ2C
        54
    rrZ2C  
       2021-05-14 14:45:31 +08:00
    @gam2046 那么,求问增量编译怎么才会跳过 CTS 检查?
    felixcode
        55
    felixcode  
       2021-05-14 14:46:33 +08:00 via Android
    核尽量多一些,另外可以考虑加内存用内存盘
    Yc1992
        56
    Yc1992  
       2021-05-14 15:16:31 +08:00
    等 5990x
    fengjianxinghun
        57
    fengjianxinghun  
       2021-05-14 15:41:13 +08:00
    rrZ2C
        58
    rrZ2C  
       2021-05-14 15:47:19 +08:00
    @luny 不是很懂这个 CPU,但是你们这内存上得怎么这么大呀 ,平时会一台机器上跑很多个 Android r 编译任务吗?
    luny
        59
    luny  
       2021-05-14 15:54:59 +08:00
    @rrZ2C 申请回来就是这么大的,没有刻意提需求,凑合用了
    fanyingmao
        60
    fanyingmao  
       2021-05-14 15:55:23 +08:00
    哈哈,以前开发安卓编译一次十几分钟,代码写到哪都忘记了。
    yulgang
        61
    yulgang  
       2021-05-14 16:00:12 +08:00
    编译不是很消耗 io 的么,为啥不需要 ssd 呢 😂
    zzzmh
        62
    zzzmh  
       2021-05-14 16:07:20 +08:00
    不懂安卓编译机制,但我知道 amd yes,你看预算来搞个 amd 39xx / 59xx 或者直接上 EPYC,算力方面肯定把隔壁蓝厂吊起来转圈打
    duanxianze
        63
    duanxianze  
       2021-05-14 16:40:18 +08:00
    目前来看还是 AMD3995x 这种好,64c128t,盲猜能把你的编译速度提升 5 倍以上
    zlbruce
        64
    zlbruce  
       2021-05-14 16:50:03 +08:00
    @yazoox 以前折腾 gentoo 的时候用过 distcc,可以参考下 https://distcc.github.io/
    ophunter
        65
    ophunter  
       2021-05-14 17:23:08 +08:00
    有大佬了解,安卓 APP,android studio 编译运行快,怎么配置法
    SupperMary
        66
    SupperMary  
       2021-05-14 17:33:03 +08:00
    我司的编译服务器,双路志强 4210R,256G RAM (你一个人用的话,32G 应该是够的),
    SSD 可以按使用体验来说,可以显著增加编译速度,建议增加。
    yitingbai
        67
    yitingbai  
    OP
       2021-05-14 19:14:32 +08:00
    @luny 没认识的, 我是单打独斗
    yitingbai
        68
    yitingbai  
    OP
       2021-05-14 19:15:54 +08:00
    @yulgang ssd 肯定很重要啊, 但是我已经有了很好的 ssd, 既然再配电脑, 已有的配件自然能省则省
    yitingbai
        69
    yitingbai  
    OP
       2021-05-14 19:20:07 +08:00
    @SupperMary ssd 肯定有的, 我的意思是我不需要再采购, 省点预算, 我已经下单了, 双路 e5 2890 v3, 24 核 48 线程, 32G 内存, 虽然不是顶级配置, 但是才几千块钱, 应该足够我用了, 可以把我的 iMac 解放出来了, 不然每次编译, 100%满载都没办法干其他事情
    zwy100e72
        70
    zwy100e72  
       2021-05-14 19:47:28 +08:00   ❤️ 3
    编译是少数单纯加核心就能获得近乎线性性能提升的场景(链接阶段除外)。

    计算方面:
    单机编译配置简洁,最高可以到 64c/128t ( Threadripper ) 或 128c / 256t (双路 EPYC);分布式的玩法下最密集可以做到 2U 高度 512c / 1024t ( 4x 双路 EPYC )

    内存方面:
    c++ 编译通常 1 线程配置 2-4GB 内存,这个可以提前测试出来;如果想并行链接的话,需要的内存会大大超出这个范围

    存储方面:
    SSD 肯定很有必要。产生的中间文件都需要保存在磁盘中,机械硬盘除非做阵列,很难跟上编译的速度

    分布式编译方面:
    商用方案 IncrediBuild 、开源方案 distcc / icecc
    java 等其他语言编译加速我不确定,可能不需要这种方案吧(逃

    参见:
    https://www.servethehome.com/dell-emc-poweredge-r7525-review-flagship-dell-dual-socket-server-amd-epyc/

    https://www.servethehome.com/dell-emc-poweredge-c6525-review-2u4n-amd-epyc-kilo-thread-server/

    https://en.wikipedia.org/wiki/Incredibuild

    https://en.wikipedia.org/wiki/Distcc

    ?t=897
    zwy100e72
        71
    zwy100e72  
       2021-05-14 19:54:50 +08:00   ❤️ 1
    > 双路 e5 2890 v3

    我想提醒楼主一句,买双路 E5 可能还不如买 5950X,因为近几年 Intel 性能已经渐渐落后于 AMD 了;同时服务器平台会有开机慢、运行噪音大等问题,希望楼主能考虑好再下手
    https://www.cpubenchmark.net/high_end_cpus.html

    > 32G 内存

    32G 内存对 24c / 48t 还是太少了,楼主可能会在内存上遇到瓶颈
    FS1P7dJz
        72
    FS1P7dJz  
       2021-05-14 20:00:17 +08:00
    xeon 可以上 ECC 内存
    这个还是蛮重要的
    yitingbai
        73
    yitingbai  
    OP
       2021-05-14 20:47:39 +08:00
    @zwy100e72 5950X 太太太贵了
    echo1937
        74
    echo1937  
       2021-05-14 20:50:01 +08:00
    @FS1P7dJz #72 5950x 也支持支持 ECC,更别提线程撕裂者和 EPYC
    encro
        75
    encro  
       2021-05-14 21:08:30 +08:00
    x 云,竞价实例,自动管理
    liuhan907
        76
    liuhan907  
       2021-05-14 21:08:49 +08:00 via Android
    你双路 e5 配下来,编译一下说不定发现还不如 9900k
    kokutou
        77
    kokutou  
       2021-05-14 22:14:11 +08:00
    @yitingbai #69

    2690 v3 吧, 16000 分
    5900x 39000 分,

    一颗 5900 吊打 2 颗 2690 ,你真的买错了...

    https://item.jd.com/100016046842.html
    https://item.jd.com/100013779406.html
    rqrq
        78
    rqrq  
       2021-05-14 22:19:40 +08:00
    去 geekbench 查多核得分,找个性价比最高的。
    12101111
        79
    12101111  
       2021-05-14 22:29:01 +08:00   ❤️ 1
    https://github.com/mozilla/sccache/ 带远程存储的编译缓存 + 5950x, 在编译机上跑一次, 然后之后都在开发机上跑, 没有改变的代码会自动用缓存
    rqrq
        80
    rqrq  
       2021-05-14 23:07:26 +08:00
    是我就去弄个 C621+W3175X,最次也是 X299+10980XE
    zqcolor
        81
    zqcolor  
       2021-05-14 23:15:14 +08:00   ❤️ 1
    @yitingbai 这个配置应该够了,之前用 2780 v2x2 大概 15 minutes build 好,其他普通 i7 电脑 8 小时
    yitingbai
        82
    yitingbai  
    OP
       2021-05-14 23:27:12 +08:00
    @kokutou 不是我不知道 5900x 好, 关键是这一颗 U 就顶的上我一台双路 E5 的主机钱了, 而且两颗 E5 2690 加一起也有 32000 分了, 没太多预算, 只能妥协了
    yitingbai
        83
    yitingbai  
    OP
       2021-05-14 23:28:22 +08:00
    @12101111 这个厉害了, 给你点赞
    kokutou
        84
    kokutou  
       2021-05-15 00:13:08 +08:00 via Android
    @yitingbai
    5800x 28000 分。。。
    5800x,450m 迫击炮,fs140 就可以了,我就这配置。
    主频能到的 4.85 ,牛逼体质能到 5.05 ,编译跑单核的步骤很有用。

    2690v3 洋垃圾玩意,不值这个价,更别说主板都是拆机或寨板,x99 都多少年了。
    kokutou
        85
    kokutou  
       2021-05-15 00:16:55 +08:00 via Android
    5800x 5900x 5950x 单核 3500
    2690v3 单核 1900
    phonenixylf
        86
    phonenixylf  
       2021-08-19 22:32:45 +08:00
    @yitingbai hi,你这个配置,目前编译一次系统需要多长时间? 编译的系统是 android 多少的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1228 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:09 · PVG 02:09 · LAX 10:09 · JFK 13:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.