l3asnumanode 设置_NUMA入门:那些必须知道的基础概念

本文为阅读NUMA Deep Dive的阅读笔记。

更多详细信息请参考原文。

Concepts

QPI QuickPath Interconnect

SUMA Sufficiently Uniform Memory Architecture

ACPI Advanced Configuration and Power Management Interface

ACPI SRAT System Resource Allocation Table

ACPI SLIT System Locality Information Table

IMC Integrated Memory Controller

HA Intel Home Agent

NUMA Architecture

NUMA架构中最重要的两个部分是:QPI architecture和memory subsystem。

LLC是memory subsystem中最为重要的一个组成部分。Sandy Bridge架构之后,每个core都有自己的LLC(last level cache),然后通过一个ring on-die Interconnect来联通。

QPI在NUMA结点之间提供了数据传输的接口和带宽。Cross node的remote memory access, memory migration, cache snooping等等都依赖于QPI的架构,带宽和速度。

NUMA vs SUMA

其实,即使在多个结点下,依然可以做成UMA,这样做就是SUMA。通过开启Node Interleaving选项就可以变成SUMA模式。

Node Interleaving Disabled - NUMA

在关闭Node Interleaving的模式下,就是NUMA模型。ACPI会建立SRAT (System Resource Allocation Table),其描述了物理内存的结构,比如哪一段内存是属于这个NUMA结点的。然后其会将这些内存映射到一个连续的地址空间中。所以访问自己的local的memory和访问remote node的memory是non-uniform的。

Node Interleaving Enable - SUMA

在开启Node Interleaving的模式下,其会将所有的地址空间分为4KB的小块,然后循环分配到各个结点上。访问跨结点的内存的时候还是走的QPI,但是由于SUMA均匀的分布在各个结点上,SUMA提供的是uniform的内存访问。但是严重依赖于竞争程度和QPI结构。

NUMA 具体访问内存步骤

如果CPU core想访问内存(L1与L2 都 cache miss了),必须和uncore打交道。

如果在LLC中,需要通过Cbox(Caching agent)拿。

如果在local memory的话,需要通过home agent 和 IMC拿

需要在remote NUMA node拿的话,就需要QPI到其他node(再通过HA和IMC拿)

Cache Coherency in NUMA

Cache 结构

Sandy Bridge 架构:L1,L2单独,LLC分布式,on-die scalable ring architecture。

访存位置

消耗cycles

L1

4 cycles

L2

12 cycles

L3(LLC)

26~31 cycles

local memory

190 cycles

remote memory

310 cycles

L1 Cache 分为指令cache和数据cache,L2 Cache为指令与数据共享。

L2 Cache中不一定有L1 Cache的数据,但是LLC 设计成必须包含L1 L2 Cache中的所有数据。

Cache Prefetching

有软件prefetch和硬件prefetch两种。

软件prefetch是SSE(Streaming SIMD Extension),其会告诉CPU一条指令会具体需要哪些data。

硬件prefetch分为L1、L2 prefetch。当访问出现一定的模式时,L1的数据Cache会prefetch下一行Cache line。L2的prefetch还会在出现太多新的访问时,将已经修改的数据放回L3 Cache。

L2 的prefetch包含Spatial Prefetcher和Streamer。

Spatial prefetcher会一次性fetch 128-byte的Cache line(2个Cache line)来填满一个128-byte对齐的chunk。

streamer 则会监控L1Data Cache来只取适当的data和instructions。

LLC Last Level Cache

LLC通过on-die ring连通,具体的latency决定于需要多少跳来访问到数据。在LLC中,Cache根据内存地址哈希均匀的分布在分布的slices中(所以是一个统一的L3,不需要Cache coherency来保证数据一致)。所有的L3 slices均连接到on-die interconnect上,其也连通了core和uncore。在Haswell之后,这个ring每个点都有buffered interconnects,从而允许ring中独立的运行。(顺时针、逆时针均可,一跳一跳地访问)

Cache Snooping

在NUMA中,是L1、L2和L3维持一个Cache Coherence协议。(因为L2不完全包括L1,所以不能只是L2和L3的。不确定,还要再看看)。Intel新推出了MESIF协议,不一样的是原来Cache line为S状态的节点都可以responce查询,现在只有升级成F状态的节点才能responce请求并forwarding。实际上的snoop modes有很多种。

Early snoop

在Early snoop模式下,caching argent (cbox) 负责生成snoop probe/request,然后通过on-die ring来直接发送这些snoop到其他的caching argent(或者直接broadcast)。这种模式可以有很低的延迟,但是其会占用很多NUMA结点之间的带宽,降低NUMA的性能。

Home snoop

在Home snoop模式下,Home agent负责产生snoop request。由于需要发送request时需要先到HA,然后才通过on-die ring,导致了比较高的延迟。但是这样会降低带宽的损耗。(Why?统一收集了request再发送?)

Home Snoop with Directory and Opportunistic Snoop Broadcast

基于目录式的Home snoop,不再broadcast,而是直接去找对应的CPU要。且会根据具体的带宽的负载,发送request内容有变化。(不是很理解)

Cluster-on-Die

把一个packeage分成两个结点,有单独的ring on-die与memory controller。这种snoop mode拥有最低的本地LLC hit 的latency和本地内存访问的latency

Conclution

总的来说,随着微架构的变化,策略的变化,底层的细节变化良多。但是总的来说,有以下特点:L1,L2是local的,L3是全局的。所以有的时候把remote node的data prefetch到L3,理论上应该可以减少cross node memory access的latency。

NUMA Energy Efficient

最近都很关注Energy Efficent,想花最少的钱来计算更多的东西。之前研究过多核跑在不同的频率下的问题。

针对uncore,有frequency scaling functionality。由于即使CPU只有很少很少的负载,uncore仍然需要提供各种功能。而现在的uncore可以随着CPU负载变化而改变频率,比如uncore的频率可以设置成与最快的核心相同。有的QPI可以关闭线路,或者缩减带宽。

针对CPU,在Haswell之后的架构,提供了Per Core Power States,其允许CPU跑在不同的频率下。Energy Efficient Turbo

Generally, this modularity should make it more power efficient, however, some IT teams don’t want their system to swing up and down but provide a consistent performance. Especially when the workload is active across multiple nodes in a cluster, running the workload consistently is more important that having a specific node to go as fast as it can.

这一点和想的一样,如果特别注重性能,或者想要一个比较稳定的性能,一定是会跑在最高频率下。其中QPI的Power Management可以在BIOS中关闭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值