lspci -t是Linux中唯一可信的PCIe物理拓扑命令,以缩进树形结构真实反映root port→switch→endpoint的嵌套层级,不依赖驱动、ACPI或sysfs,仅基于内核枚举结果。

Linux 没有内置命令能直接输出一张带图形、可拖拽、带连线的“拓扑图”(比如类似 Visio 或 HMC 那样的 SVG/PNG 图表),所谓“查看物理拓扑映射图表”,本质是分模块提取并交叉比对各子系统的物理连接关系——PCIe 路径、CPU 插槽与核心分布、NUMA 内存归属、磁盘物理位置,再靠人脑或脚本拼出完整映射。
lspci -t 是 PCIe 物理拓扑唯一可信来源
它不依赖驱动加载、不解析 ACPI、不走 sysfs,只读内核枚举结果,输出缩进树形结构,真实反映 root port → switch → endpoint 的物理嵌套层级:
- 每一级缩进代表一次 PCIe bridge 下挂,
lspci -t中的+-和|符号就是物理连接线的文本化表达 - 同一行中带
@的设备(如01:00.0)是直连 CPU 的 PCIe 设备;带:的(如00:1c.0)通常经 PCH,延迟更高、带宽受限 - 若看到
-[02]---这类方括号标注,说明该 branch 对应独立的 PCIe domain(常见于多 CPU 主板或 CXL 扩展),不能简单认为所有设备都在同一个物理总线上 - 注意:
lspci -tv加-v会混入逻辑信息(如 driver、kernel modules),反而干扰物理路径判断;纯lspci -t才干净
lsblk -S + RAID 工具才是磁盘物理定位闭环
lsblk -S 只给 SERIAL、MODEL、VENDOR,但它本身不告诉你这块盘插在哪个槽位——必须配合硬件 RAID 卡工具或系统 BIOS 信息才能闭环:
- 对 MegaRAID 卡,运行
MegaCli64 -PDList -aALL | grep -E "Slot|Enclosure|SN:",其中Slot Number就是机箱里从左到右的物理插槽编号 - 对 HP Smart Array,用
ssacli ctrl slot=0 pd all show,输出里的Physical Drive行明确标出Port、Box、Bay,对应背板上的物理坐标 - 软 RAID(mdadm)场景下,
mdadm --examine /dev/sdb1输出中的MD UUID和Device Role可反查它属于哪个/dev/mdX,但物理槽位仍需靠lsblk -S的SERIAL去机柜标签上手动比对 - NVMe 设备要额外留意:
nvme list显示的DevicePath(如/dev/nvme0n1)和lspci -t中的0000:01:00.0必须匹配,否则可能是热插拔后未重枚举或 NVMe over Fabrics 伪设备
lscpu --extended -y 和 numactl --hardware 必须对照看
CPU 和内存的物理归属不是单条命令能说清的事——lscpu --extended -y 给的是 APIC/Node ID 级别的硬件索引,numactl --hardware 给的是内存控制器实际响应距离,两者偏差意味着 BIOS 设置或固件 bug:
- 运行
lscpu --extended -y=CPU,SOCKET,CORE,NODE,检查SOCKET编号是否连续(如 0,1,2)、NODE是否与numactl --hardware输出的available: N nodes一致 - 若
lscpu显示 4 个 SOCKET,但numactl --hardware只显示 2 个 node,大概率是 BIOS 中启用了 Sub-NUMA Clustering(SNC),此时每个 socket 被拆成两个逻辑 node,lscpu的 NODE 列已失真 -
numactl --hardware的node distances表里,非对角线数值若超过对角线 2 倍(如对角线 10,跨 node 为 30+),说明跨节点访存代价极高,此时绑核必须同时绑定 NODE,只绑 SOCKET 不够 - 虚拟机里
lscpu --extended -y的SOCKET和CORE是 Hypervisor 伪造的,numactl --hardware却可能暴露真实 node 数(取决于透传配置),这时要以宿主机输出为准
真正难的不是跑哪条命令,而是当 lspci -t 显示某 GPU 挂在 CPU0 的 root port 下,numactl --hardware 却显示它所属的内存 node 是 node1,而 lscpu --extended 又把 GPU DMA 的 CPU 绑定建议指向 node0 ——这种矛盾点,才是物理拓扑映射里最常被忽略的断层。


















