云计算百科
云计算领域专业知识百科平台

《服务器测试百日学习计划——Day4:PCIe 架构与服务器设备拓扑》

服务器测试百日学习计划——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的服务器笔记」,百日学习计划持续更新。


赞(0)
未经允许不得转载:网硕互联帮助中心 » 《服务器测试百日学习计划——Day4:PCIe 架构与服务器设备拓扑》
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!