主板上的 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)。