ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

NUMA + hwloc

2021-07-22 12:04:18  阅读:209  来源: 互联网

标签:Node hwloc 访问 NUMA CPU 内存


NUMA

NUMA的诞生背景

在NUMA出现之前,CPU朝着高频率的方向发展遇到了天花板,转而向着多核心的方向发展。
在一开始,内存控制器还在北桥中,所有CPU对内存的访问都要通过北桥来完成。此时所有CPU访问内存都是“一致的”,如下图所示:
在这里插入图片描述
这样的架构称为UMA(Uniform Memory Access),直译为“统一内存访问”,这样的架构对软件层面来说非常容易,总线模型保证所有的内存访问是一致的,即每个处理器核心共享相同的内存地址空间。但随着CPU核心数的增加,这样的架构难免遇到问题,比如对总线的带宽带来挑战、访问同一块内存的冲突问题。为了解决这些问题,有人搞出了NUMA。

NUMA构架细节

NUMA 全称 Non-Uniform Memory Access,译为“非一致性内存访问”。这种构架下,不同的内存器件和CPU核心从属不同的 Node,每个 Node 都有自己的集成内存控制器(IMC,Integrated Memory Controller)。

在 Node 内部,架构类似SMP,使用 IMC Bus 进行不同核心间的通信;不同的 Node 间通过QPI(Quick Path Interconnect)进行通信,如下图所示:
在这里插入图片描述
一般来说,一个内存插槽对应一个 Node。需要注意的一个特点是,QPI的延迟要高于IMC Bus,也就是说CPU访问内存有了远近(remote/local)之别,而且实验分析来看,这个差别非常明显。

hwloc(Hardware Locality)

可移植硬件位置(hwloc)软件包提供了一个可移植的抽象(跨操作系统、版本、体系结构等)现代体系结构的层次拓扑,包括NUMA内存节点、套接字、共享缓存、核心和同时多线程。它还收集各种系统属性,如缓存和内存信息,以及I/O设备的位置,如网络接口、InfiniBand hca或gpu。
硬件位置(hwloc)软件项目旨在简化在并行体系结构中发现硬件资源的过程。
它提供命令行工具和C API,用于查询这些资源、它们的位置、属性和互连。
hwloc的主要目标是帮助高性能计算(HPC)应用程序,但也适用于任何寻求利用现代计算平台上的代码和/或数据局域性的项目。例如,两个紧密合作的任务可能应该放在共享缓存的核心上。
hwloc通常操作处理单元和内存,但它也可以发现I/O设备并报告它们的位置。这对于将I/O密集型应用程序放在靠近它们使用的I/O设备的核心上很有用,或者对于收集关于所有平台组件的信息很有用。
链接: hwloc.
链接: hwloc.

参考

链接: 浅解NUMA机制.
链接: NUMA的原理与局限.

链接: Linux中CPU亲和性(affinity).

标签:Node,hwloc,访问,NUMA,CPU,内存
来源: https://blog.csdn.net/weixin_42952928/article/details/118703711

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有