Linux怎么查看当前系统的物理拓扑结构
lscpu --extended通常是查看CPU物理拓扑最直接、也最省事的方式。它会把逻辑CPU、CORE、SOCKET、NODE这些关键信息按单行对齐展示出来,不用再像看/proc/cpuinfo那样,在一堆分散字段里来回对应、反复比对。尤其是在多 socket、超线程和 NUMA 叠加的混合环境
lscpu --extended通常是查看CPU物理拓扑最直接、也最省事的方式。它会把逻辑CPU、CORE、SOCKET、NODE这些关键信息按单行对齐展示出来,不用再像看/proc/cpuinfo那样,在一堆分散字段里来回对应、反复比对。尤其是在多 socket、超线程和 NUMA 叠加的混合环境里,这个命令的优势会更明显。

lscpu --extended 看清 CPU 物理拓扑
直接执行 lscpu --extended,逻辑 CPU 和物理插槽(socket)、核心(core)、NUMA 节点(node)之间的对应关系就能一眼看清,不必再去 /proc/cpuinfo 里翻那些分散的字段再手动拼起来。尤其是在超线程、多 socket、NUMA 混合并存的环境里,它本身就能很好地适配。
常见错误是只看 CPU(s): 行就以为是物理核数——实际得用 SOCKET × CORE(s) per socket 才是真实物理核心总数。
--extended=CPU,SOCKET,CORE,NODE可精简输出,避免默认列过多干扰判断- 列名必须全大写、逗号不能有空格,否则报错
Invalid argument - 若某行
SOCKET或CORE显示-,说明内核未获取到物理 ID,需 fallback 到/sys/devices/system/cpu/cpu*/topology/查证 - 加
-y(即lscpu --extended -y)可尝试替换为平台物理 ID(如 APIC ID),对绑核更可靠
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME 看清磁盘层级
lsblk 不依赖分区表或 root 权限,直接从 sysfs 构建块设备树状结构。缩进即嵌套:顶层无缩进的是物理盘(如 sda、nvme0n1),其下缩进的是分区、加密层、LVM 逻辑卷等。
关键字段中:PKNAME 指明父设备(比如 sda2_crypt 的 PKNAME 是 sda2),TYPE 区分 disk/part/crypt/lvm 角色,避免把逻辑卷当物理盘误操作。
- 查单块盘:直接
lsblk /dev/sdb,不带参数会刷屏 - 只看物理盘:用
lsblk -d隐藏所有子设备 - 要识别文件系统和挂载点,必须加
-f;但-f不显示设备类型(TYPE),所以推荐组合-o自定义字段
lspci -t 揭示 PCIe 物理连接路径
lspci -t 输出的是内核枚举出的真实 PCIe 拓扑,反映 Root Port → Bridge → Endpoint 的嵌套关系,不依赖驱动加载状态。它能区分“直连 CPU”的高速设备和“经 PCH”的带宽受限设备。
例如显卡在 00:01.0 下,NVMe 在 00:1d.0 下桥之后,前者大概率走 CPU 直连通道,后者可能受限于 PCH 带宽——仅看 lspci 列表根本看不出这点。
- 缩进层级 = 桥接级数,
-+-或+-后紧跟设备地址(如01:00.0) - 同一总线下多个设备(如
02:00.0和02:00.1)共享带宽,不同总线通常走独立链路 - 若某设备在
-t输出中“消失”,大概率是未被内核枚举(硬件故障、ACPI 缺失、BIOS 关闭插槽) lspci -t不体现 DMI/PCIe 通道归属,Intel 平台需结合dmesg | grep -i "root port"判断是否 CPU 直连
numactl --hardware 验证 NUMA 硬件布局
numactl --hardware 显示的是内核初始化时探测到的 NUMA 硬件拓扑,不是运行时内存分配状态。它告诉你“硬件能怎么分”,而非“现在怎么用”。
输出里 node X cpus: 是该节点绑定的逻辑 CPU 列表,node distances: 表示跨节点访问代价——对角线应为最小值(通常 10),非对角线若 >20 就说明跨节点延迟显著。
- 用
lscpu | grep -i numa快速确认 NUMA 是否启用及节点数,但不如numactl --hardware全面 - BIOS 关闭 NUMA 后,该命令仍可能显示多节点,需配合
dmesg | grep -i numa确认内核是否真正启用 - 虚拟机中结果不可靠,应以宿主机输出为准;
/sys/devices/system/node/下文件才是运行时真实状态
lscpu --extended、lsblk -o、lspci -t、numactl --hardware 四个命令各自覆盖一个维度,缺一不可。最容易被忽略的是:PCIe 树里看不出通道归属,NUMA 节点距离不等于实际延迟,而虚拟化环境下所有这些输出都只是 Hypervisor 呈现的视图。 































