Files
Inbox/系统基座文件/1/1.1/1.1.5 设备节点与总线映射 (Device Nodes & Bus Mapping).md
2025-12-11 07:24:36 +08:00

111 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
tags:
date created: 星期三, 十一月 19日 2025, 4:05:45 下午
date modified: 星期三, 十一月 19日 2025, 4:06:00 下午
---
# 1.1.5 设备节点与总线映射 (Device Nodes & Bus Mapping)
**1. 核心加速卡与显示设备识别 (GPU & Display Recognition)**
- **关键性**P0
- **信息解析**
- **设备状态**:成功识别到 ID 为 `1e3e:0002` 的 Processing accelerator此即 **天数智芯Iluvatar智铠 GPU**。物理总线地址为 `0001:01:00.0`
- **设备节点**`/dev/iluvatar0` 已创建,且权限为 `666` (crw-rw-rw-),这意味着用户态程序可以直接访问,驱动加载正常。
- **显示设备**:检测到 Phytium 原生显示控制器 (`0001:02:00.0`),映射为 `/dev/dri/card0`
- 探测命令与结果:
```bash
lspci -nn | grep -E "VGA|3D|Display|Processing|Accelerator"
0001:01:00.0 Processing accelerators [1200]: Device [1e3e:0002] (rev 01)
0001:02:00.0 Display controller [0380]: Phytium Technology Co., Ltd. Device [1db7:dc3e]
```
```bash
ls -lR /dev/dri /dev/vfio /dev/iluvatar* 2>/dev/null
crw-rw-rw- 1 root root 239, 0 11月 19 14:12 /dev/iluvatar0
```
**2. PCIe 链路带宽与完备性 (PCIe Link Status)**
- **关键性**P0
- **信息解析**
- **严重告警 (Network)**`dmesg` 显示网迅网卡ngbe带宽受限。
> `8.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x2 link`
> 网卡能力为 x4但实际协商或插槽仅支持 x2。**这导致物理带宽上限仅为 8Gbps无法跑满双口万兆雷达高吞吐传输存在丢包风险。**
- **链路降级 (Link Downgrade)**`lspci` 统计显示有多个设备状态为 `downgraded`。需确认 GPU (`0001:01:00.0`) 当前是跑在 `Speed 16GT/s, Width x16` 还是被降级。
- 探测命令与结果:
```bash
dmesg | grep -iE "smmu|iommu|pci|aer|firmware" | tail -n 20
[ 7.267461] ngbe 0000:0d:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x2 link at 0000:09:04.0
```
```bash
lspci -vv | grep -E "LnkCap:|LnkSta:" | grep -E "Speed|Width" | sort | uniq -c
1 LnkSta: Speed 16GT/s (downgraded), Width x8 (ok)
1 LnkSta: Speed 16GT/s (ok), Width x8 (downgraded)
```
**3. IOMMU 组别与隔离 (IOMMU Groups)**
- **关键性**P1
- **信息解析**
- **功能状态**IOMMU 已激活。
- **分组详情**
- GPU (`0001:01:00.0`) 被分配在 **Group 18**。
- 网卡 (`0000:0d:00.x`) 被分配在 **Group 19**。
- **结论**GPU 独占 Group 18这非常有利于通过 VFIO 进行直通Passthrough或用户态驱动开发隔离性良好。
- 探测命令与结果:
```bash
dmesg | grep -iE "smmu|iommu|pci|aer|firmware"
[ 6.942440] iommu: Adding device 0001:01:00.0 to group 18
[ 7.112576] iommu: Adding device 0000:0d:00.0 to group 19
```
**4. 中断亲和性与分布 (Interrupt Affinity)**
- **关键性**P1
- **信息解析**
- **NVMe 风险**NVMe SSD 的中断 (`nvme0q0`, IRQ 124) 在终端输出时刻仅触发在 CPU0 上Count=37
- **USB 干扰**:大量的 `xhci_hcd` (USB) 中断分布在 IRQ 128-146。
- **建议**:必须将雷达的高速信号采集卡中断和 NVMe 落盘中断手动绑定到不同的 CPU 核心,避免与 CPU0通常处理 OS 杂项)争抢。
- 探测命令与结果:
```bash
cat /proc/interrupts | grep -i "MSI" | head -n 20
124: 37 0 … 0 ITS-MSI 135790592 Edge nvme0q0
```
**5. 块设备 IO 调度器 (Block Device IO Scheduler)**
- **关键性**P2
- **信息解析**
- **NVMe 配置**`nvme0n1` 当前调度器为 `[none]`。
- **结论****优秀配置**。对于 NVMe SSD使用 `none` (多队列直通) 能最大程度降低 CPU 开销最适合雷达原始数据Raw Data的高速落盘场景。
- 探测命令与结果:
```bash
grep "" /sys/block/*/queue/scheduler
/sys/block/nvme0n1/queue/scheduler:[none] mq-deadline kyber bfq
```
**6. PCIe 最大有效载荷 (Max Payload Size)**
- **关键性**P2
- **信息解析**
- 多数设备协商在 `512 bytes`,但也有一部分在 `128 bytes` 或 `256 bytes`。
- 若 GPU 或采集卡的 MPS (Max Payload Size) 不匹配(如一个 128 一个 512PCIe 控制器会强制按照木桶效应(最低值)传输,导致 DMA 效率下降 15%-30%。需确认 GPU 具体协商值。
- 探测命令与结果:
```bash
lspci -vv | grep -E "DevCtl:|DevCap:" | grep -E "MaxPayload|MaxReadReq" | sort | uniq -c
15 DevCap: MaxPayload 128 bytes…
23 DevCap: MaxPayload 512 bytes…
```