NUMA Domian和NUMA Distance

1. 交织是什么
  • 交织内存主要的目的是通过将内存地址分布在不同的地方进行读写以弥补内存和处理器的速度差;(内存慢)
  • 这样的话,从不同的地方进行连续的内存读写,不会在一个地方长时间等待,以提高内存的读写的吞吐;
  • 因为不管是控制器,还是通道或者是内存的Bank在连续的读或者写之间,都存在最小的等待时间;等待过程就是对CPU资源的浪费;
  • 这里的不同的地方从大到小,可以是IMC,Channel,Rank,Bank等;
  • 以交织IMC为例,地址0X00在IMC1上,地址0X01在IMC2上,地址0X02在IMC1上,地址0X03在IMC2上,以此类推;在2个内存控制器上进行交织,也叫做2-Way Interleaving;
2. Intel CPU NUMA Distance
  • Skylake CPU的LLC是统一的,可以形成一个统一的NUMA Domain;
  • 但是SKL支持2个内部内存控制器,因此可以按照IMC将1个Socket分为两个sub NUMA Cluster;
  • Cluster和Domain的概念是相同的,和下面的NUMA Node的概念也是一样的;
  • 在一个Cluster类的访问是局部访问,跨越Cluster的访问是远程访问;
远程访问可以存在不同的距离;
3. 控制NUMA的Intel BIOS选项
  • NUMA OFF的时候,1 NUMA Cluster Per Node ;
  • NUMA ON的时候,分为两种情况:
    • SNC Disable(1 NUMA Cluster Per Socket)的话,
      • 建议设定为2-Way Interleaving;
    • SNC Enable(2 NUMA Cluster per Socket)的话,
      • 不会影响整体的内存带宽,通过与就近的IMC进行亲和,优势在于局部性好,但是有些极端场景会更差;
      • 但是整体的LLC/MEM时延可能会更小;
      • 另外的优点就是mesh上的信息更小了;
      • 建议不设置内存控制器交织,也就是保持1-Way Interleaving;
4. AMD CPU NUMA Distance
Naples 有四个Chiplet,上面分别有自己的内存控制器,单通道可以形成4个NUMA Domain;单通道有2个NUMA Distance,双通道的时候NUMA Distance为3个;
ROME 将IO相关的控制器集中在了IO Die上,可以实现1 NUMA Cluster Per Socket,这样的话,NUMA开启的时候,双通道存在2个NUMA Domain和2个NUMA Distance;

 

 上图地址:https://www.nextplatform.com/2019/08/15/a-deep-dive-into-amds-rome-epyc-architecture/

5. 控制NUMA的AMD BIOS选项
  • NPS0 One Numa Node per System
    • 这个是2P系统才有的概念;
    • 推荐使用16 Channel内存交织读写;
    • 对标Intel BIOS的NUMA OFF的设定;
  • NPS1 One NUMA node Per Socket
    • 这个时候1个CPU形成1个NUMA Domain
    • 推荐使用8 Channel内存交织读写;
    • 对标Intel BIOS的NUMA ON and SNC OFF;
  • NPS2 2 NUMA Node Per Socket
    • 这个时候1个CPU形成2个NUMA Domain;也就是左右两个半部分吧;
    • 推荐使用4 Channel内存交织读写;
    • 对标Intel BIOS的NUMA ON and SNC ON;
  • NPS4 4 NUMA Node Per Socket
    • 这个时候1个CPU形成4个NUMA Domain
    • 推荐使用2 Channel内存交织读写;
    • Skylake BIOS没有对标的选项,但是Ice Lake平台应当是有可以对标的选项的;
  • 上面的内存交织是对内存插法是有要求的,如果没法实现也可以选择其他形式的交织读写,只是上述对应情况是局部性和资源利用最好的情况;
  • ROME实现了L3AsNumaNode的选项,这个选项类似NPS=16;单路可以实现16个NUMA Domain,但是NUMA Distance按照Chiplet划分,还是实现了3个NUMA Distance;
  •  
6. NUMA Distance举例
NPS4的时候,2路系统,存在8个NUMA Domain,3个NUMA Distance;
最短的NUMA Distance是10,本Socket内的NUMA Distance是12,其他Socket的NUMA Distance是32;

 

 本节的参考文献:https://developer.amd.com/wp-content/resources/56338_1.00_pub.pdf

 
 
posted @ 2021-05-08 17:18  kongchung  阅读(1961)  评论(0编辑  收藏  举报