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 呈现的视图。











