掌桥专利:专业的专利平台
掌桥专利
首页

一种PCIe设备检测方法及装置

文献发布时间:2023-06-19 16:04:54



技术领域

本申请涉及设备检测领域,尤其涉及一种PCIe设备检测方法及装置。

背景技术

在整机产品测试和生产测试中,需对产品进行高负载和可靠性测试,然后检测测试过程中是否出现部件丢失等问题。

特别在GPU服务器测试项目中,通常会对前后两次开机生成的PCIe设备配置表进行对比,检测设备是否出现掉卡的问题。

对于测试中生成的设备配置表,业界通常采用动态列表的方式,然而该方式需要对生成的列表型配置表进行增删的操作时,需要对整个列表进行前后移动操作,操作量大,降低测试效率,并且创建列表型配置表时需要预先分配空间,若预先分配的空间过大则导致大量空间被闲置,浪费不必要的内存资源;若预先分配的空间过小容易导致内存溢出,增加测试风险。

发明内容

有鉴于此,本申请提供一种PCIe设备检测方法及装置,用于解决采用动态列表进行测试时引入的列表型配置表进行增删操作时操作量大,并且创建列表型配置表需要预先分配空间的问题。

具体地,本申请是通过如下技术方案实现的:

根据本申请实施例的第一方面,提供一种一种PCIe设备检测方法,所述方法应用于服务器,所述服务器由至少一个PCIe设备组成;所述方法包括:

在进行PCIe设备测试时,基于所述服务器内各在线PCIe设备的拓扑结构生成第一链表型配置表;所述第一链表型配置表由不同节点组成,不同节点表示不同PCIe设备,每一节点至少包含数据和指针,所述数据为该节点表示的PCIe设备的PCIe设备信息,所述指针用于指向下一节点;

在所述PCIe设备测试的指定步骤或者在所述PCIe设备测试执行完之后,重启所述服务器,在重启之后基于所述服务器内各在线PCIe设备的拓扑结构生成第二链表型配置表;

依据第一链表型配置表和所述第二链表型配置表进行异常PCIe设备检测。

可选的,所述依据第一链表型配置表和所述第二链表型配置表进行异常PCIe设备检测包括:

比较第一链表型配置表和第二链表型配置表的长度,若两者长度一致,则确定当前不存在异常PCIe设备,若两者不一致,则确定存在异常PCIe设备;其中,所述异常PCIe设备至少是指存在第一链表型配置表但不存在第二链表型配置表中的节点所表示的PCIe设备。

可选的,该方法进一步包括:

当新增在线PCIe设备时,在当前链表型配置表中确定目标位置,所述当前链表型配置表为所述第一链表型配置表或者所述第二链表型配置表,目标位置用于表示记录该新增PCIe设备的位置;

若所述目标位置处于当前链表型配置表中任两个节点之间的位置,则在所述目标位置新增加当前表示该新增PCIe设备的当前节点,并将当前节点的上一个节点的指针指向该当前节点,将当前节点的指针指向下一个节点。

可选的,该方法进一步包括:

当删除在线PCIe设备时,在当前链表型配置表中确定用于表示该PCIe设备的当前节点,将该当前节点的上一个节点的指针指向该当前节点的下一节点,并删除该当前节点。

可选的,所述PCIe设备测试为压力测试;

所述指定步骤为所述压力测试的最后一个步骤。

根据本申请实施例的第二方面,提供一种PCIe设备检测装置,所述装置应用于服务器,所述服务器由至少一个PCIe设备组成;所述装置包括:

生成第一配置表单元:用于在进行PCIe设备测试时,基于所述服务器内各在线PCIe设备的拓扑结构生成第一链表型配置表;所述第一链表型配置表由不同节点组成,不同节点表示不同PCIe设备,每一节点至少包含数据和指针,所述数据为该节点表示的PCIe设备的PCIe设备信息,所述指针用于指向下一节点;

生成第二配置表单元:用于在所述PCIe设备测试的指定步骤或者在所述PCIe设备测试执行完之后,重启所述服务器,在重启之后基于所述服务器内各在线PCIe设备的拓扑结构生成第二链表型配置表;

异常检测单元:用于依据第一链表型配置表和所述第二链表型配置表进行异常PCIe设备检测。

可选的,所述异常检测单元依据第一链表型配置表和所述第二链表型配置表进行异常PCIe设备检测包括:

比较第一链表型配置表和第二链表型配置表的长度,若两者长度一致,则确定当前不存在异常PCIe设备,若两者不一致,则确定存在异常PCIe设备;其中,所述异常PCIe设备至少是指存在第一链表型配置表但不存在第二链表型配置表中的节点所表示的PCIe设备。

可选的,该装置进一步包括:

