文章目录
由来
一个月前,剁手了AMD Ryzen Threadripper 2990WX(官网),这个处理器的参数着实牛逼,32核心64线程,总共80MB的缓存,可以说秒杀目前所有的桌面级处理器了!狠了狠心,搞了一台,辅以32GB DDR4 3200MHz内存和970 EVO NVMe SSD,经过一番折腾(无CPU刷BIOS、装Windows/Linux系统),最终确定使用Windows 10专业工作站版作为日常开发使用。
Cinebench R15跑分:
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的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的任务管理器中看到)
虽然这种设计能够使计算机的扩展性更好,但由于内存访问、缓存数据同步等方面的问题,这种架构对操作系统和应用程序的调度设计考验较大,如果没有进行专门的调优,可能并不能完全发挥出硬件的性能