Linux怎么查看具体的物理内存拓扑结构图
Linux本身并没有一个内置命令,可以直接把物理内存拓扑图完整输出出来。想看清楚这件事,通常得把 numactl --hardware(用来查看静态 NUMA 划分)、lscpu --extended(用来对齐 CPU 与节点的物理位置)、/sys/devices/system/node/(用来查看
Linux本身并没有一个内置命令,可以直接把物理内存拓扑图完整输出出来。想看清楚这件事,通常得把 numactl --hardware(用来查看静态 NUMA 划分)、lscpu --extended(用来对齐 CPU 与节点的物理位置)、/sys/devices/system/node/(用来查看运行时内存状态)这三者放在一起交叉验证;至于 lsblk 和 free,它们并不涉及拓扑信息。

Linux 没有内置命令能直接输出一张带连线、可视化节点关系的“拓扑图”,所谓“物理内存拓扑结构图”本质上是 NUMA 节点 + CPU 绑定 + 内存分布三者的空间映射关系,必须靠多个命令交叉验证拼出全貌。
用 numactl --hardware 看 NUMA 节点与内存的静态物理划分
这是最接近“拓扑底图”的命令,它读取 BIOS/UEFI 在启动时上报的硬件拓扑,不随运行时变化:
a vailable: 2 nodes表示主板上有两个 NUMA 节点(不是逻辑 CPU 数)node 0 cpus: 0-15和node 1 cpus: 16-31告诉你哪些逻辑 CPU 物理上归属哪个节点node 0 size: 64512 MB是该节点本地内存总量,注意不是/proc/meminfo中的 MemTotalnode distances: 10 21这一行表示 node0 访问 node1 的代价是 21(对角线恒为 10),数值 >20 就说明跨节点访问明显变慢
⚠️ 容易踩的坑:numactl --hardware 不显示 PCIe 设备挂载在哪一节点,也不反映当前进程实际分配到了哪块内存——它只告诉你“硬件允许怎么分”,不是“现在正在怎么用”。
用 lscpu --extended=CPU,SOCKET,CORE,NODE 对齐 CPU 与 NUMA 节点物理位置
单看 numactl --hardware 只知道节点有谁,但不知道每个逻辑 CPU 具体落在哪;lscpu --extended 把 CPU、核心、插槽、NUMA 节点四者对齐在一行,是绑定进程前必查的依据:
- 输出中同一
SOCKET+ 同一CORE出现两次(如 CPU 0 和 CPU 16),大概率是超线程,它们共享 L1/L2 缓存 - 若某行
NODE为空或为-,说明内核未能识别其 NUMA 归属,常见于老旧固件或 ARM 平台,此时应 fallback 到/sys/devices/system/cpu/cpu*/topology/下手动查topology/physical_package_id和topology/node - 虚拟机里
NODE列可能全为 0 或固定值,不代表真实 NUMA 结构,需结合numactl --hardware在宿主机上确认
用 /sys/devices/system/node/ 查运行时内存使用与节点状态
上面两个命令都是静态快照,而这里才是“活”的拓扑数据源,所有文件内容随内存回收、页面迁移实时更新:
cat /sys/devices/system/node/node0/meminfo | grep -E "MemTotal|MemFree|Node"看 node0 实际可用内存,比numactl --hardware的 size 更准cat /sys/devices/system/node/node0/cpulist显示当前可调度到该节点的 CPU 列表(可能因热插拔或isolcpus内核参数被动态调整)- 若发现 node0
MemFree极低但 node1 还剩大量空闲,说明应用未启用numactl --interlea ve=all或未正确绑核,导致内存局部性失衡
⚠️ 注意:/sys/devices/system/node/ 下面的路径名(比如 node0),对应的是逻辑节点 ID,并不是物理插槽编号。即便某些 BIOS 已经关闭了 NUMA,这里依然可能看到多个 node 目录;这时就要用 dmesg | grep -i numa 去确认,内核到底有没有真正启用 NUMA 支持。
别信 lsblk 或 free ——它们根本不涉及物理内存拓扑
lsblk 管磁盘层级,free 只统计页框总量,两者都完全不提供地址空间、NUMA 节点、CPU 绑定等任何物理内存拓扑信息:
free -h输出的MemTotal是内核管理的所有可用物理页之和,不区分节点,也不含 reserved 区域lsblk的PKNAME字段只反映块设备嵌套关系,跟内存地址毫无关联- 真正要画出拓扑图,你得手工把
numactl --hardware的节点内存大小、lscpu --extended的 CPU 分布、/sys/devices/system/node/*/meminfo的实时用量三者叠在一起——没有一键生成图的命令,也没必要强求“图”,关键是要建立这三层数据的对应关系
最常被忽略的一点:BIOS 设置里的 “Node Interlea ving” 开关,一旦开启,numactl --hardware 显示的节点内存会变成均匀分布,但实际访问延迟仍是非均匀的,这时候看 node distances 才是唯一可信依据。
WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Autodesk Fusion 是面向产品设计与制造的云连接开发平台,在统一环境中整合三维 CAD、CAM、CAE、PCB、工程图、数据管理和团队协作功能,适合产品设计师、机械工程师、电子工程师及加工制造团队完成从概念建模、验证分析到生产交
Archicad 是 Graphisoft 面向建筑师、设计师、工程师及 BIM 团队开发的建筑信息模型平台。它把三维建筑建模、施工文档、数据管理、专业协调、实时协作和可视化集中在统一项目环境中,适合从概念方案到施工交付的完整建筑设计流程。
Vectorworks Architect 是面向建筑师、室内设计师和建筑顾问的综合设计与BIM平台,覆盖概念草图、二维制图、三维建模、施工文档、数据报表、可视化及开放式协作。它强调自由造型与数据化建筑对象并存,