新增设备处理单元:用于当新增在线PCIe设备时,在当前链表型配置表中确定目标位置,所述当前链表型配置表为所述第一链表型配置表或者所述第二链表型配置表,目标位置用于表示记录该新增PCIe设备的位置;

若所述目标位置处于当前链表型配置表中任两个节点之间的位置,则在所述目标位置新增加当前表示该新增PCIe设备的当前节点,并将当前节点的上一个节点的指针指向该当前节点,将当前节点的指针指向下一个节点。

可选的,该装置进一步包括:

删除设备处理单元:用于当删除在线PCIe设备时,在当前链表型配置表中确定用于表示该PCIe设备的当前节点,将该当前节点的上一个节点的指针指向该当前节点的下一节点,并删除该当前节点。

可选的,所述生成第一配置表单元中PCIe设备测试为压力测试;

所述生成第二配置表单元中指定步骤为所述压力测试的最后一个步骤。

由以上描述可以看出,本申请中通过服务器中各PCIe设备的拓扑结构生成链表型配置表,使得需要对配置表进行增删操作时,不需要对整个列表进行前后移动操作,减少了操作量,提高了测试效率。并且链表型配置表由表示不同PCIe设备的不同节点组成,配置表的每次创建是通过当前在线的PCIe设备实时分配内存的,每个节点都有指向下一个内存地址,不需要连续的内存,不需要事先指定内存空间大小。

进一步的,本申请中第一链表型配置表和第二链表型配置表都是由表示不同PCIe设备的不同节点组成,当两者不一致时,可以通过链表型配置表的数据结构,快速定位发生故障的节点,以确定对应的PCIe设备,这提高了检测时定位问题的效率,降低了人力成本。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为本申请现有技术中的列表型配置表的结构示意图;

图2为本申请中PCIe设备检测方法的流程图;

图3为本申请链表型配置表的结构示意图;

图4为本申请链表型PCIe设备内存结构示例图;

图5为本申请链表型配置表新增PCIe设备的操作原理图;

图6为本申请链表型配置表删除PCIe设备的操作原理图;

图7为本申请链表型PCIe设备检测流程图;

图8为本申请实施例的装置结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种器件,但这些信息不应限于这些术语。这些术语仅用来将同一类型的器件彼此区分开。例如,在不脱离本申请范围的情况下,第一器件也可以被称为第二器件,类似地,第二器件也可以被称为第一器件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

为了使本领域技术人员更好地理解本申请实施例提供的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。

首先,简单介绍一下现有技术中采用列表型配置表进行服务器检测的方法。该方法需要预先给列表型配置表分配足够的空间,以免造成内存溢出,再将遍历出该服务器的所有部件信息挨个存放到该配置表中,每个部件信息都以数组的形式存放,用于生成标准配置表。

在对该服务器进行一次压力测试后,程序将本次上电的设备信息遍历并与标准配置表进行一一检测。列表型配置表如下图1所示,每次检测以表头为始、表尾为终,严格按照数组下标顺序进行一一配对,在出现不匹配的问题后停止测试。

然而上述通过列表型配置表进行服务器检测的方法,存在下列几个问题:

一、当需要对生成的列表型配置表进行增删的操作时,需要对整个列表型配置表进行前后移动操作,操作量大,降低测试效率。

二、在创建列表型配置表时需要预先分配空间,若估计的过大则导致大量空间被闲置,浪费不必要的内存资源;若估计的过小容易导致内存溢出,增加测试风险。

三、使用列表型配置表是以数组的形式保存的线性表,无法与PCIe拓扑一一对应,不能完整体现服务器PCIe链路的拓扑情况。增加了问题定位难度,导致定位成本增加。

针对上述问题,本发明实施例提供一种PCIe设备检测方法,该方法中,通过基于服务器内各PCIe设备的拓扑结构生成链表型配置表代替列表型配置表进行设备测试,需要对配置表进行增删操作时,不需要对整个配置表进行前后移动操作,减少了操作量,提高了测试效率。并且链表型配置表由表示不同PCIe设备的不同节点组成,配置表的每次创建是通过当前在线的PCIe设备实时分配内存的,每个节点都有指向下一个内存地址,不需要连续的内存,不需要事先指定内存空间大小。

并且本申请中可以通过链表型配置表的数据结构,快速定位节点,以确定对应丢失或者拔除的PCIe设备,这提高了检测时定位问题的效率,降低了人力成本。

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述:

参见图2,为本发明实施例示出的一种PCIe设备检测方法的流程图,该流程应用于服务器,该服务器由至少一个PCIe设备组成。

如图2所示,该流程可包括以下步骤:

步骤S201,在进行PCIe设备测试时,基于上述服务器内各在线PCIe设备的拓扑结构生成第一链表型配置表。

