Linux CPUInfo中NUMA架构的应用具体如何快速掌握?
- 内容介绍
- 文章标签
- 相关推荐
如果你在多核服务器上跑高性能应用。却总感觉“内存访问慢”或“进程迁移频繁”,那很可能是你没有利用NUMA架构。下面用最直白的语言拆解NUMA在Linux CPUInfo中的实战,让你能迅速上手。
1️⃣ 先把SMP和NUMA的区别想清楚
SMP是早期设计:所有CPU通过同一条总线共享同一块物理内存。因为主要数增多,总线竞争成了瓶颈。导致内存访问延迟飙升。说起来,
NUMA则把内存划分为若干本地 node每个CPU只能最快访问自己的本地内存。跨 node 的访问要慢一些。换个角度把热点数据放到它使用的 CPU 所在的 node 上,就是打败总线瓶颈的关键。
2️⃣ Linux 对 NUMA 的抽象与工具
-
/proc/cpuinfo– 查看 CPU 与其对应的 node 信息。 -
/sys/devices/system/node/– 目录里列出每个 node 的 CPU、内存等细节。 -
numactl– 绑定进程到指定 CPU / 内存节点;还能检查当前节点分布,老实说, -
/proc/sys/kernel/numa_balancing。/proc/sys/kernel/numa_balancing_topology_changes,等 sysctl 参数控制自动迁移策略。
如果你在多核服务器上跑高性能应用。却总感觉“内存访问慢”或“进程迁移频繁”,那很可能是你没有利用NUMA架构。下面用最直白的语言拆解NUMA在Linux CPUInfo中的实战,让你能迅速上手。
1️⃣ 先把SMP和NUMA的区别想清楚
SMP是早期设计:所有CPU通过同一条总线共享同一块物理内存。因为主要数增多,总线竞争成了瓶颈。导致内存访问延迟飙升。说起来,
NUMA则把内存划分为若干本地 node每个CPU只能最快访问自己的本地内存。跨 node 的访问要慢一些。换个角度把热点数据放到它使用的 CPU 所在的 node 上,就是打败总线瓶颈的关键。
2️⃣ Linux 对 NUMA 的抽象与工具
-
/proc/cpuinfo– 查看 CPU 与其对应的 node 信息。 -
/sys/devices/system/node/– 目录里列出每个 node 的 CPU、内存等细节。 -
numactl– 绑定进程到指定 CPU / 内存节点;还能检查当前节点分布,老实说, -
/proc/sys/kernel/numa_balancing。/proc/sys/kernel/numa_balancing_topology_changes,等 sysctl 参数控制自动迁移策略。

