直接用lspci -t、lsblk -s、lscpu --extended和numactl --hardware四个命令即可覆盖pcie连接路径、磁盘物理归属、cpu核心线程绑定及numa硬件拓扑四类关键物理结构,无需第三方工具或驱动依赖。

直接用 lspci -t、lsblk、lscpu --extended 和 numactl --hardware 四个命令,就能覆盖 PCI、磁盘、CPU、NUMA 四类物理拓扑——不需要第三方工具,也不依赖驱动或虚拟化层。
查 PCIe 物理连接路径用 lspci -t
它输出的是内核枚举出的真实硬件连接树,不经过 ACPI 或驱动抽象,缩进层级直接对应 Root Port → Switch → Endpoint 的物理嵌套关系。
- 看到
+-01.0缩进在-00.0下,说明该设备通过 PCIe 链路挂在 00.0(通常是 CPU 直连的 Root Port)下面 -
lspci -tv可补全厂商/型号,但会混入逻辑信息;纯物理拓扑只用-t - 如果某卡显示为
ff:00.0且无缩进,大概率是直连 CPU 的 U.2 NVMe 或 CXL 设备;若缩进很深,可能经过多级 PCH 或 PLX Switch - 别拿
lspci -vv的 Capabilities 字段判断带宽——实际通路瓶颈在-t的最深层数,比如三层嵌套通常意味着至少一次 8 GT/s 降速
查磁盘物理归属和 RAID 位置靠 lsblk -S + 协同命令
lsblk -S 只干一件事:把 /dev/sda 这种名字,对应到机箱里那块贴着 SN 标签的硬盘。它不显示 RAID,但它是所有后续定位的起点。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 先运行
lsblk -S | grep sdb,记下SERIAL和TRAN(比如sata或nvme) - 再看
lsblk -o NAME,PKNAME,TYPE:如果sdb的PKNAME是空,说明它是顶层物理盘;如果PKNAME是md126,说明它属于软 RAID - 软 RAID 查
cat /proc/mdstat或mdadm --detail /dev/md0;硬件 RAID 必须用厂商工具,比如MegaCli64 -PDList -aALL输出里的Slot Number才能和lsblk -S的SERIAL对上 -
lsblk默认不显示 SCSI Enclosure ID,而硬件 RAID 卡的 Slot 编号常跨 enclosure,单靠lsblk -S无法区分——必须配合sg_inq /dev/sgX或 RAID 工具输出
查 CPU 物理核心与线程绑定关系优先用 lscpu --extended
它比 /proc/cpuinfo 看得清,也比 lscpu -e 更稳——尤其在超线程开启、多插槽、SMT 关闭混合场景下,--extended 的列对齐天然适配拓扑推理。
-
lscpu --extended=CPU,CORE,SOCKET,NODE能一眼看出哪些逻辑 CPU 共享物理核心(同一 CORE+SOCKET 组合出现多次) - CORE 列不是物理核心绝对编号,而是内核分配的逻辑索引;要确认真实物理布局,加
-y(即lscpu --extended -y),它会尝试用 APIC ID 或 Node ID 替换逻辑 CORE/SOCKET - 如果某行
SOCKET或CORE显示-,说明固件没提供足够信息,此时必须 fallback 到/sys/devices/system/cpu/cpu0/topology/thread_siblings_list手动解析 - 虚拟机里
--extended显示的 NODE 常不可信;numactl --hardware输出若只有 node0 且 distance 全是 10,基本可判定 NUMA 被 Hypervisor 屏蔽了
查内存控制器与 CPU 插槽映射必须看 numactl --hardware
它反映的是 BIOS/UEFI 初始化阶段探测到的硬件级 NUMA 拓扑,不是当前进程内存分配结果——这是很多人误判“绑核无效”的根源。
- 重点看
node X cpus:行,它告诉你哪些逻辑 CPU 物理上焊在同一块内存控制器旁边;node X size:是本地内存总量,不是当前可用量 -
node distances:表中非对角线数值 >25 就表明跨节点访问延迟显著升高;此时即使绑了 CPU,若没同时指定--membind=nodeX,内存仍可能从远端节点分配 -
lscpu | grep NUMA只能告诉你节点数,但无法确认 CPU 是否真被均匀分到各节点——有些双路主板 BIOS 设置错误会导致 16 核全挤在 node0 -
/sys/devices/system/node/下的node0/cpulist是运行时视图,可能因热插拔或内核调度策略动态变化;诊断硬件拓扑必须以numactl --hardware为准
真正难的不是命令怎么敲,而是当 lspci -t 显示设备挂得很深、numactl --hardware 显示节点距离悬殊、lscpu --extended -y 却发现绑定的物理核心和内存控制器不在同一节点时——这时候得关掉 BIOS 里的 SR-IOV 或 Sub-NUMA Clustering,否则任何用户态调优都是徒劳。










