服务器专题 | 第24期:双路够用吗?多路扩展的代价
选型会上常有这样一幕:数据库跑得吃力,配置单上从双路改成四路,核数、内存容量都翻倍,单子上看着像性能翻倍。机器到货跑起来,快的查询更快了,慢的那几类查询,慢得还是老样子。问题不在核够不够,在数据住在哪、谁来改它。
这篇只算一笔账:多路扩展买的是什么,付的是什么。路数上去,得到的东西和付出的代价,不在同一张表上。
多路先买到的,是内存和通道
一颗处理器自带内存控制器、内存通道和 PCIe 通道。路数翻倍,内存总容量、内存总带宽、IO 通道数跟着翻倍,核数只是顺带翻倍。英特尔第二代至强可扩展平台的规格表里,扩展能力就写成 2S、4S 与无胶水 8S 三档¹;新一代至强 Max 系列,每颗处理器给出 4 条 UPI 互联链路,每条 x24 宽度、速率最高 16 GT/s²。AMD 第四代 EPYC 的调优文档里,一颗处理器的 IO 芯片上挂着 12 个内存控制器³。数字各不相同,结构同一个:多一路,等于多一套内存与 IO。
这里有个容易颠倒的主次。单颗处理器的核数已经涨到几十上百,凑核早不是多路的主因。真正逼人上四路、八路的,往往是单路内存容量装不下,或者 IO 通道不够分。买之前先分清:缺的是核,还是内存与通道。缺核,加机器更直接;缺一个共享内存映像,才轮到多路出场。
还有一层型号上的讲究。英特尔把 4S 与 S4S 分开写:都能装四颗处理器,只有 S4S 带可扩展互联,颗与颗之间的通信才按高性能多路设计⁴。同一张“四路”标签,互联底子可能不一样。配置单上只看路数,不看互联档位,等于只看了座位数,没看过道宽不宽。
跨路的账,藏在跳数和一致性里
颗与颗之间不是零成本握手。链路数是死的:第二代至强每颗处理器最多 3 条 UPI 链路,x20 宽度、9.6 与 10.4 GT/s 两档速率¹。四颗全互联,刚好每颗用 3 条链路直连其余 3 颗,一跳到。八颗无胶水互联,3 条链路连不全其余 7 颗,有些访问只能借道中转,两跳才到。这是结构推导,不是实测数:链路数定死了拓扑,拓扑定死了最远距离。
左,四路全互联,每颗直连其余三颗;右,八路环形示意,部分节点对之间要借道中转(示意图为程序绘制,拓扑为结构推导)
距离一拉长,代价分两路来。一路是 NUMA:内存挂在不同处理器名下,访问本地内存与访问别颗的内存,延迟与带宽本来就不一样,SUSE 的 EPYC 调优文档把这点写成调优的前提,几代产品的 NUMA 距离层级没有变过³。另一路是一致性:同一份数据被多颗处理器轮流改,缓存行要在颗与颗之间来回确认状态,改得越勤,确认越贵。缓存行来回倒手,在单颗内是小事,跨路就是大开销。
软件写不写 NUMA 感知,直接改硬件配置的取舍。思科给 EPYC 平台的调优文档里写得很直白:不感知 NUMA 的负载,需要 xGMI 链路拉满带宽,因为跨路通信多;感知 NUMA 的负载,反而可以把链路降速、省出功耗给主频,因为跨路流量本来就少⁵。同一台机器,软件写法不同,最优的链路配置就不同。
还有一种省事的写法,代价藏得更深:内存交错分配,把页面轮流分到各节点,换来每处访问代价差不多。一份技术博客梳理里算过这笔账:两节点交错,约一半访问天然跨节点;节点越多,最远路径越长,互联压力越大,所谓“可预测的平庸”只会越来越平庸⁶。交错不是免费午餐,是把峰值换成地板价。
左,核心访问本颗内存,一步到;右,核心访问别颗内存,要过颗间链路,多一跳、多一份一致性确认(示意图为程序绘制)
四路值不值,先看负载能不能分区
判断可以收成三问。第一问,工作负载能不能按处理器分区,让每颗处理器主要吃自己名下的内存。能分区,多路的跨路账就小;不能分区,每颗都在改同一份数据,多路买回来的是更贵的一致性账单。第二问,是不是非要一个共享内存映像。数据库、大内存分析这类负载,单路内存实在装不下,多路是刚需;能拆成独立服务、分片跑的负载,拆成几台双路更干净。第三问,停机面能不能接受。一台八路停下来,八路算力一起停;拆成四台双路,停一台只丢四分之一。
| 路数 | 买到 | 付出 | 适合 |
|---|---|---|---|
| 单路 | 一套内存与 IO,零跨路 | 容量与通道有顶 | 单机够用的通用负载 |
| 双路 | 容量通道翻倍,互联一跳 | 跨路访问与分区要求 | 主流通用与虚拟化 |
| 四路 | 大共享内存,全互联 | 一致性与功耗、价格上台阶 | 大内存数据库与分析 |
| 八路 | 超大共享内存映像 | 多跳、一致性账单最重、故障域最大 | 极少数超大共享内存场景 |
往深里看一层,多路扩展的领地正在收窄,这是判断,不是厂商口径。单颗核数与内存通道一路涨,过去非四路不可的负载,现在双路就装得下;剩下的四路、八路领地,越来越集中在超大共享内存这一小块。多路没有过时,过时的是“核数翻倍等于性能翻倍”这个算法。路数是乘法,距离也一样是乘法。
有一个问题还没答案,留在这里。公开资料里,缺同一负载在双路、四路、八路下,按 NUMA 感知与不感知分组的对照实测:跨路流量、延迟分布、有效带宽各是多少。有了这组数,选型才能从经验变成可算的账;没有它,三问只能凭负载特征作答,答得再稳,也还是经验。
觉 然 小 注
核可以叠加,距离不能叠加。买路之前,先问数据住在哪一颗的内存里,答案定了,路数也就定了。
· · ·
九羲科技|服务器 · 私有 AI · 存力方案
系列目录
第1期 | 73% 的整机钱,都给了 GPU 板组
第2期 | 4500 颗芯片撑起 95% 的机架价值
第3期 | 拆一台 2U 双路:通用服务器的钱花在哪
第4期 | 大铁盒子,值钱的不是铁
第5期 | 冻结点:L5 之后结构不许再改
第6期 | 能点亮不等于能交付:十二层验什么
第7期 | 内存离 CPU 有多远:NUMA 的延迟税
第8期 | 带宽不是买速度,是买并行度
第9期 | 一颗坏芯片,怎样不拖垮整机
第10期 | 数据上台三步,每步都在花时间
第11期 | CXL 内存慢一档,为什么还值得买
第12期 | 存力只在关键路径上才算数
第13期 | 链路是谈出来的:开机几秒谈什么
第14期 | 四电平挤带宽:SerDes在替谁赎买
第15期 | 端口数好看,带宽要看上行
第16期 | 把故障关进一个端口
第17期 | 设备能缓存主机内存,变了什么
第18期 | 数据直进 GPU,省掉了什么
第19期 | 先画归属图,再谈配置
第20期 | 报价单上看不见的内存降频账
第21期 | 查协商速率与AER:出厂体检表
第22期 | RAID 1/5/10:按故障域和 IO 选型
第23期 | 风道堵了,L9 才发烧
引用与出处
[1] Intel. Second Generation Intel Xeon Processor Scalable Family Technical Overview. intel.com. https://www.intel.com/content/www/us/en/developer/articles/news/second-generation-intel-xeon-processor-scalable-family-technical-overview.html
[2] Intel. Intel Xeon Scalable Processor Max Series. intel.com. https://www.intel.com/content/www/us/en/developer/articles/technical/xeon-scalable-processor-max-series.html
[3] SUSE. Optimizing Linux for AMD EPYC 9004 Series Processors with SUSE Linux Enterprise 15 SP4. documentation.suse.com. https://documentation.suse.com/en-us/sbp/tuning-performance/html/SBP-AMD-EPYC-4-SLES15SP4/index.html
[4] Intel. What is the Difference Between 4S and S4S with Intel Xeon Processors. intel.com. https://www.intel.com/content/www/us/en/support/articles/000038706.html
[5] Cisco. Performance Tuning for Cisco UCS M8 Platforms with AMD EPYC 4th Gen and 5th Gen Processors. cisco.com. https://WWW.Cisco.com/c/en/us/products/collateral/servers-unified-computing/ucs-c-series-rack-servers/ucs-c245-m8-rack-ser-4th-gen-amd-epyc-pro-wp.html
[6] Edera. NUMA Explained: Why Memory Distance Slows Your VMs. edera.dev. https://edera.dev/stories/numa-part-1-cores-memory-and-the-distance-between-them (技术博客梳理,非厂商一手文档)
下一篇|第25期:445.8GW 申请、5.9GW 送电:美国 AIDC 真正的约束是电网。