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