zoukankan      html  css  js  c++  java
  • 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可以查询硬件使用的驱动信息

  • 相关阅读:
    POJ 2251 Dungeon Master
    HDU 3085 Nightmare Ⅱ
    CodeForces 1060 B Maximum Sum of Digits
    HDU 1166 敌兵布阵(树状数组)
    HDOJ 2050 折线分割平面
    HDU 5879 Cure
    HDU 1878 欧拉回路
    HDU 6225 Little Boxes
    ZOJ 2971 Give Me the Number
    HDU 2680 Choose the best route
  • 原文地址:https://www.cnblogs.com/codestack/p/14042843.html
Copyright © 2011-2022 走看看