CPU亲和性和NUMA架构

何为CPU的亲和性

CPU的亲和性,进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性,进程迁移的频率小就意味着产生的负载小。亲和性一词是从affinity翻译来的,实际可以称为CPU绑定。

在多核运行的机器上,每个CPU本身自己会有缓存,在缓存中存着进程使用的数据,而没有绑定CPU的话,进程可能会被操作系统调度到其他CPU上,如此CPU cache(高速缓冲存储器)命中率就低了,也就是说调到的CPU缓存区没有这类数据,要先把内存或硬盘的数据载入缓存。而当缓存区绑定CPU后,程序就会一直在指定的CPU执行,不会被操作系统调度到其他CPU,性能上会有一定的提高。

另外一种使用CPU绑定考虑的是将关键的进程隔离开,对于部分实时进程调度优先级提高,可以将其绑定到一个指定CPU核上,可以保证实时进程的调度,也可以避免其他CPU上进程被该实时进程干扰。

我们可以手动地为其分配CPU核,而不会过多的占用同一个CPU,所以设置CPU亲和性可以使某些程序提高性能。

Linux 操作系统的CPU亲和性特征

操作系统部分Linux的调度程序同时提供"软CPU亲和性"和"硬CPU亲和性"

**软亲和性:**进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他CPU。

Linux 内核进程调度器天生就具有被称为 软 CPU 亲和性(affinity) 的特性,因此linux通过这种软的亲和性试图使某进程尽可能在同一个CPU上运行。

**硬亲和性:**将进程或者线程绑定到某一个指定的cpu核运行

虽然Linux尽力通过一种软的亲和性试图使进程尽量在同一个处理器上运行,但它也允许用户强制指定进程无论如何都必须在指定的处理器上运行。

硬亲和性使用场景

硬亲和性场景:需要保持高CPU缓存命中率时、需要测试复杂的应用程序时。

**保持高CPU缓存命中率:**如果一个给定的进程迁移到其他地方去了,那么它就失去了利用 CPU 缓存的优势。实际上,如果正在使用的 CPU 需要为自己缓存一些特殊的数据,那么所有其他 CPU 都会使这些数据在自己的缓存中失效。因此,如果有多个线程都需要相同的数据,那么将这些线程绑定到一个特定的 CPU 上是非常有意义的,这样就确保它们可以访问相同的缓存数据(或者至少可以提高缓存的命中率)。否则,这些线程可能会在不同的 CPU 上执行,这样会频繁地使其他缓存项失效

NUMA的由来

NUMA(Non-Uniform Memory Access),即非一致性内存访问,是一种关于多个CPU如何访问内存的架构模型。

NUMA出现之前,所有CPU对内存的访问都要通过北桥来完成。此时所有CPU访问内存都是"一致的"。

这样的架构称为UMA(Uniform Memory Access),直译为"统一内存访问",这样的架构对软件层面来说非常容易,总线模型保证所有的内存访问是一致的,即每个处理器核心共享相同的内存地址空间。但随着CPU核心数的增加,这样的架构难免遇到问题,比如对总线的带宽带来挑战、访问同一块内存的冲突问题。

为解决上述问题,NUMA架构出现了,即不同的内存器件和CPU核心从属不同的Node,每个Node都有自己的内存控制器。BIOS将收集到的Node信息通过ACPI报告给操作系统,OS就可以根据NUMA节点间的距离远近访问距离自己最近的内存,从而降低总线堵塞和提高性能。

NUMA距离

NUMA距离意指NUMA节点之间的逻辑距离,距离越近访问延迟越低。

Linux下可使用numactl -H查看NUMA距离

参考:

关于CPU亲和性,这篇讲得最全面 - 腾讯云开发者社区-腾讯云

https://forum.huawei.com/enterprise/zh/thread/590169249215823872

相关推荐
ST——Jess1 小时前
2026年度传统文化数字化与命理科技(Ethno-tech)行业趋势研究报告:专业级数智工作台的技术壁垒与评测标准
人工智能·科技·算法·架构
小马爱打代码2 小时前
TiDB 架构解析
架构
2601_956414142 小时前
2026多账号防关联底层逻辑重构:主流指纹浏览器技术架构与高并发横测
重构·架构
ai产品老杨2 小时前
【架构实战】如何基于 Docker 与边缘计算构建企业级 AI 视频管理平台?打通 GB28181/RTSP 统一接入与异构算力调度,全量源码交付破解集成痛点
人工智能·docker·架构
意图共鸣2 小时前
意图共鸣科技《认知智能白皮书》——认知操作系统(COS):大模型之上的“认知中间件”如何调度边界
人工智能·科技·架构
段一凡-华北理工大学3 小时前
工业领域的Hadoop架构学习~系列文章02:HDFS架构深度剖析
大数据·人工智能·hadoop·学习·架构·高炉炼铁
java_cj3 小时前
MySQL 8.0新特性详解:从隐藏索引到窗口函数全面解析
数据库·mysql·架构·开源
一切皆是因缘际会4 小时前
AI高速迭代下的技术风险与理性突围
大数据·数据结构·人工智能·架构
小a杰.4 小时前
PTO ISA 指令架构 - PTO虚拟指令集架构解析
java·开发语言·架构
流浪大人4 小时前
用 LangGraph 构建企业级售前 Agent:一个生产级架构的设计实录
架构