
因为项目需要定制安卓系统, 适配好多的手机, 每次修改或者发布版本都要编译好久, 我的 iMac 的 CPU 是 i9 9900K 的, 性能吃满完整编译一次 Android10 耗时 2 个小时左右, 求懂行的朋友推荐一个编译服务器, 我在网上看到有 E5 双路 CPU 这种, 不知道能不能满足快速编译的需求, 怕买回来还不如我的 i9 处理器.
只要 CPU 强, 存 32G 差不多了, 显卡不需要,SSD 不需要,显示器不需要, 其他配件凑合稳定就行, 组这样一台机器, 最低预算是多少? 或者有经验的老哥可以推荐一下配置吗?
1 lagoon 2021-05-14 09:36:10 +08:00 嗯?编译 Android 系统,这不上分布式怎么顶得住? |
2 xnplus 2021-05-14 09:37:03 +08:00 ...... |
3 zongren 2021-05-14 09:38:29 +08:00 这么慢的吗 |
5 sunny352787 2021-05-14 09:50:07 +08:00 @wellsc 我之前写 C++的时候还真的是分布式编译的 |
6 richard1122 2021-05-14 09:54:20 +08:00 看看有木有分布式的构建系统,给开源社区用的,比如 chromium 有这个: https://www.electronjs.org/docs/development/goma |
7 Vindroid 2021-05-14 09:54:46 +08:00 什么需求啊,要一直完整编译系统啊? |
8 ch2 2021-05-14 09:56:55 +08:00 linus 用的是 32 核的 3970X |
9 yolee599 2021-05-14 09:57:22 +08:00 我们公司是买了一个双 CPU 的 IBM 服务器放机房,专门做安卓内核编译 |
10 yitingbai OP @richard1122 预算不够, 性价比越高越好 |
11 qwerrewt 2021-05-14 09:58:59 +08:00 AMD 锐龙 Threadripper 3990X 。基本上用 80 个线程同时编的话可以半小时编完。 |
12 hello2060 2021-05-14 09:59:42 +08:00 没怎么搞过 android, 不能增量编译的吗?每次改动都要完整编一次? |
13 infreboot 2021-05-14 10:01:55 +08:00 10 楼说的对,配一个 amd 的线程撕裂者。。 |
14 lagoon 2021-05-14 10:05:36 +08:00 |
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 条... |
16 lagoon 2021-05-14 10:07:46 +08:00 我做过板子+Android 系统 = xx 机器人的项目。 但楼主说的似乎是纯手机的 Android 系统,不涉及硬件部分。 我错了。 |
17 3dwelcome 2021-05-14 10:13:34 +08:00 正常来说,C++都是分布式编译的,最耗时间的就是 C 文件到 OBJ 文件。除了最后链接阶段不能分布式,别的都可以。 你看大型游戏公司的源代码编译,就有这种需求,有专门适配 VS 的分布式工具。 但安卓编译就不太清楚了。没用过不好乱说。 |
19 waruqi 2021-05-14 10:22:25 +08:00 上 ccache |
20 root99527 2021-05-14 10:28:57 +08:00 via iPhone 增量编译就可以吧?以前全量拍包都是在服务器上搞的 |
21 cslive 2021-05-14 10:31:18 +08:00 搞一套洋垃圾 |
22 gnahzraensim 2021-05-14 10:32:55 +08:00 E5 还可以 我有个单路 E5 2680 V4 14 核 我编译 AOSP -j28 的参数 也要将近一小时 你配置个双路 应该可以缩减一点时间 |
23 dalabenba 2021-05-14 10:33:36 +08:00 via Android Cpu 强在编译这件事上就是核多 |
25 mingl0280 2021-05-14 10:59:53 +08:00 AMD EPYC 7702 64c128t 走你。 |
26 gam2046 2021-05-14 11:12:05 +08:00 9900K 编译一次应该不需要这么久,即使是全量编译也不需要,检查一下是否磁盘存在瓶颈。我用 8700 全量编译也就 1 个小时,之后增量编译就 3 分钟以内(如果跳过 CTS 检查可以到 1 分钟以内) |
27 kokutou 2021-05-14 11:15:16 +08:00 via Android 3950x,有钱上更高的,固体上好的 980pro 。 |
28 kokutou 2021-05-14 11:15:30 +08:00 via Android e5 主频低,不合适。 |
29 dinghmcn 2021-05-14 11:16:49 +08:00 @yitingbai #18 我们公司全部重新编译要 4 个小时,都是 make installclean 后增量编译;出错了找不到原因?看那个模块出错 单独 make clean-模块名,没有出现过出错了必现全部重新编译的 |
30 yitingbai OP @gam2046 在 mac 下的虚拟机跑的, 因为 mac 环境配置总是编译失败,无奈采用虚拟机. 看完大家的评论, 我准备配一台 x99 平台的双路 E5 了, 比较便宜 |
31 yitingbai OP @gam2046 在 mac 下的虚拟机跑的, 因为 mac11 环境配置总是编译失败,无奈采用虚拟机. 而且 iMac 散热不行, 长时间编译温度维持在 98 度以上, 频率被限制在 3.6g 附近, 又因为机型多,out 目录超大, 所以用的外置 sata ssd, io 速度确实不行,所以我才动了杀心, 搞一台专门编译的服务器 |
32 Michaelssss 2021-05-14 11:30:37 +08:00 线程撕裂者,把 U 开满。。差不多,毕竟计算集中。。。。。。双路 E5 这种低频方案不要尝试了。意义不大 |
33 orcusfox 2021-05-14 11:31:46 +08:00 via iPhone 7700k 在 VMware 里编译 lineageos 全量大概三个小时吧 |
34 billlee 2021-05-14 11:43:49 +08:00 分布式编译是可以,但那是单机达到瓶颈后的措施,先上双路至强吧,肯定不是拿台桌面机型去搞分布式的 注意现在的 xeon 都不叫 e5 了,最后用 e5 系列编号的是 haswell 架构吧,很多年前的了 |
36 calpes 2021-05-14 12:16:48 +08:00 这个需求基本上就是县城撕裂者的场景了 |
37 azhangbing 2021-05-14 12:46:54 +08:00 线程撕裂者 5900X,速度买,矿老板都在扫这个 CPU |
38 sherlock1122 2021-05-14 12:49:41 +08:00 目前我用 3950X + 3900X,编译内核好快,测试 centos 7 内核 rpm 或者 fedora 34 内核 rpm 带 debuginfo rpm,时间为 10 min 左右。 建议至少 3950X 起步,5900X,5950X,59XXX 更好。 这个钱花得值。 |
39 updateing 2021-05-14 12:54:01 +08:00 via Android 我用 3950X,45 分钟编译出魔趣的完整包。但是 SSD 绝对是必要的,不能没有(虽然我用的是个辣鸡 D4502 ) |
40 killeder 2021-05-14 12:55:42 +08:00 加到 256G 内存 1TB SSD |
41 zpxshl 2021-05-14 13:03:03 +08:00 via Android 编制系统,也吃 io 吧 |
42 kingiis 2021-05-14 13:24:58 +08:00 固态+i710 就够了 |
43 luckyc 2021-05-14 13:38:05 +08:00 Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz Android 5.1 48 分钟左右. |
44 1daydayde 2021-05-14 13:47:10 +08:00 @ch2 #8 单纯只编译 kernel 快多了,我的 j3455 都能上。Android 那些 jar 编起来慢的一 p,还要大内存。。。 |
45 aneostart173 2021-05-14 13:56:31 +08:00 5950x 走起 |
46 yazoox 2021-05-14 13:56:33 +08:00 @3dwelcome 兄弟,有相关的文档,wiki,或者工具的名字么?我们的项目,有几千个 c++的 proj,相互之间还有以来。现在都是在一台机器上编译。我想能否也做成分布式编译? |
47 3dwelcome 2021-05-14 14:02:20 +08:00 |
48 NSAgold 2021-05-14 14:16:04 +08:00 via Android 可以去 mokee 社区问问 据说最好使用高性能 cpu+高性能 ssd+debian 系编译 内存 32g 应该是够的 另外 准不准备适配小众机型 |
50 luny 2021-05-14 14:31:24 +08:00 安卓编译确实比较费,我们的是两颗 E5-2680 v4 28 核心,512G 的内存,2T 的 SSD 。 |
52 Puteulanus 2021-05-14 14:37:12 +08:00 https://metal.equinix.com/product/servers/ 按小时付费的独立服务器 |
55 felixcode 2021-05-14 14:46:33 +08:00 via Android 核尽量多一些,另外可以考虑加内存用内存盘 |
56 bytenoob 2021-05-14 15:16:31 +08:00 等 5990x |
57 fengjianxinghun 2021-05-14 15:41:13 +08:00 @yazoox fastbuild https://github.com/fastbuild/fastbuild |
60 fanyingmao 2021-05-14 15:55:23 +08:00 哈哈,以前开发安卓编译一次十几分钟,代码写到哪都忘记了。 |
61 yulgang 2021-05-14 16:00:12 +08:00 编译不是很消耗 io 的么,为啥不需要 ssd 呢 |
62 zzzmh 2021-05-14 16:07:20 +08:00 不懂安卓编译机制,但我知道 amd yes,你看预算来搞个 amd 39xx / 59xx 或者直接上 EPYC,算力方面肯定把隔壁蓝厂吊起来转圈打 |
63 duanxianze 2021-05-14 16:40:18 +08:00 目前来看还是 AMD3995x 这种好,64c128t,盲猜能把你的编译速度提升 5 倍以上 |
64 zlbruce 2021-05-14 16:50:03 +08:00 @yazoox 以前折腾 gentoo 的时候用过 distcc,可以参考下 https://distcc.github.io/ |
65 ophunter 2021-05-14 17:23:08 +08:00 有大佬了解,安卓 APP,android studio 编译运行快,怎么配置法 |
66 SupperMary 2021-05-14 17:33:03 +08:00 我司的编译服务器,双路志强 4210R,256G RAM (你一个人用的话,32G 应该是够的), SSD 可以按使用体验来说,可以显著增加编译速度,建议增加。 |
69 yitingbai OP @SupperMary ssd 肯定有的, 我的意思是我不需要再采购, 省点预算, 我已经下单了, 双路 e5 2890 v3, 24 核 48 线程, 32G 内存, 虽然不是顶级配置, 但是才几千块钱, 应该足够我用了, 可以把我的 iMac 解放出来了, 不然每次编译, 100%满载都没办法干其他事情 |
70 zwy100e72 2021-05-14 19:47:28 +08:00 编译是少数单纯加核心就能获得近乎线性性能提升的场景(链接阶段除外)。 计算方面: 单机编译配置简洁,最高可以到 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 |
71 zwy100e72 2021-05-14 19:54:50 +08:00 > 双路 e5 2890 v3 我想提醒楼主一句,买双路 E5 可能还不如买 5950X,因为近几年 Intel 性能已经渐渐落后于 AMD 了;同时服务器平台会有开机慢、运行噪音大等问题,希望楼主能考虑好再下手 https://www.cpubenchmark.net/high_end_cpus.html > 32G 内存 32G 内存对 24c / 48t 还是太少了,楼主可能会在内存上遇到瓶颈 |
72 FS1P7dJz 2021-05-14 20:00:17 +08:00 xeon 可以上 ECC 内存 这个还是蛮重要的 |
75 encro 2021-05-14 21:08:30 +08:00 x 云,竞价实例,自动管理 |
76 liuhan907 2021-05-14 21:08:49 +08:00 via Android 你双路 e5 配下来,编译一下说不定发现还不如 9900k |
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 |
78 rqrq 2021-05-14 22:19:40 +08:00 去 geekbench 查多核得分,找个性价比最高的。 |
79 12101111 2021-05-14 22:29:01 +08:00 https://github.com/mozilla/sccache/ 带远程存储的编译缓存 + 5950x, 在编译机上跑一次, 然后之后都在开发机上跑, 没有改变的代码会自动用缓存 |