在实际工作中,经常遇到服务器是否开启NUMA、NUMA绑定几颗Core、跨NUMA节点访问的性能下降等等话题。那么NUMA作为非一致性内存访问的多处理器架构,在架构上有什么特性、与SMP架构有哪些不同,调优策略等,本文将作简要介绍。
1、CPU处理器NUMA架构简介
服务器CPU是计算机服务器的大脑,作为服务器的运算和控制核心,是信息处理、程序运行的最终执行单元,负责读取指令、对指令译码并执行。在服务器中,CPU与GPU、内存、硬盘和网卡间并不能直接通信,需要通过内存控制芯片、PCIe控制芯片和I/O处理芯片等实现,这些芯片通过不同总线(PCIe总线、USB总线和SPI总线等)与CPU相连。
CPU处理器的架构从最初简单的架构到现在复杂的架构经历了多年的发展,其中SMP(Symmetric Multi-Processing)架构和NUMA(Non-Uniform Memory Access)架构是两种非常重要的多处理器架构。
- SMP架构的出现是在多核处理器和并行处理技术发展的背景下。由于单个处理器的性能提升受限于物理极限,为了提高整体计算能力,将多个处理器集成到一个系统中,并让它们共享内存和总线等资源。
- NUMA架构则是在SMP架构的基础上进一步发展而来的。随着处理器数量的增加,SMP架构中的共享内存和总线成为了性能瓶颈。为了解决这个问题,NUMA架构将内存划分为多个节点(Node),每个节点都有自己的处理器和本地内存。处理器访问自己节点的内存速度较快(本地访问),而访问其他节点的内存速度较慢(远程访问)。这种设计有助于减少内存访问冲突,提高并行处理性能。
1.1 SMP架构
SMP(Symmetric Multi-Processing)即对称多处理架构,在这种系统架构中,服务器不再由单个CPU组成,而是同时由多个处理器运行操作系统的单一复本,各CPU之间共享总线,内存和I/O系统等服务器资源进行并行处理。由于所有处理器共享同样的内存访问地址空间和总线结构,因此从管理的角度来看,它们是“对称”的,即无主从之分,工作负载可以均匀地分配到所有可用处理器上,从而显著提高整个系统的数据处理能力。因此SMP也被称为一致存储器访问结构 (UMA:Uniform Memory Access)。
SMP的主要特征是共享,但是由于所有处理器共享相同的内存和总线,当处理器数量增加时,共享内存和总线可能成为性能瓶颈,因此SMP架构在处理器数量扩展性方面受到一定的限制。其中最受限制的则是内存,由于每个CPU必须通过相同的内存总线访问相同的内存资源,因此随着CPU数量的增加,内存访问冲突将迅速增加,最终会造成CPU资源的浪费,使CPU性能的有效性大大降低。实验证明,SMP服务器CPU利用率最好的情况是 2至4个CPU 。此外,为了保证共享存储器的数据一致性,需要软硬件实现加锁机制来解决多个处理器同时访问共享资源时的资源竞态问题。
1.2 NUMA架构
在