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

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM