服务器测试百日学习计划——Day4:PCIe 架构与服务器设备拓扑
大家好,我是 JACK,服务器硬件测试工程师。百日学习计划 Day4,今天彻底看懂服务器 PCIe 结构,共 12 个模块,基本是 3~5 小时工程训练量。
一、Day4 模块概览
- 模块1:PCIe基础概念
- 模块2:PCIe lane
- 模块3:PCIe Gen版本
- 模块4:PCIe带宽计算
- 模块5:PCIe设备识别
- 模块6:PCIe链路状态
- 模块7:PCIe降速判断
- 模块8:PCIe拓扑
- 模块9:PCIe Root Port
- 模块10:PCIe Switch
- 模块11:设备NUMA关系
- 模块12:Python自动化检测PCIe
模块1:PCIe 基础概念
PCIe 是服务器高速设备总线。服务器里的很多设备都通过 PCIe 总线连接到 CPU,包括:NVMe、NIC、GPU/NPU、RAID、USB、SATA。
典型结构:
CPU│PCIe Root Port│PCIe Switch│设备
用 lspci 第一件事就能看到:
- Non-Volatile memory controller — NVMe
- Ethernet controller — 网卡
- RAID bus controller — RAID卡
- Processing accelerators — NPU/GPU
实验1:查看所有 PCIe 设备
[root@localhost ~]# lspci01:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)01:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)01:02.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)01:03.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)02:00.0 VGA compatible controller: Huawei Technologies Co., Ltd. Hi171x Series [iBMC Intelligent Management system chip w/VGA support] (rev 01)03:00.0 Signal processing controller: Huawei Technologies Co., Ltd. iBMA Virtual Network Adapter (rev 01)07:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)08:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)0b:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)0c:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)2e:00.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)2e:01.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)2e:08.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)2e:09.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)2e:0b.0 System peripheral: Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine (rev 30)2f:00.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)2f:01.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)2f:08.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)2f:09.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)2f:0b.0 System peripheral: Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine (rev 30)30:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)30:01.0 USB controller: Huawei Technologies Co., Ltd. Device a23c (rev 30)30:03.0 USB controller: Huawei Technologies Co., Ltd. Device a23d (rev 30)30:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 30)30:05.0 Memory controller: Huawei Technologies Co., Ltd. Device a12f (rev 30)32:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)32:01.0 USB controller: Huawei Technologies Co., Ltd. Device a23c (rev 30)32:03.0 USB controller: Huawei Technologies Co., Ltd. Device a23d (rev 30)32:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 30)34:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)34:01.0 System peripheral: Huawei Technologies Co., Ltd. Device a22b (rev 30)35:00.0 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE/50GE RDMA Network Controller (rev 30)35:00.1 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE/50GE RDMA Network Controller (rev 30)35:00.2 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE/50GE RDMA Network Controller (rev 30)35:00.3 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE/50GE RDMA Network Controller (rev 30)36:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)38:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)38:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)38:05.0 SATA controller: Huawei Technologies Co., Ltd. HiSilicon AHCI HBA (rev 30)38:08.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)38:09.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)3c:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)3c:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)3c:08.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)3c:09.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)41:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)42:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)45:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)46:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)6e:00.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)6e:01.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)6e:08.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)6e:09.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)6e:0b.0 System peripheral: Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine (rev 30)6f:00.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)6f:01.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)6f:08.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)6f:09.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)6f:0b.0 System peripheral: Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine (rev 30)70:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)70:01.0 USB controller: Huawei Technologies Co., Ltd. Device a23c (rev 30)70:03.0 USB controller: Huawei Technologies Co., Ltd. Device a23d (rev 30)70:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 30)72:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)72:01.0 USB controller: Huawei Technologies Co., Ltd. Device a23c (rev 30)72:03.0 USB controller: Huawei Technologies Co., Ltd. Device a23d (rev 30)72:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 30)74:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)76:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)78:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)78:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)78:08.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)78:09.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)7c:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)7c:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)7c:08.0 System peripheral: Huawei Technologies Co., Ltd. Device a12d (rev 30)7c:09.0 System peripheral: Huawei Technologies Co., Ltd. Device a12e (rev 30)80:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)80:02.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)80:04.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)81:00.0 Non-Volatile memory controller: DERA Storage Device 151582:00.0 Non-Volatile memory controller: DERA Storage Device 151583:00.0 RAID bus controller: Broadcom / LSI MegaRAID 12GSAS/PCIe Secure SAS39xx95:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)96:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)aa:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)ab:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)c0:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)c1:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20) # NPU/GPUd5:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)d6:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)[root@localhost ~]#
模块2:PCIe Lane
PCIe 是多通道通信,常见宽度:x1、x4、x8、x16。
- NVMe → x4
- GPU/NPU → x16
- NIC → x8
实验2:查看 NVMe PCIe 链路
[root@localhost ~]# lspci | grep -i nvme[root@localhost ~]# lspci | grep -i non81:00.0 Non-Volatile memory controller: DERA Storage Device 151582:00.0 Non-Volatile memory controller: DERA Storage Device 1515[root@localhost ~]# lspci | grep -i 81:00.081:00.0 Non-Volatile memory controller: DERA Storage Device 1515[root@localhost ~]#[root@localhost ~]# lspci -vv -s 81:00.081:00.0 Non-Volatile memory controller: DERA Storage Device 1515 (prog-if 02 [NVM Express]) Subsystem: DERA Storage Device 7105 Physical Slot: 67 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 28 NUMA node: 3 Region 0: Memory at a0320000 (64-bit, non-prefetchable) [size=32K] Expansion ROM at a0300000 [disabled] [size=128K] Capabilities: [80] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [90] MSI: Enable- Count=1/1 Maskable+ 64bit+ Address: 0000000000000000 Data: 0000 Masking: 00000000 Pending: 00000000 Capabilities: [b0] MSI-X: Enable+ Count=257 Masked- Vector table: BAR=0 offset=00004000 PBA: BAR=0 offset=00006000 Capabilities: [c0] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <1us, L1 <1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset- MaxPayload 256 bytes, MaxReadReq 512 bytes DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 16GT/s, Width x4, ASPM not supported ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+ LnkCtl: ASPM Disabled; RCB 128 bytes, Disabled- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 16GT/s, Width x4 TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range B, TimeoutDis+ NROPrPrP- LTR+ 10BitTagComp+ 10BitTagReq- OBFF Via message, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 2 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit- FRS- TPHComp+ ExtTPHComp+ AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled, AtomicOpsCtl: ReqEn- LnkCap2: Supported Link Speeds: 2.5-16GT/s, Crosslink- Retimer+ 2Retimers+ DRS- LnkCtl2: Target Link Speed: 16GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+ EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest- Retimer- 2Retimers- CrosslinkRes: unsupported Capabilities: [100 v2] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC+ UnsupReq+ ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn- MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap- HeaderLog: 00000000 00000000 00000000 00000000 Capabilities: [150 v1] Device Serial Number 9c-bd-6e-56-70-01-28-cf Capabilities: [160 v1] Power Budgeting <?> Capabilities: [300 v1] Secondary PCI Express LnkCtl3: LnkEquIntrruptEn- PerformEqu- LaneErrStat: 0 Capabilities: [400 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?> Capabilities: [910 v1] Data Link Feature <?> Capabilities: [920 v1] Lane Margining at the Receiver <?> Capabilities: [9c0 v1] Physical Layer 16.0 GT/s <?> Kernel driver in use: nvme Kernel modules: nvme[root@localhost ~]#
重点看:
LnkCap: Speed 16GT/s, Width x4LnkSta: Speed 16GT/s, Width x4
- 16GT/s → PCIe Gen4
- x4 → 4条lane,带宽约 ≈ 8GB/s
模块3:PCIe Gen 版本
版本
速度
Gen3
8 GT/s
Gen4
16 GT/s
Gen5
32 GT/s
本机是 PCIe Gen4。
模块4:PCIe 带宽计算
公式:lane数 × 单lane带宽
- Gen4 x4 ≈ 8GB/s
- Gen4 x16 ≈ 32GB/s
模块5:PCIe 设备识别
命令:lspci
本机可以看到:NVMe controller、Ethernet controller、Processing accelerators(NPU)、RAID bus controller,全部都是 PCIe 设备。
模块6:PCIe 链路状态
命令:lspci -vv -s <BDF>
重点看:
- LnkCap:设备支持的最大速度和宽度
- LnkSta:当前实际运行的速度和宽度
模块7:PCIe 降速判断
如果出现:
LnkCap: 16GT/sLnkSta: 8GT/s
说明设备本来支持 Gen4,但现在只跑 Gen3,发生了降速。
常见原因:BIOS 限制、设备兼容问题、信号问题。
模块8:PCIe 拓扑
实验3:查看完整 PCIe 拓扑
命令:lspci -tv,重点观察 Root Port、Switch、NVMe、NIC、NPU。
[root@localhost ~]# lspci -tv-+-[0000:00]- +-[0000:01]-+-00.0-[02]—-00.0 Huawei Technologies Co., Ltd. Hi171x Series [iBMC Intelligent Management system chip w/VGA support] | +-01.0-[03]—-00.0 Huawei Technologies Co., Ltd. iBMA Virtual Network Adapter | +-02.0-[04]– | \\-03.0-[05]– +-[0000:07]–00.0-[08]—-00.0 Huawei Technologies Co., Ltd. Device d802 +-[0000:0b]–00.0-[0c]—-00.0 Huawei Technologies Co., Ltd. Device d802 +-[0000:2e]-+-00.0 Huawei Technologies Co., Ltd. Device a12d | +-01.0 Huawei Technologies Co., Ltd. Device a12e | +-08.0 Huawei Technologies Co., Ltd. Device a12d | +-09.0 Huawei Technologies Co., Ltd. Device a12e | \\-0b.0 Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine +-[0000:2f]-+-00.0 Huawei Technologies Co., Ltd. Device a12d | +-01.0 Huawei Technologies Co., Ltd. Device a12e | +-08.0 Huawei Technologies Co., Ltd. Device a12d | +-09.0 Huawei Technologies Co., Ltd. Device a12e | \\-0b.0 Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine +-[0000:30]-+-00.0-[31]– | +-01.0 Huawei Technologies Co., Ltd. Device a23c | +-03.0 Huawei Technologies Co., Ltd. Device a23d | +-04.0 Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA | \\-05.0 Huawei Technologies Co., Ltd. Device a12f +-[0000:32]-+-00.0-[33]– | +-01.0 Huawei Technologies Co., Ltd. Device a23c | +-03.0 Huawei Technologies Co., Ltd. Device a23d | \\-04.0 Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA +-[0000:34]-+-00.0-[35]–+-00.0 Huawei Technologies Co., Ltd. HNS GE/10GE/25GE/50GE RDMA Network Controller | | +-00.1 Huawei Technologies Co., Ltd. HNS GE/10GE/25GE/50GE RDMA Network Controller | | +-00.2 Huawei Technologies Co., Ltd. HNS GE/10GE/25GE/50GE RDMA Network Controller | | \\-00.3 Huawei Technologies Co., Ltd. HNS GE/10GE/25GE/50GE RDMA Network Controller | \\-01.0 Huawei Technologies Co., Ltd. Device a22b +-[0000:36]–00.0-[37]– +-[0000:38]-+-00.0-[39]– | +-01.0-[3a]– | +-05.0 Huawei Technologies Co., Ltd. HiSilicon AHCI HBA | +-08.0 Huawei Technologies Co., Ltd. Device a12d | \\-09.0 Huawei Technologies Co., Ltd. Device a12e +-[0000:3c]-+-00.0-[3d]– | +-01.0-[3e]– | +-08.0 Huawei Technologies Co., Ltd. Device a12d | \\-09.0 Huawei Technologies Co., Ltd. Device a12e +-[0000:41]–00.0-[42]—-00.0 Huawei Technologies Co., Ltd. Device d802 +-[0000:45]–00.0-[46]—-00.0 Huawei Technologies Co., Ltd. Device d802 +-[0000:6e]-+-00.0 Huawei Technologies Co., Ltd. Device a12d | +-01.0 Huawei Technologies Co., Ltd. Device a12e | +-08.0 Huawei Technologies Co., Ltd. Device a12d | +-09.0 Huawei Technologies Co., Ltd. Device a12e | \\-0b.0 Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine +-[0000:6f]-+-00.0 Huawei Technologies Co., Ltd. Device a12d | +-01.0 Huawei Technologies Co., Ltd. Device a12e | +-08.0 Huawei Technologies Co., Ltd. Device a12d | +-09.0 Huawei Technologies Co., Ltd. Device a12e | \\-0b.0 Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine +-[0000:70]-+-00.0-[71]– | +-01.0 Huawei Technologies Co., Ltd. Device a23c | +-03.0 Huawei Technologies Co., Ltd. Device a23d | \\-04.0 Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA +-[0000:72]-+-00.0-[73]– | +-01.0 Huawei Technologies Co., Ltd. Device a23c | +-03.0 Huawei Technologies Co., Ltd. Device a23d | \\-04.0 Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA +-[0000:74]–00.0-[75]– +-[0000:76]–00.0-[77]– +-[0000:78]-+-00.0-[79]– | +-01.0-[7a]– | +-08.0 Huawei Technologies Co., Ltd. Device a12d | \\-09.0 Huawei Technologies Co., Ltd. Device a12e +-[0000:7c]-+-00.0-[7d]– | +-01.0-[7e]– | +-08.0 Huawei Technologies Co., Ltd. Device a12d | \\-09.0 Huawei Technologies Co., Ltd. Device a12e +-[0000:80]-+-00.0-[81]—-00.0 DERA Storage Device 1515 # NVMe | +-02.0-[82]—-00.0 DERA Storage Device 1515 # NVMe | \\-04.0-[83]—-00.0 Broadcom / LSI MegaRAID 12GSAS/PCIe Secure SAS39xx # RAID +-[0000:95]–00.0-[96]—-00.0 Huawei Technologies Co., Ltd. Device d802 +-[0000:aa]–00.0-[ab]—-00.0 Huawei Technologies Co., Ltd. Device d802 +-[0000:c0]–00.0-[c1]—-00.0 Huawei Technologies Co., Ltd. Device d802 \\-[0000:d5]–00.0-[d6]—-00.0 Huawei Technologies Co., Ltd. Device d802 # Atlas NPU[root@localhost ~]#
关键发现:NVMe + RAID 共享同一个 Root Port(80)
CPU└ RootPort (80) ├ NVMe (81) ├ NVMe (82) └ RAID (83)
三个设备共享 PCIe 带宽,高负载时会互相影响。
关键发现:NIC 是一张卡四个网口
RootPort (34)└ NIC (35:00.0/00.1/00.2/00.3) # 一张 RDMA 网卡,4个网口
模块9:PCIe Root Port
Root Port 在 CPU 内部,作用是连接 CPU 和 PCIe 设备,是 CPU 与设备之间的入口。
实验:查看所有 Root Port
[root@localhost ~]# lspci | grep -i bridge01:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)01:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)01:02.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)01:03.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)07:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)0b:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)30:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)32:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)34:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)36:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)38:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)38:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)3c:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)3c:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)41:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)45:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)70:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)72:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)74:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)76:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)78:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)78:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)7c:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)7c:01.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 30)80:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)80:02.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)80:04.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)95:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)aa:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)c0:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)d5:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 30)[root@localhost ~]#
本机有大量 Root Port,原因是设备多、每个 NPU 独占一个 Root Port,互不干扰带宽。
模块10:PCIe Switch
Switch 作用是扩展 PCIe 设备,例如将 1个x16 分成 4个x4,很多 AI 服务器会用到。本机架构中 NVMe + RAID 共享同一个 Root Port,就是类似 Switch 结构——共享上行带宽。
模块11:设备 NUMA 关系
PCIe 设备通常绑定在某个 NUMA 节点,性能优化必须关注这一点。
实验4:查看 NVMe 的 NUMA 归属
[root@localhost ~]# ## nvme[root@localhost ~]# cat /sys/bus/pci/devices/0000:81:00.0/numa_node3[root@localhost ~]# cat /sys/bus/pci/devices/0000:82:00.0/numa_node3[root@localhost ~]#
两块 NVMe 都在 NUMA3。
实验4:查看 NPU 的 NUMA 归属
[root@localhost ~]# lspci | grep -i accelerator08:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)0c:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)42:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)46:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)96:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)ab:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)c1:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)d6:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d802 (rev 20)[root@localhost ~]#
8张 NPU,每张独占一个 PCIe Root Port,结构为:CPU → RootPort → NPU。
[root@localhost ~]# ## NPU[root@localhost ~]# cat /sys/bus/pci/devices/0000:08:00.0/numa_node1[root@localhost ~]# cat /sys/bus/pci/devices/0000:0c:00.0/numa_node1[root@localhost ~]# cat /sys/bus/pci/devices/0000:42:00.0/numa_node0[root@localhost ~]# cat /sys/bus/pci/devices/0000:46:00.0/numa_node0[root@localhost ~]# cat /sys/bus/pci/devices/0000:96:00.0/numa_node3[root@localhost ~]# cat /sys/bus/pci/devices/0000:ab:00.0/numa_node3[root@localhost ~]# cat /sys/bus/pci/devices/0000:c1:00.0/numa_node2[root@localhost ~]# cat /sys/bus/pci/devices/0000:d6:00.0/numa_node2[root@localhost ~]# ## nic[root@localhost ~]# cat /sys/bus/pci/devices/0000:35:00.0/numa_node1[root@localhost ~]# cat /sys/bus/pci/devices/0000:35:00.1/numa_node1[root@localhost ~]# cat /sys/bus/pci/devices/0000:35:00.2/numa_node1[root@localhost ~]# cat /sys/bus/pci/devices/0000:35:00.3/numa_node1[root@localhost ~]#
[root@localhost ~]# lscpu | grep NUMANUMA 节点: 4NUMA 节点0 CPU: 0-63NUMA 节点1 CPU: 64-127NUMA 节点2 CPU: 128-191NUMA 节点3 CPU: 192-255[root@localhost ~]#
整理出本机完整设备 NUMA 分布:
NUMA0 (CPU 0-63) → NPU (42), NPU (46)NUMA1 (CPU 64-127) → NPU (08), NPU (0c), NIC (35:00.0~00.3)NUMA2 (CPU 128-191) → NPU (c1), NPU (d6)NUMA3 (CPU 192-255) → NVMe (81), NVMe (82), RAID (83), NPU (96), NPU (ab)
这台服务器的设计规律:
CPU0 (NUMA0/1) → Compute + NetworkCPU1 (NUMA2/3) → Compute + Storage
二、本机真实 PCIe 拓扑总结
Socket0├ NUMA0:NPU×2└ NUMA1:NPU×2 + NIC×1(4网口)Socket1├ NUMA2:NPU×2└ NUMA3:NVMe×2 + RAID×1 + NPU×2
存储架构:
CPU└ RootPort (80) ├ NVMe (U.2) ├ NVMe (U.2) └ RAID (SAS) └ SAS SSD × 8
U.2 只是物理接口形式,本质通信仍然是 PCIe。U.2 NVMe 一般是 PCIe Gen4 x4,理论带宽 ≈ 8GB/s。
三、一个关键的服务器工程问题
假设 AI 任务数据路径:NVMe → CPU → NPU
本机实际情况:
- NVMe 在 NUMA3
- 部分 NPU 在 NUMA0/NUMA1/NUMA2
数据路径会变成:
NVMe↓CPU1 (NUMA3)↓跨 Socket↓CPU0↓NPU
跨 NUMA、跨 CPU,带宽下降,延迟升高。这就是 AI 服务器性能优化的核心问题,CPU 亲和性绑定要以设备 NUMA 归属为依据。
模块12:Python 自动化检测 PCIe
实验1:Python 执行 lspci
# vim check_pcie.pyimport subprocessresult = subprocess.run(["lspci"], capture_output=True, text=True)print(result.stdout)
python3 check_pcie.py
实验2:统计 NVMe 数量
import subprocessresult = subprocess.run(["lspci"], capture_output=True, text=True)nvme_count = result.stdout.count("Non-Volatile")print("NVMe数量:", nvme_count)# 输出:NVMe数量: 2
实验3:统计 NPU 数量
import subprocessresult = subprocess.run(["lspci"], capture_output=True, text=True)npu_count = result.stdout.count("Processing accelerators")print("NPU数量:", npu_count)# 输出:NPU数量: 8
实验4:统计 NIC 数量
nic_count = result.stdout.count("Ethernet")print("NIC数量:", nic_count)
完整综合脚本
import subprocessresult = subprocess.run(["lspci"], capture_output=True, text=True)nvme = result.stdout.count("Non-Volatile")npu = result.stdout.count("Processing accelerators")nic = result.stdout.count("Ethernet")print("NVMe:", nvme)print("NPU:", npu)print("NIC:", nic)
实验5:服务器自动化检测脚本(工程版)
import subprocessresult = subprocess.run(["lspci"], capture_output=True, text=True)nvme = result.stdout.count("Non-Volatile")npu = result.stdout.count("Processing accelerators")nic = result.stdout.count("Ethernet")if nvme != 2: print("NVMe数量异常")if npu != 8: print("NPU数量异常")if nic < 1: print("NIC异常")print("检查完成")
这其实就是服务器 Bringup 检测脚本,很多厂商都会写这种。
Day4 总结
完成 12 个模块,掌握以下能力:
- lspci — 识别所有 PCIe 设备
- lspci -vv -s — 查看设备详细链路状态
- LnkCap / LnkSta — 判断 PCIe Gen 版本和降速
- lspci -tv — 查看完整 PCIe 拓扑树
- lspci | grep bridge — 识别所有 Root Port
- numa_node — 查询设备 NUMA 归属
- 带宽计算 — Gen4 x4 ≈ 8GB/s,Gen4 x16 ≈ 32GB/s
- 共享带宽分析 — 多设备挂同一 Root Port 会竞争带宽
- 跨 NUMA 性能影响 — NVMe 与 NPU 不在同一 NUMA 会导致跨 Socket 传输
- Python 自动化 — 统计设备数量,写 Bringup 检测脚本
如果这篇文章对你有帮助,欢迎点赞、在看、转发。
关注「JACK的服务器笔记」,百日学习计划持续更新。
网硕互联帮助中心


评论前必须登录!
注册