在本实施例中,该第一链表型配置表由不同节点组成,不同节点表示不同PCIe设备,该第一链表型配置表中不同的节点顺序可为其表示的各在线PCIe设备的连接顺序,每一节点至少包含数据和指针,该数据为该节点表示的PCIe设备的PCIe设备信息,该指针用于指向下一节点。

参见图3,图3中的链表型配置表通过一个个节点组成,每个节点包含数据和指针两个单元,数据用于记录PCIe设备的0e、0f、11等bus号,指针域用于存放指向PCIe链路中下一个设备的指针。Head和tail两个列表用于存放PCIe设备链路中的第一个设备号和最后一个设备号。

在本实施例中,上述服务器内的PCIe设备包括该服务器中主板上的芯片、网卡、硬盘、GPU等设备,在进行PCIe设备测试时,例如工作人员通过脚本或者命令开启设备测试时,服务器通过当前在线的PCIe设备组成的拓扑结构创建第一链表型配置表,该第一链表型配置表在创建时实时分配内存,并且该配置表中每个节点都有指向下一个内存地址,如图4所示,由设备节点1指向下一个设备节点2、设备节点2指向下一个设备节点3,通过此方法创建配置表不需要连续的内存,而本实施例中采用动态分配内存空间的方法,不用事先指定内存空间大小。

步骤S202,在上述PCIe设备测试的指定步骤或者在上述PCIe设备测试执行完之后,重启上述服务器,在重启之后基于该服务器内各在线PCIe设备的拓扑结构生成第二链表型配置表。

在本实施例中,第二链表型配置表的结构也如图3所示。而本实施例中对该服务器进行重启时,可能会导致该服务器中的部分PCIe设备掉线。而在重启之后基于该服务器内各在线PCIe设备的拓扑结构生成的第二链表型配置表,则是代表了重启之后该服务器中各在线PCIe设备的连接关系。

可选的,上述PCIe设备测试为压力测试;

上述指定步骤为该压力测试的最后一个步骤。

在本实施例中,将步骤S202中的指定步骤设置为压力测试中的最后一个步骤,而在S202中该步骤之后是重启服务器。这实现了在测试过程中上述服务器进行反复重启,以对该服务器中的PCIe设备进行压力测试,检测在服务器反复重启的过程中是否会出现PCIe设备丢失的问题。

步骤S203、依据上述第一链表型配置表和上述第二链表型配置表进行异常PCIe设备检测。

在本实施例中,工作人员可以对第一链表型配置表进行检测,当确定该服务器中所有PCIe设备在线时再生成第一链表型配置表,以确保该第一链表型配置表记录了该服务器内所有PCIe设备的数据信息。此时将该服务器重启之后生成的第二链表型配置表与第一链表型配置表进行对比,当两个配置表中数据不一致时,则可以确定服务器重启后部分PCIe设备丢失。并且通过将两个配置表进行对比,还可以通过第二链表型配置表相比于第一链表型配置表时缺少的节点中的数据快速确定丢失的PCIe设备。

可选的,上述依据上述第一链表型配置表和上述第二链表型配置表进行异常PCIe设备检测包括:

比较第一链表型配置表和第二链表型配置表的长度,若两者长度一致,则确定当前不存在异常PCIe设备,若两者不一致,则确定存在异常PCIe设备。

在本实施例中,上述异常PCIe设备至少是指存在第一链表型配置表但不存在第二链表型配置表中的节点所表示的PCIe设备。

当不需要确定具体丢失的PCIe设备时,可以通过比较第一链表型配置表和第二链表型配置表的长度进行异常PCIe设备检测,而不需要对比两个配置表中的具体内容,只要两个配置表长度不一致,则可以确定服务器重启后必然存在PCIe设备丢失,这可以增加设备检测的效率。

至此,完成图2所示流程。

通过图2所示流程可以看出,本发明实施例中,通过表示不同PCIe设备的节点组成链表型配置表,配置表的每次创建是通过当前在线的PCIe设备实时分配内存的,每个节点都有指向下一个内存地址,不需要连续的内存,不需要事先指定内存空间大小,这解决了通过列表型配置表进行设备检测时需要预先分配空间导致的内存资源浪费或者内存溢出的风险。

并且本申请实施例中第一链表型配置表和第二链表型配置表两者不一致时,可以通过链表型配置表的数据结构,快速定位发生故障的节点,以确定对应的PCIe设备,这提高了检测时定位问题的效率,降低了人力成本。

可选的,上述方法进一步包括:

当新增在线PCIe设备时,在当前链表型配置表中确定目标位置,该当前链表型配置表为所述第一链表型配置表或者所述第二链表型配置表,目标位置用于表示记录该新增PCIe设备的位置。

