PCIe网卡查看工具
今天测试部汇报了一个设备出现问题:” 8个1g电口 +8个1g光口+4个10g bp光口+4个10g非bp光口,其中有4个口没有up起来,ifconfig看不到接口“
拿到这个问题我就在想:“怎样确定是不是只有4个网口没有up?ifconfig 只是一个查看内核虚拟设备,那么物理网卡设备呢? 怎样确定这个4个口就是测试人员所说的10g非bp光口?
æÙ—所以为了弄清楚上述问题,需要确认什么信息,使用什么工具作为辅助?—-€
物理拓扑:简要情况就是 网口插入PCIe板卡
所以首先要确认PCIe板卡是否被识别!
那么有什么工具帮助查看呢?
linux 的lspci命令可以帮助查看
-
执行lspci 命令如下:lspci |grep Eth
03:00.0 Ethernet controller: Intel Corporation Device 1521 (rev 01) 03:00.1 Ethernet controller: Intel Corporation Device 1521 (rev 01) 03:00.2 Ethernet controller: Intel Corporation Device 1521 (rev 01) 03:00.3 Ethernet controller: Intel Corporation Device 1521 (rev 01) 04:00.0 Ethernet controller: Intel Corporation Device 1521 (rev 01) 04:00.1 Ethernet controller: Intel Corporation Device 1521 (rev 01) 04:00.2 Ethernet controller: Intel Corporation Device 1521 (rev 01) 04:00.3 Ethernet controller: Intel Corporation Device 1521 (rev 01) 07:00.0 Ethernet controller: Intel Corporation Device 1521 (rev 01) 07:00.1 Ethernet controller: Intel Corporation Device 1521 (rev 01) 07:00.2 Ethernet controller: Intel Corporation Device 1521 (rev 01) 07:00.3 Ethernet controller: Intel Corporation Device 1521 (rev 01) 08:00.0 Ethernet controller: Intel Corporation Device 1521 (rev 01) 08:00.1 Ethernet controller: Intel Corporation Device 1521 (rev 01) 08:00.2 Ethernet controller: Intel Corporation Device 1521 (rev 01) 08:00.3 Ethernet controller: Intel Corporation Device 1521 (rev 01) 0a:00.0 Ethernet controller: Intel Corporation Device 1533 (rev 03) 0b:00.0 Ethernet controller: Intel Corporation Device 1533 (rev 03) 0c:00.0 Ethernet controller: Intel Corporation Device 1572 (rev 02) 0c:00.1 Ethernet controller: Intel Corporation Device 1572 (rev 02) 0c:00.2 Ethernet controller: Intel Corporation Device 1572 (rev 02) 0c:00.3 Ethernet controller: Intel Corporation Device 1572 (rev 02)
可以看到 PCIe 数目不对,可知为PCIe板卡没有被识别到
这次主要想说的问题是:
0c:00.3 Ethernet controller: Intel Corporation Device 1572 (rev 02)
这些数值是什么意思??
以及lspci 还能查看那些信息; 除了lspci 还有哪些工具可以帮助分析问题
先看lspci帮助:lspci – 列出所有PCI设备
-v 使得 lspci 以冗余模式显示所有设备的详细信息。 -vv 使得 lspci 以过冗余模式显示更详细的信息 (事实上是 PCI 设备能给出的所有东西)。这些数据的确切意义没有在此手册页中解释,如果你想知道更多,请参照 /usr/include/linux/pci.h 或者 PCI 规范。 -n 以数字形式显示 PCI 生产厂商和设备号,而不是在 PCI ID 数据库中查找它们。 -x 以十六进制显示 PCI 配置空间 (configuration space) 的前64个字节映象 (标准头部信息)。此参数对调试驱动和 lspci 本身很有用。 -xxx 以十六进制显示所有 PCI 配置空间的映象。此选项只有 root 可用,并且很多 PCI 设备在你试图读取配置空间的未定义部分时会崩溃 (此操作可能不违反PCI标准,但是它至少非常愚蠢)。 -b 以总线为中心进行查看。显示所有 IRQ 号和内存地址,就象 PCI 总线上的卡看到的一样,而不是内核看到的内容。 -t 以树形方式显示包含所有总线、桥、设备和它们的连接的图表。 -s [[<bus>]:][<slot>][.[<func>]] 仅显示指定总线、插槽上的设备或设备上的功能块信息。设备地址的任何部分都可以忽略,或以“*”代替 (意味着所有值)。所有数字都是十六进制。例如:“0:”指的是在0号总线上的所有设备;“0”指的是在任意总线上0号设备的所有功能块;“0.3”选择 了所有总线上0号设备的第三个功能块;“.4”则是只列出每一设备上的第四个功能块。 -d [<vendor>]:[<device>] 只显示指定生产厂商和设备 ID 的设备。 这两个 ID 都以十六进制表示,可以忽略或者以“*”代替 (意味着所有值)。 -i <file> 使用 <file> 作为 PCI ID 数据库而不是使用默认的 /usr/share/hwdata/pci.ids。 -p <dir> 使用 <dir> 作为包含 PCI 总线信息的目录而不是使用默认的目录 /proc/bus/pci。 -m 以机器可读的方式转储 PCI 设备数据 (支持两种模式:普通和冗余),便于脚本解析。
常用问题&命令:
首先在x86系统中PCIe支持256个Bus, 每条Bus支持32个Device, 每个Device支持8个Function,所以PCIe设备关键信息组成为:DBDF(Domain,Bus,Deivce,Function)
PCIe的拓扑和Linux的PCIe ID
lspci –vt
所以使用lspci -vt 可以查看PCIe拓扑;根据拓扑就可以看出,接入几个板卡,每个板卡下面接入了多少设备
dmidecode –t slot”命令查看PCIE Slot的信息
dmidecode,读取DMI表中的数据来提取硬件信息,可查看bios,cpu,memory等信息
结合/proc和/sys可以查询硬件使用的驱动信息