如何查看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)。

相關內容