Как проверить, сколько линий использует карта PCIe?

Как проверить, сколько линий использует карта PCIe?

Слоты PCI Express на материнской плате могут быть шире, чем количество подключенных линий. Например, материнская плата может иметь слот x8 с подключенной только линией x1.

С другой стороны, вы можете вставить карту, использующую, например, только 4 линии, в слот x16 на материнской плате, и она будет договариваться об использовании только этих линий x4.

Как проверить на работающей системе, сколько линий используют вставленные карты PCIe?

решение1

Ладно, похоже, я пропустил это с первой попытки в lspciman-страницах.

Примечание:Запустите команду как 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 ethernet-адаптеры имеют встроенный коммутатор PCIe. Я столкнулся с проблемой, когда обнаружил, что адаптер Ethernet подключен к 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-

Обратите внимание на дваШирина х8строки выше.

Если LnkSta(Link Status) меньше LnkCap(Link Capability), он будет отображаться (downgraded)рядом с Width. Это означает, что карта 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).

Связанный контент