lspci -t 是查看 pcie 物理拓扑最轻量可靠的方式,不依赖驱动或 acpi,仅反映内核枚举的真实连接层级;每级缩进代表一个 pcie bridge,-+-/+–后为设备地址,可直观识别设备挂载路径(如 nvme 是否直连 root port 或经 pch),并暴露共享带宽等关键拓扑信息。

lspci -t 是看 PCIe 物理拓扑的唯一轻量方式
它不依赖驱动、不解析 ACPI,只反映内核实际枚举出的硬件连接层级。输出里每级缩进代表一个 PCIe Bridge,-+- 或 +- 后面跟的是设备地址(如 01:00.0),你能一眼看出某块 NVMe 是挂在 Root Port 下还是经过 PCH 桥接。
常见错误现象:只用 lspci 列表式输出,结果发现两块 GPU 地址都是 01:00.0 和 02:00.0,却不知道它们是否共享上游带宽——这种信息只有 lspci -t 能暴露。
- 若某设备在
lspci -t中“消失”,基本是硬件未通电、BIOS 禁用插槽、或 ACPI 描述缺失 -
lspci -t不体现 DMI/PCIe 通道归属:Intel 平台中 CPU 直连和 PCH 提供的 PCIe 通道在树里都显示为总线,但延迟和带宽差一倍以上,需配合dmesg | grep -i "root port"区分 - Thunderbolt 控制器下游设备不会出现在该树中,那是另一个 PCIe 域,得用
lspci -D查完整 domain:bus:slot.func
lsblk -o NAME,PKNAME,TYPE 看磁盘逻辑到物理的挂载链
PKNAME 字段才是关键——它直接告诉你某个分区(如 sda1)的父设备是谁(sda),而 TYPE 标明它是 disk、part、lvm 还是 crypt。这比靠设备名猜关系靠谱得多。
容易踩的坑:以为 lsblk 能直接显示 RAID 成员关系。其实它不识别软 RAID(/dev/md0)的底层物理盘,更不反映硬件 RAID 卡上的 Slot 编号。它只负责把内核已识别的块设备层级画清楚。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 查单块盘:用
lsblk /dev/nvme0n1,避免被其他磁盘干扰 - 聚焦顶层物理盘:加
-d参数(lsblk -d),只列sda、nvme0n1这类原始设备 - 若
PKNAME为空,说明该设备是顶层物理盘;若非空,顺着链往上追,直到PKNAME为空为止
lscpu --extended 和 numactl --hardware 联合看 CPU+NUMA 物理布局
lscpu --extended 把每个逻辑 CPU 对应的 SOCKET、CORE、NODE 对齐输出,适合快速确认绑核目标是否真实隔离;numactl --hardware 则告诉你每个 node 实际挂了多少内存、CPU 列表、以及节点间访问距离(node distances)。
两者缺一不可:前者告诉你“CPU 长什么样”,后者告诉你“内存怎么分”。比如 lscpu --extended 显示 CPU 0~7 在 NODE 0,但 numactl --hardware 可能揭示 NODE 0 内存只剩 2GB,而 NODE 1 有 64GB 空闲——这时候硬绑到 NODE 0 反而触发频繁跨节点访问。
-
lscpu --extended默认不显示离线 CPU,要包含它们得加-a(lscpu --extended -a) -
numactl --hardware输出的node distances表中,非对角线数值若远高于 20,说明跨节点代价高,绑核时必须谨慎 - 虚拟机里
lscpu --extended的NODE和CACHE列可能被 Hypervisor 抽象,此时以宿主机numactl --hardware为准
hwloc-ls 提供最直观的跨层拓扑视图
它把 CPU Package、Core、PU(逻辑核)、L1/L2/L3 Cache、PCI 设备甚至 GPU 都揉在同一棵树里,用缩进表达归属关系。比如看到 GPU L#1 "card0" 挂在 PCI 15ad:0405 下,而该 PCI 设备又属于某个 Package L#0,你就知道这块显卡直连哪个 CPU 插槽。
这不是“锦上添花”的工具,而是当你需要同时协调 CPU 绑核、NUMA 内存分配、PCIe 设备直通时的刚需视图。lscpu 和 lspci -t 各管一块,hwloc-ls 才真正把它们串起来。
- CentOS/RHEL 上装:
yum install hwloc;Ubuntu/Debian:apt install hwloc-nox11 -
hwloc-ls默认输出含 PCI 设备,若只想看 CPU 层级,加--no-io - 注意:某些老旧固件下
hwloc可能 fallback 到 sysfs 解析,此时缓存层级可能不准确,建议对比lscpu主输出里的 cache 字段交叉验证
lspci -t 里的“同总线”不等于“同带宽”,lsblk 的 PKNAME 链不体现 RAID 抽象层,lscpu --extended 的 NODE 编号在虚拟机里可能是假的——所有这些,都得靠多个命令输出互相咬合才能确认。










