因为项目需要定制安卓系统, 适配好多的手机, 每次修改或者发布版本都要编译好久, 我的 iMac 的 CPU 是 i9 9900K 的, 性能吃满完整编译一次 Android10 耗时 2 个小时左右, 求懂行的朋友推荐一个编译服务器, 我在网上看到有 E5 双路 CPU 这种, 不知道能不能满足快速编译的需求, 怕买回来还不如我的 i9 处理器.
只要 CPU 强, 内存 32G 差不多了, 显卡不需要,SSD 不需要,显示器不需要, 其他配件凑合稳定就行, 组这样一台机器, 最低预算是多少? 或者有经验的老哥可以推荐一下配置吗?
1
lagoon 2021-05-14 09:36:10 +08:00
嗯?编译 Android 系统,这不上分布式怎么顶得住?
|
2
xunandotme 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 1
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
Stevenv 2021-05-14 10:01:55 +08:00 1
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
napsterwu 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 1
线程撕裂者 5900X,速度买,矿老板都在扫这个 CPU
|
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 更好。 这个钱花得值。 |
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
l4ever 2021-05-14 13:38:05 +08:00
Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz
Android 5.1 48 分钟左右. |
44
0312birdzhang 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
Yc1992 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 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 |
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 还是太少了,楼主可能会在内存上遇到瓶颈 |
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 1
https://github.com/mozilla/sccache/ 带远程存储的编译缓存 + 5950x, 在编译机上跑一次, 然后之后都在开发机上跑, 没有改变的代码会自动用缓存
|
80
rqrq 2021-05-14 23:07:26 +08:00
是我就去弄个 C621+W3175X,最次也是 X299+10980XE
|
81
zqcolor 2021-05-14 23:15:14 +08:00 1
@yitingbai 这个配置应该够了,之前用 2780 v2x2 大概 15 minutes build 好,其他普通 i7 电脑 8 小时
|
82
yitingbai OP @kokutou 不是我不知道 5900x 好, 关键是这一颗 U 就顶的上我一台双路 E5 的主机钱了, 而且两颗 E5 2690 加一起也有 32000 分了, 没太多预算, 只能妥协了
|
84
kokutou 2021-05-15 00:13:08 +08:00 via Android
@yitingbai
5800x 28000 分。。。 5800x,450m 迫击炮,fs140 就可以了,我就这配置。 主频能到的 4.85 ,牛逼体质能到 5.05 ,编译跑单核的步骤很有用。 2690v3 洋垃圾玩意,不值这个价,更别说主板都是拆机或寨板,x99 都多少年了。 |
85
kokutou 2021-05-15 00:16:55 +08:00 via Android
5800x 5900x 5950x 单核 3500
2690v3 单核 1900 |
86
phonenixylf 2021-08-19 22:32:45 +08:00
@yitingbai hi,你这个配置,目前编译一次系统需要多长时间? 编译的系统是 android 多少的?
|