优化Android Studio在AMD 2990WX上的编译速度

本文详细记录了作者在拥有32核心64线程的AMD Ryzen Threadripper 2990WX上,针对Android Studio编译速度进行的一系列优化过程。通过了解处理器架构、NUMA特性,以及调优JVM、Android Studio、Gradle、Java Compiler等,最终显著提升了编译效率,使CPU利用率得到充分利用。
摘要由CSDN通过智能技术生成

由来

一个月前,剁手了AMD Ryzen Threadripper 2990WX(官网),这个处理器的参数着实牛逼,32核心64线程,总共80MB的缓存,可以说秒杀目前所有的桌面级处理器了!狠了狠心,搞了一台,辅以32GB DDR4 3200MHz内存和970 EVO NVMe SSD,经过一番折腾(无CPU刷BIOS、装Windows/Linux系统),最终确定使用Windows 10专业工作站版作为日常开发使用。

Cinebench R15跑分:

R15跑分

CPU-Z跑分:

CPU-Z

虽然分数不像网上那些人跑得那么高,但也是相当猛了,再加上任务管理器64个框框,心里十分舒坦!

数框框

于是乎,安装Android Studio等一系列开发工具,心想编译速度总算能够爽很多了……

然鹅!!

在开启Android Studio进行Build的时候,CPU使用率最高不超过20%,基本处于划水状态,偶尔会跑满几个线程,最多不超过16个线程

划水状态的CPU:

划水

但如果在Linux上使用GCC或者在Windows上使用VSBuild编译如Node.js这样的C/C++源码,就能够达到下图的状态

满血状态的CPU:

满血

心里总觉得很不甘、很蹊跷,于是开始折腾……

了解一下牛逼的架构

这张图用的太多了,几乎谈论到AMD的EPYC和Threadripper处理器,都会拿它说事

AMD架构

AMD的EPYC和Threadripper处理器都是采用4个Die的形式,加上优秀的12nm工艺控制功耗和温度,从而实现超多的核心数量,不得不说能想出这样的设计的人,真的是天才!

不同的CPU型号,启用的Die的数量不一样,但实际都是4个,只是有的型号上,关闭的Die作为辅助计算使用

内存访问的不足

但EPYC对内存的访问是完整的8个通道,而2990WX和2970WX则阉割成了4个通道(据说是为了兼容X399芯片组),这样一来就会导致其中2个Die可以直接访问内存,而另外2个Die则需要通过特定的Infinity Fabric来间接地访问内存,一旦操作系统的调度出现问题,可能会导致内存性能骤减,CPU执行一会儿,就要等待一下内存,使得Threadripper对内存密集型进程的性能,同Intel的i9相比表现不佳(如:Photoshop)

相关文章:https://zhuanlan.zhihu.com/p/45606819

NUMA

由于采用了4 Die+4通道内存访问的设计,2990WX即变成了NUMA(Non Uniform Memory Access Architecture,非统一内存访问架构),摇身一变成为一个4路CPU(可以从Windows的任务管理器中看到)

NUMA

虽然这种设计能够使计算机的扩展性更好,但由于内存访问、缓存数据同步等方面的问题,这种架构对操作系统和应用程序的调度设计考验较大,如果没有进行专门的调优,可能并不能完全发挥出硬件的性能

推测&调优

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值