我可以使用以下命令获取提供网络接口的设备的供应商和设备 ID /sys/class/net/
:
$ cat /sys/class/net/p4p2/device/vendor /sys/class/net/p4p2/device/device
0x15b3
0x1013
然后我可以lspci
向我显示有关该设备的信息:
$ lspci -d 0x15b3:0x1013
82:00.0 Infiniband controller: Mellanox Technologies MT27700 Family [ConnectX-4]
82:00.1 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]
所以它是双端口的。在这种情况下,我碰巧知道该设备p4p2
是以太网端,但是是否有信息/sys/class/net/<dev>
将其链接到82:00.1
条目?或者其他不需要的方式sudo
?
答案1
尝试realpath /sys/class/net/<dev>
或realpath /sys/class/net/<dev>/device
。
这些应该是指向 的符号链接/sys/devices/...
,并且目标路径应包含 PCI ID。
如果您只需要 PCI ID 部分,请尝试:
basename $(realpath /sys/class/net/<dev>/device)
答案2
关于 Mellanox HCA
lspci
如果不sudo
使用 PCI 地址,您无法挖掘太多信息:sudo lspci -s 82:00.0 -vvv
将为您提供 HCA 部件号、序列号、PCI 总线宽度等等
大多数驱动程序相关信息位于/sys/bus/pci/devices/<pci_addr>/infiniband>
您还可以使用利什卡公用事业。它向您展示了很多有用的信息
示例来自维基百科:
#lshca
---------------------------------------------------------------------------------------------------
Dev #1
Desc: Mellanox Technologies MT27800 Family [ConnectX-5]
PN: MCX556A-ECAT rev. A3
PSID: MT_0000000008
SN: MT.............
FW: 16.28.2006
Tempr: 45
---------------------------------------------------------------------------------------------------
PCI_addr | RDMA | Net | Numa | IpStat | Link | Rate | LnkCapWidth | LnkStaWidth | HCA_Type
---------------------------------------------------------------------------------------------------
0000:81:00.0 | mlx5_2 | ib2 | 1 | up_ip4 | IB | 100 | x16 G3 | x8 >!< | MT4119
0000:81:00.1 | mlx5_3 | p2p2 | 1 | up_ip46 | Eth | 100 | x16 G3 | x8 >!< | MT4119
---------------------------------------------------------------------------------------------------
免责声明,我是lshca
作者