Linux查看物理内存拓扑结构图的方法
Linux 系统本身并没有提供一个内置命令,能够直接把物理内存拓扑结构图完整输出出来。想真正看清这类信息,通常需要把 numactl --hardware(用于查看静态 NUMA 划分)、lscpu --extended(用于对应 CPU 与节点的物理位置)、 sys devices system
Linux 系统本身并没有提供一个内置命令,能够直接把物理内存拓扑结构图完整输出出来。想真正看清这类信息,通常需要把 numactl --hardware(用于查看静态 NUMA 划分)、lscpu --extended(用于对应 CPU 与节点的物理位置)、/sys/devices/system/node/(用于查看运行时内存状态)结合起来交叉验证;至于 lsblk 和 free,它们本身并不包含物理内存拓扑相关信息。

Linux 并没有内置工具可以直接生成一张带连线、可视化节点关系的“物理内存拓扑图”。所谓“物理内存拓扑结构图”,本质上是 NUMA 节点、CPU 绑定关系以及内存分布三者形成的空间映射,因此必须通过多个命令组合分析,才能拼出完整拓扑结构。
用 numactl --hardware 查看 NUMA 节点与内存的静态物理划分
这是最接近“内存拓扑底图”的命令,它读取的是 BIOS/UEFI 在系统启动阶段上报的硬件拓扑信息,不会随着运行时状态变化:
available: 2 nodes表示当前主板上存在两个 NUMA 节点,而不是两个逻辑 CPUnode 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 时,通常意味着跨 NUMA 节点访问延迟明显上升
⚠️ 常见误区: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 平台,此时可以回退到/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 --interleave=all,或者没有正确进行 CPU 绑核,导致 NUMA 内存局部性失衡
⚠️ 需要注意:/sys/devices/system/node/ 下的路径名称(例如 node0)对应的是逻辑节点 ID,并不是物理插槽编号。即使某些 BIOS 已关闭 NUMA,这里依旧可能出现多个 node 目录;此时应通过 dmesg | grep -i numa 进一步确认,内核是否真正启用了 NUMA 支持。
不要把 lsblk 或 free 当成内存拓扑工具——它们并不涉及物理内存拓扑
lsblk 用于查看磁盘和块设备层级,free 只用于统计内存页框总量,这两个命令都不会提供地址空间、NUMA 节点、CPU 绑定关系等任何物理内存拓扑信息:
free -h输出中的MemTotal表示内核可管理的全部物理页总和,不区分 NUMA 节点,也不包含 reserved 区域lsblk中的PKNAME字段只反映块设备之间的从属关系,与物理内存地址或内存拓扑完全无关- 如果你想真正梳理出 Linux 物理内存拓扑结构,就需要手工把
numactl --hardware的节点内存容量、lscpu --extended的 CPU 分布,以及/sys/devices/system/node/*/meminfo的实时使用量叠加分析——系统没有一条命令能一键生成完整拓扑图,关键在于建立这三层数据之间的对应关系
还有一个经常被忽视的重点:如果 BIOS 设置中的 “Node Interleaving” 开关被开启,numactl --hardware 显示出来的节点内存分布可能会看起来很均匀,但实际内存访问延迟仍然是非均匀的。此时判断 Linux NUMA 拓扑是否真实有效,最可靠的依据依然是 node distances。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Mac访达侧边栏图标大小怎么调整设置
Mac 访达侧边栏图标大小必须通过“系统设置→通用→边栏图标大小”来调整,选择“小”“中”或“大”后会立即生效,并统一影响所有 Finder 访达窗口的侧边栏图标与文字显示,无需重启应用。在 Mac 上打开访达后,如果觉得左侧边栏图标太小,不仅查看起来吃力,点击操作也不够方便,那么需要调整的并不是访
Mac触控板三指点击弹窗怎么关闭设置方法
想关闭 Mac 上的三指轻点查词功能,其实操作很简单:打开“系统设置”→“触控板”→“光标与点按”,取消“查询与数据检测器”的勾选即可;你也可以直接在系统设置中搜索这个选项,然后关闭总开关。关闭后,快捷键 Control+Command+D 以及右键菜单中的“查找定义”通常也会一并停用。如果你也想把
Mac关闭专注模式过滤的方法
必须手动移除 Safari 标签页组过滤条件,才能真正停用限制,而不是直接关闭专注模式本身;具体操作是进入系统设置→专注模式→选择目标模式→在过滤条件中点击“⋯”→选择“移除”。如果你在 Mac 上为某个专注模式设置了 Safari 标签页组过滤,之后想要临时取消或长期关闭这项网页访问限制,让所有网
Mac系统数据占用40G如何降到10G
想把Mac里的“系统数据”从40GB压到10GB,关键不在于盲目删除文件,而在于把几类真正占空间的内容找准、清干净:先通过系统设置→通用→储存空间扫描并管理“系统数据”,优先处理缓存、日志以及Time Machine本地快照;然后手动清空或有针对性地清理~ Library Caches和微信等应用缓
Linux查看当前系统所有路由条目方法
ip route show 是查看 Linux IPv4 主路由表最可靠的方式,输出会包含目标网络、下一跳、出接口、协议来源以及 metric;如果要查看 IPv6 路由,需要使用 ip -6 route show;route 命令属于 net-tools 包,在精简系统中通常需要手动安装。直接执行
- 热门数据榜
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
相关攻略
2026-08-13 08:04
2026-08-13 08:04
2026-08-13 08:04
2026-08-13 08:03
2026-08-13 08:03
2026-08-13 08:03
2026-08-13 08:02
2026-08-13 08:02
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