在本实施例中,当该服务器在设备检测中新增PCIe设备时,需要对链表型配置表增加PCIe设备信息。具体方法如图5所示,当在PCIe设备A和PCIe设备B中间增加PCIe设备C时,只需要将操作位置设备C的上一个节点设备A的节点指针指向设备C的bus号09,并将设备C的指针指向设备B的bus号0e,并不需要移动所有节点。

可选的,上述方法进一步包括:

当删除在线PCIe设备时,在当前链表型配置表中确定用于表示该PCIe设备的当前节点,将该当前节点的上一个节点的指针指向该当前节点的下一节点,并删除该当前节点。

在本实施例中,当该服务器在设备检测中拔取PCIe设备、或出现PCIe设备丢失时,需要对链表型配置表增加PCIe设备信息。具体方法如图6所示,当在PCIe设备A和PCIe设备C中间拔取PCIe设备B时,只需要将设备A的节点指针指向设备B的下一个设备节点,也就是设备C的bus号11,并不需要移动所有节点。

通过上述图5、图6两个实施例可以看出,对链表型配置表进行增删操作时,不需要像列表型配置表对整个配置表进行前后移动操作,这减少了操作量,增加了测试效率。

下面通过一个具体的例子对上述方法进行说明,如图7所示:

步骤S701,在压力测试开始时,生成链表型PCIe设备配置表1。

步骤S702,进行一次重启测试,开机后生成链表型PCIe设备配置表2。

在本步骤中,若服务器重启后该服务器中的PCIe设备出现了卡掉问题,则会生成内容不同于配置表1的配置表2,若服务器重启后该服务器中的PCIe设备未出现卡掉问题,则会生成内容与配置表1相同的配置表2。

步骤S703,将配置表1和配置表2进行对比,若PCIe设备表2与PCIe设备表1相同,则继续重启测试;若当某次开机中某链路节点2设备丢失,此时检测设备表与标准设备表不符,停止测试。

在本实施例中,通过将压力测试开始时生成的链表型PCIe设备配置表1与服务器重启后生成的链表型PCIe设备配置表2进行对比,对比结果一致则继续进行测试,不一致则通过PCIe设备的拓扑结构快速定位丢失的位置。

至此,完成本发明具体实施例的描述。

以上对本发明实施例提供的方法进行了描述,下面对本发明实施例提供的装置进行描述:

参见图8所示,本申请还提供了一种PCIe设备检测装置,应用于服务器,所述服务器由至少一个PCIe设备组成;所述装置包括:

生成第一配置表单元801:用于在进行PCIe设备测试时,基于所述服务器内各在线PCIe设备的拓扑结构生成第一链表型配置表;所述第一链表型配置表由不同节点组成,不同节点表示不同PCIe设备,每一节点至少包含数据和指针,所述数据为该节点表示的PCIe设备的PCIe设备信息,所述指针用于指向下一节点;

生成第二配置表单元802:用于在所述PCIe设备测试的指定步骤或者在所述PCIe设备测试执行完之后,重启所述服务器,在重启之后基于所述服务器内各在线PCIe设备的拓扑结构生成第二链表型配置表;

异常检测单元803:用于依据第一链表型配置表和所述第二链表型配置表进行异常PCIe设备检测。

可选的,所述异常检测单元803依据第一链表型配置表和所述第二链表型配置表进行异常PCIe设备检测包括:

比较第一链表型配置表和第二链表型配置表的长度,若两者长度一致,则确定当前不存在异常PCIe设备,若两者不一致,则确定存在异常PCIe设备;其中,所述异常PCIe设备至少是指存在第一链表型配置表但不存在第二链表型配置表中的节点所表示的PCIe设备。

可选的,该装置进一步包括:

新增设备处理单元804:用于当新增在线PCIe设备时,在当前链表型配置表中确定目标位置,所述当前链表型配置表为所述第一链表型配置表或者所述第二链表型配置表,目标位置用于表示记录该新增PCIe设备的位置;

若所述目标位置处于当前链表型配置表中任两个节点之间的位置,则在所述目标位置新增加当前表示该新增PCIe设备的当前节点,并将当前节点的上一个节点的指针指向该当前节点,将当前节点的指针指向下一个节点。

可选的,该装置进一步包括:

删除设备处理单元805:用于当删除在线PCIe设备时,在当前链表型配置表中确定用于表示该PCIe设备的当前节点,将该当前节点的上一个节点的指针指向该当前节点的下一节点,并删除该当前节点。

可选的,所述生成第一配置表单元801中PCIe设备测试为压力测试;

所述生成第二配置表单元802中指定步骤为所述压力测试的最后一个步骤。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置或系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本申请方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 计算机、PCIE设备以及PCIE设备的心跳检测方法
  • PCIe设备在位检测方法和PCIe设备
技术分类

06120114689513