应优先使用hwloc-ls --no-io查看cpu与缓存拓扑,其缩进结构天然体现package→l3→core→pu的物理归属关系,比lscpu更直观反映共享缓存和超线程隶属;需图形化时用lstopo --no-legend --no-text --horiz --merge -o topo.png导出清晰拓扑图。

直接看 CPU 和缓存拓扑用 hwloc-ls
想一眼看清物理 CPU 插槽、核心、超线程(PU)、各级缓存(L1d/L1i/L2/L3)的归属关系,hwloc-ls 是最轻量也最准确的选择。它不依赖 GUI,输出即拓扑,层级缩进天然体现父子关系。
常见错误是只跑 lscpu——它能列参数,但看不出“哪个 core 共享哪块 L3”或“两个 PU 是否在同一个物理 core 上”。而 hwloc-ls 的缩进结构直接反映硬件真实分组:
-
Package L#0对应一个物理 CPU 插槽 - 其下的
L3 L#0表示该插槽独占的 L3 缓存 - 再下一级
Core L#0是物理核心,PU L#0和PU L#1就是它的两个逻辑线程(如果开启超线程)
注意:默认输出含 PCI 设备(如 GPU、网卡),干扰判断。加 --no-io 可干净只看 CPU+cache 层级:hwloc-ls --no-io。
需要图形化交互式拓扑图就用 lstopo
lstopo 是 hwloc 自带的图形前端,能导出 PNG/SVG,也能交互缩放、点击查看详情。它比 hwloc-ls 多一层可视化抽象,适合向他人展示或临时调试 NUMA 节点分布。
容易踩的坑:
- 没装 X11 或 Wayland 时运行会报错
Failed to open display——此时加-o topo.png强制导出图片,无需 GUI 环境 - 默认把内存节点(NUMA node)和 CPU 混排,容易误判延迟关系;加
--no-legend --no-text可简化图面,专注拓扑连通性 - 大系统(比如 128 核)默认布局挤成一团,用
--horiz或--vert指定方向,再配合--merge合并同级 cache 节点,图才可读
查 PCIe 设备物理位置必须用 lspci -tv
PCIe 拓扑不是逻辑树,而是真实总线树状结构。lspci -tv 用 ASCII 树形输出,每个 [-] 分支代表一个 PCIe Switch 或 Root Port,BDF(如 03:00.0)的位置一目了然。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
为什么不用 lspci -vv?它信息全但无结构,你得自己从 Bus/Secondary bus 字段手动拼接路径。而 -tv 直接告诉你:
-
+-01.0是根复合体(Root Complex)直连设备 -
+-02.0是挂在 01.0 下游 Switch 的设备 - 某 NVMe 卡出现在
05:00.0下游,说明它走的是 PCH 而非直连 CPU,延迟更高
注意:-t 必须配合 -v 或 -vv 才显示完整设备名,单独 -t 只有 BDF 编号。
磁盘物理归属关系靠 lsblk -o NAME,PKNAME,TYPE
看到 sdb1 挂载在 /data,但不确定它属于哪块物理盘?PKNAME 列就是答案。它明确标出父设备名,对识别 NVMe 命名空间(nvme0n1p1 → nvme0n1)、LVM 逻辑卷(myvg-mylv → dm-0 → sda2)、加密设备(luks-xxx → sdc)至关重要。
别只用 df -h 或 lsblk 默认输出——它们不显示 PKNAME,你会把逻辑卷当成物理盘来管理。实际操作中:
- 查某分区归属:
lsblk -o NAME,PKNAME,TYPE /dev/sdb1 - 确认新插入硬盘是否被识别为独立磁盘(而非某个 RAID 成员):
lsblk -d只列顶层disk类型设备 - 混淆
TYPE=lvm和TYPE=part是常见误操作根源——前者是逻辑层,后者才是物理分区
物理拓扑的复杂点不在命令多,而在每一层抽象(CPU core / PCIe bus / disk partition)都有自己的命名和归属逻辑,跨层时必须用对应工具锚定真实硬件实体。漏掉 PKNAME 或忽略 hwloc 的缩进层级,很容易把虚拟拓扑当物理现实来处理。










