如何查看PCIe卡使用了多少个lane?

如何查看PCIe卡使用了多少个lane?

主板上的 PCI Express 插槽可以比连接的通道数更宽。例如,主板可以有 x8 插槽,但仅连接 x1 通道。

另一方面,您可以仅使用 for ex 插入卡。 4 个通道连接到主板上的 x16 插槽,他们将协商仅使用那些 x4 通道。

如何从运行系统中查看插入的PCIe卡使用了多少个通道?

答案1

好吧,看来我在第一次尝试lspci手册页时错过了它。

笔记:以 root/sudo 身份运行命令,否则会省略很多细节,包括如下所示的 Lnk 输出。

lspci -vv显示很多信息,包括链接宽度:

01:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce 8800 GT] (rev a2) (prog-if 00 [VGA controller])
            [...]
            LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Latency L0 <512ns, L1 <1us
                    ClockPM- Surprise- LLActRep- BwNot-
            LnkCtl: ASPM Disabled; RCB 128 bytes Disabled- Retrain- CommClk+
                    ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
            LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-

答案2

有时可能会更复杂一些。

例如,4 端口 GBit 以太网适配器板上有一个 PCIe 交换机。我遇到了一个问题,我发现以太网适配器连接到 x4,但当板载 PCIe 交换机仅以 x1 连接到主板时,上游出现瓶颈。

请参阅此线程以了解该问题:http://thread.gmane.org/gmane.linux.drivers.e1000.devel/15192/focus=15254

为了掌握树的连通性,请比较以下视图

sudo lspci -tv
sudo lspci -vv | grep -P "[0-9a-f]{2}:[0-9a-f]{2}\.[0-9a-f]|LnkSta:"

最后一行将向您显示总线上每个设备下方的链接状态,而没有 vv 选项的压倒性细节。

答案3

我使用以下命令。 lspci -vv提供详细输出。使用 grep 对其进行解析,仅查看“宽度”,如下所示:

lspci -vvv | egrep "0[0-9]:|Width\ "
03:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
pcilib: sysfs_read_vpd: read failed: Input/output error
        LnkCap:    Port #8, Speed 5GT/s, Width x8, ASPM L0s, Exit Latency L0s unlimited, L1 unlimited
        LnkSta:    Speed 5GT/s, Width x8, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-

注意这两个宽度x8上面的行。

如果LnkSta(链接状态)小于LnkCap(链接能力),它将显示(downgraded)在宽度旁边。这意味着 PCI 卡的功能超出了 PCI 插槽的功能。

接下来,您可以查看显示物理和电气 PCI 端口信息。物理是主板上的实际插槽尺寸。电气是插槽与芯片组的连接方式。某些主板将具有物理 x16 插槽,但仅使用 x8 通道。

dmidecode --type 9 | egrep "Usage|Type|Designation"

Designation: PCH SLOT1 PCI-E 3.0 X4(IN X8)
Type: x4 PCI Express 3 x8
Current Usage: Available

Designation这是主板制造商报告插槽的方式。 Type是电气和物理特性。 (例如,电气 x4 通道,物理插槽 x8)。

相关内容