4. 服务器节点硬件架构设计
在EPYC集群中,节点是承载虚拟机、容器与数据库实例的最小物理单元。节点硬件架构设计的目标不是“把最强的CPU塞进机箱”,而是让CPU、内存、PCIe设备与散热供电之间形成匹配的通道,使NUMA局部性、带宽与功耗三者达到平衡。本节围绕单路与双路主板布局、CPU互连、内存插槽配置、NUMA拓扑、PCIe扩展槽规划以及供电散热要点展开。
单路与双路:先看主板布局与互连
EPYC采用SoC化设计,单颗CPU即包含完整的I/O Die与CCD计算芯粒,因此单路主板不需要北桥,CPU直连全部内存通道与PCIe通道。以EPYC 9004(Genoa)为例,单颗CPU提供12个DDR5通道、128条PCIe 5.0通道,单路即可支撑高密度计算节点。双路主板则通过CPU间的Infinity Fabric(xGMI)链路互连,两颗CPU各带一半内存与I/O资源,形成两个NUMA节点。
主板布局上,单路板通常把CPU置于中央偏上,内存插槽分列两侧,PCIe插槽沿CPU下方展开,走线短、信号完整性好。双路板则需在板面中部预留两颗CPU的对称位置,xGMI链路走线尽量等长,内存插槽按CPU分组排列。设计时要避免把高带宽PCIe设备挂在“远端CPU”的插槽上,否则跨NUMA访问会显著增加延迟。
内存插槽配置:通道优先,而非容量优先
EPYC 9004每颗CPU有12个DDR5通道,每个通道支持2条DIMM(2DPC)。要发挥满带宽,必须至少每通道插1条,即12条DIMM起步。若只插6条,虽然容量够用,但通道数减半,内存带宽可能下降约40%~50%。因此配置顺序是:先保证每通道1条(1DPC),再考虑2DPC扩容。
以双路节点为例,若采用32GB DDR5-4800 RDIMM,1DPC配置为每CPU 12×32GB=384GB,双路共768GB,12通道全开。若需1.5TB,则每通道插2条32GB,即2DPC,但此时频率可能从4800MT/s降至4000MT/s甚至3600MT/s,需在BIOS中确认实际运行频率。教学示例中,可先按1DPC满通道配置,再根据容量需求评估2DPC的带宽代价。
NUMA拓扑:让进程与内存“就近”
双路EPYC默认呈现2个NUMA节点(NPS=1),每个节点对应一颗CPU及其直连内存。若在BIOS中启用NPS=4,每颗CPU的12通道会被划分为4个NUMA节点,共8个节点,进一步降低单节点内存延迟,但会增加跨节点调度开销。对于数据库、内存缓存类负载,NPS=4常能带来更稳定的尾延迟;对于通用虚拟化,NPS=1更简单。
在Linux中可用 numactl --hardware 查看节点分布,用 numactl --cpunodebind=0 --membind=0 ./app 将进程绑定到Node0。若发现跨节点访问比例高,应检查进程绑核与内存分配策略,而不是盲目增加内存。
PCIe扩展槽规划:按带宽与归属分配
EPYC 9004提供128条PCIe 5.0通道,其中通常有128条可用(部分用于板载设备)。规划时先列出设备清单:GPU、NVMe、网卡、HBA。GPU和高速网卡应直连CPU,且尽量与使用它的进程在同一NUMA节点。例如,Node0上的GPU卡应插在CPU0直连的PCIe槽,避免跨xGMI访问。
若使用PCIe Switch扩展槽位,需注意Switch本身会引入额外延迟,且下行带宽共享。对于NVMe,优先使用CPU直连的M.2或U.2接口;若通过背板扩展,应确认背板到CPU的PCIe链路宽度(x8或x16)是否满足盘位总带宽。教学示例中,4块PCIe 5.0 NVMe各需x4,合计x16,应分配一个x16槽或两个x8槽,避免链路瓶颈。
供电与散热:按TDP与风道设计
EPYC 9004的TDP范围从200W到400W,双路节点CPU功耗可达800W,加上内存、PCIe设备与风扇,整机功耗可能超过1200W。供电设计需按峰值功耗的1.2~1.3倍选配电源,并确认主板VRM相数足够。例如,双路400W CPU建议使用至少16相VRM,并配备2个8pin CPU供电接口。
散热方面,EPYC的CCD与I/O Die热密度不同,需使用均热板或大尺寸冷头。风道应从前到后直线贯穿,CPU散热器与内存插槽之间留出足够间隙。若使用液冷,需确认冷排规模能覆盖双路800W热负荷。机箱风扇建议按“前部进风、后部出风”布置,并监控CPU Tctl与内存温度,避免因内存过热降频。
综上,节点硬件架构设计的核心是“匹配”:CPU与内存通道匹配、PCIe设备与NUMA归属匹配、供电散热与峰值功耗匹配。只有这些关系对齐,节点才能在集群中稳定输出可预期的算力与带宽。