如何查看和分析显卡设备的连接状态

1. 查看显卡设备信息

使用以下命令列出 NVIDIA 显卡设备:

lspci | grep -i nvidia

查询结果示例:

01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1)

此处的显卡设备号为 01:00.0

2. 查询设备的设备号

执行以下命令查询具体设备号:

lspci -n | grep 01:00.0

结果如下,设备号为 10de:2204

01:00.0 0300: 10de:2204 (rev a1)

3. 查看设备的连接速度与位宽

使用设备号 10de:1aef 查看显卡的连接速度和位宽:

sudo lspci -n -d 10de:1aef -vvv | grep -i width

输出结果可能如下:

LnkCap:	Port #0, Speed 16GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <512ns, L1 <4us
LnkSta:	Speed 2.5GT/s (downgraded), Width x16 (ok)

4. 结果解释

  • LnkCap (Link Capabilities) 描述了设备的理论最大性能:

    • Port #0:表示第 0 号端口。

    • Speed 16GT/s:最大支持 16GT/s(适用于 PCIe 4.0)。

    • Width x16:最大支持 x16 位宽。

    • ASPM L0s L1:支持 L0s 和 L1 的电源管理状态。

    • Exit Latency:从 L0s 状态退出的延迟 <512ns,从 L1 状态退出的延迟 <4us。

  • LnkSta (Link Status) 描述了当前的实际连接状态:

    • Speed 2.5GT/s (downgraded):当前速度为 2.5GT/s(低于最大 16GT/s),可能是因为硬件限制或设置原因。

    • Width x16 (ok):链路宽度正常,为 x16。

通常情况下,LnkSta 是动态的。当设备通信时,速度会自动提升至 16GT/s:

LnkCap:	Port #0, Speed 16GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <4us
LnkSta:	Speed 16GT/s (ok), Width x16 (ok)

5. 速度单位说明

这里的速度单位不是以字节为单位,而是以 GT/s(每秒千兆传输)表示,详细信息可以参考 PCI Express 维基百科


常见问题

Q:主板支持 PCIe 5.0,但为什么插入 3090 显卡后速度只达到 PCIe 4.0?

A: GeForce RTX 3090 仅支持 PCIe 4.0,尽管主板支持 PCIe 5.0,设备的实际运行速度受显卡硬件的限制,导致速度保持在 PCIe 4.0 标准。而 GeForce RTX 4090 才支持 PCIe 5.0。