CN117707815A - 故障链路确定方法及装置 - Google Patents
故障链路确定方法及装置 Download PDFInfo
- Publication number
- CN117707815A CN117707815A CN202311435562.4A CN202311435562A CN117707815A CN 117707815 A CN117707815 A CN 117707815A CN 202311435562 A CN202311435562 A CN 202311435562A CN 117707815 A CN117707815 A CN 117707815A
- Authority
- CN
- China
- Prior art keywords
- information
- bus
- equipment
- link
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000013461 design Methods 0.000 claims abstract description 22
- 238000004590 computer program Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000004807 localization Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种故障链路确定方法及装置,涉及计算机技术领域,该方法包括:在检测到完成超时故障的情况下,解析事务层数据包的包头,得到事务层数据包对应的数据包类型;根据数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,第一设备信息为第一类型或第一设备,第一类型表征发送端为核心处理器,第二设备信息为第二类型或第二设备,第二类型表征接收端为核心处理器;根据第一设备信息和第二设备信息,确定完成超时故障设计的故障链路。无需额外查看日志即可定位故障,加快了定位的速度;可以使非专业人员定位故障,降低了故障定位的门槛;在复杂PCIE拓扑的情况下可以更直观查看故障的信息。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种故障链路确定方法及装置。
背景技术
如今核心处理器(Central Processing Unit,CPU)支持的总线拓扑根(RootPort)越来越多,同时人工智能(Artificial Intelligence,AI)服务器、存储服务器这类多总线(Peripheral Component Interconnect Express,PCIE)设备的服务器的兴起,使得现在的机器大多存在PCIE拓扑复杂、使用大量PCIE设备、有多级交换机(Switch)和网桥(Bridge)的现象。
对于PCIE拓扑复杂的机器,在压力较大或压力复杂的情况下,部分设备可能出现无法及时响应或PCIE链路压力太大导致传输时间较长,此时Completion Timeout故障就很容易出现。这种故障往往对系统有很大的影响,轻则大幅度影响系统性能,重则直接出现宕机。所以相关人员对这个故障的解析和定位尤为重要。
但是故障的报错端并不是故障源,真正的故障源在接收端或者发送端与接收端之间的PCIE链路上。因此为了解析故障需要专业人员针对PCIE高级错误报告(AdvancedError Reporting,AER)特定的寄存器进行专业解析,并对照整体PCIE链路来找到对应的设备和中间的PCIE链路,然后针对这个设备和中间的PCIE链路进行分析。
然而这样手动解析需要收集大量日志和专业人员参与,这样非常不利于进行快速定位和处理。而且此类问题跟软硬件环境均有关联,复现难度大、复现概率极低甚至以后无法复现,所以一个快速高效的定位手段尤为重要。
发明内容
本申请的目的是提供一种故障链路确定方法及装置,用于解决现有技术中故障链路定位难、准确率低的问题。
本申请提供一种故障链路确定方法,包括:
在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;
根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;
根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。
可选地,所述根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,包括:
在所述数据包类型为内存读类型的情况下,从所述总线拓扑信息中,获取所述发送端的第一标识符信息和所述接收端对应的系统内存地址;
若所述第一标识符信息中的第一总线号为指定总线号,则将所述发送端确定为核心处理器,所述第一设备信息为第一类型,所述指定总线号为所述核心处理器指定的总线号;
若所述第一标识符信息中的第一总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第一标识符信息,查找所述发送端对应的第一设备,所述第一设备信息为第一设备;
若所述系统内存地址不处于所述总线拓扑信息中的总线拓扑根资源区间,则将所述接收端确定为核心处理器,所述第二设备信息为第二类型;
若所述系统内存地址处于所述总线拓扑根资源区间,则遍历所述总线拓扑信息中总线底层设备对应的基址寄存器资源区间,确定所述接收端对应的第二设备,所述第二设备信息为第二设备。
可选地,所述根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,包括:
在所述数据包类型为配置空间读类型的情况下,从所述总线拓扑信息中,获取所述发送端的第一标识符信息和所述接收端对应的第二标识符信息;
若所述第一标识符信息中的第一总线号为所述指定总线号,则将所述发送端确定为核心处理器,所述第一设备信息为第一类型;
若所述第一标识符信息中的第一总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第一标识符信息,查找所述发送端对应的第一设备,所述第一设备信息为第一设备;
若所述第二标识符信息中的第二总线号为所述指定总线号,则将所述接收端确定为核心处理器,所述第二设备信息为第二类型;
若所述第二标识符信息中的第二总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第二标识符信息,查找所述接收端对应的第二设备,所述第二设备信息为第二设备。
可选地,所述根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路,包括:
在所述第一设备信息为第一类型,且第二设备信息为第二设备的情况下,从所述接收端开始查找总线拓扑根,并将所述第二设备到所述总线拓扑根之间的第一链路确定为故障链路。
可选地,所述根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路,包括:
在所述第一设备信息为第一设备,且第二设备信息为第二类型的情况下,从所述发送端开始查找所述总线拓扑根,并将所述第一设备到所述总线拓扑根之间的第二链路确定为故障链路。
可选地,所述根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路,包括:
在所述第一设备信息为第一设备,且第二设备信息为第二设备的情况下,从所述接收端开始查找总线拓扑根,并确定所述第二设备到所述总线拓扑根的第一链路,并从所述发送端开始查找所述总线拓扑根,并确定所述第一设备到所述总线拓扑根的第二链路;
确定所述第一链路与所述第二链路中的各重复总线节点;
获取各所述重复总线节点的第三总线号,将所述第三总线号最大的重复总线节点确定为目标总线节点;
删除所述第二链路中所述目标总线节点的下一总线节点到所述总线拓扑根的部分链路,得到第三链路;并删除所述第一链路中所述总线拓扑根到所述目标总线节点的部分链路,得到第四链路;
将所述第四链路拼接在所述第三链路的链尾,得到故障链路。
可选地,所述方法还包括:
在所述第一设备信息为第一类型,且第二设备信息为第二设备的情况下,反向记录所述故障链路中各总线节点的总线节点信息;
在所述第一设备信息为第一设备,且第二设备信息为第二类型的情况下,正向记录所述故障链路中各总线节点的总线节点信息;
在所述第一设备信息为第一设备,且第二设备信息为第二设备的情况下,记录所述故障链路中各总线节点的总线节点信息;
将各所述总线节点信息,按照所述发送端至所述接收端的顺序进行显示,并根据所述总线拓扑信息中的设备型号信息显示各设备的名称,所述设备型号信息包括厂商编号信息和/或设备编号信息。
可选地,所述在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型之前,还包括:
获取总线拓扑信息;
所述获取总线拓扑信息,包括:
对于总线节点,以双向链表的形式保存标识符信息和设备型号信息;
对于总线拓扑根,保存标识符信息、设备型号信息和内存映射输入输出信息;
对于非总线拓扑根,保存标识符信息和设备型号信息,以及所述非总线拓扑根对应的总线拓扑根的标识符信息;
对于总线底层设备,保存标识符信息、设备型号信息、总线拓扑根资源区间和所述总线底层设备对应的总线拓扑根的标识符信息。
本申请还提供一种故障链路确定装置,包括:
解析模块,被配置为在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;
第一确定模块,被配置为根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;
第二确定模块,被配置为根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。
本申请还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述故障链路确定方法的步骤。
本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述故障链路确定方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述故障链路确定方法的步骤。
本申请提供的故障链路确定方法及装置,通过在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。1.可以无需额外查看日志即可定位故障,加快了定位的速度;可以使非专业人员定位故障,降低了故障定位的门槛;在复杂PCIE拓扑的情况下可以更直观查看故障的信息。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的故障链路确定方法的流程示意图之一;
图2是本申请提供的故障链路确定方法的流程示意图之二;
图3是本申请提供的故障链路确定装置的结构示意图;
图4是本申请提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
PCIE(Peripheral Component Interconnect Express)是指高速串行计算机扩展总线标准,即总线。
PCIE SPEC(Specification),即PCIE规范文档。
TLP(Transaction Layer Packet)是指PCIE事务层的数据包,即事务层数据包。
Completion Timeout是指PCIE节点收到一个TLP后,并没有在指定的时间内完成对该包的处理和回复响应,从而导致系统的错误处理机制进入超时状态,即完成超时故障。
TLP类型是指数据包类型,包括内存读(MRd)类型和配置空间读(CfgRd)类型,配置空间读类型包括CfgRd0(配置空间读0)类型和CfgRd1(配置空间读1)类型。
AER(Advanced Error Reporting,AER)是指PCIE高级错误报告。
TLP Header是指TLP的头或包头,记录了TLP的类型、发送端信息、接收端信息等。
AER Header Log是AER中的一段寄存器,记录了部分故障的PCIE TLP Header。
BIOS(Basic Input Output System)是指基本输入输出系统。
ID(Identity Document)是指唯一编码或专属号码等。
VID/DID(Vendor ID/Device ID)信息是指设备型号信息,其中,VID是PCIE设备的厂商编号,DID是指PCIE设备的设备编号,存在于PCIE配置空间中。
MMIO(Memory-mapped I/O)是指内存映射I/O,即内存映射输入输出信息。
Bar(Base Address Register)资源区间是指基址寄存器资源区间,反映了PCIE设备需要的IO/MMIO资源。
BDF(Bus/Device/Function)是指标识符信息,即PCIE每一个功能的唯一的标识符,可以反映具体的物理位置。
Bus号是指BDF中的Bus信息,即当前PCIE设备在PCIE系统结构中被分配的总线号,简称为总线号。
RootPort是指PCIE拓扑的根,即总线拓扑根。
End Device是指PCIE拓扑的最底层设备,即总线底层设备。
Bridge是指PCIE桥设备,即网桥。
Switch是指PCIE交换机,即交换机。
PCIE Port是指总线节点,包括RootPort、End Device、Bridge和Switch等PCIE节点。
根据PCIE SPEC,Completion Timeout是一种事务层的故障,是发送端发送读请求(Read Request)并启动定时器,但是在定时器的规定时间内发送端没有收到来自接收端的完成信息(Completion Message),此时发送端自身记录Completion Timeout故障。也就是说Completion Message故障的故障源是接收端或者中间的PCIE链路,但是故障信息记录在发送端。针对Completion Timeout故障,现有技术中只有最简单的定位和分析,如方法一和方法二。
方法一、RootPort的Completion Timeout故障需要找对应End Device。此方法在PCIE拓扑复杂的机器上会存在多级Bridge、Switch和大量End Device,这些PCIE Port均可能是故障源而不是简单的去找End Device。
方法二、End device的Completion Timeout需要找对应CPU。此方法在PCIE拓扑复杂的机器上并不准确,故障源可能是CPU,也有可能是与End Device同RootPort的Bridge、Switch或End Device。
另外,在PCIE SPEC中有针对于AER Header Log及PCIE TLP Header的介绍,并且AER Header Log可以用于显示Completion Timeout的PCIE TLP Header,这样就可以通过PCIE TLP Header去找到该TLP的接收端,也就是Completion Timeout故障的源头。
因此,本申请提供的故障链路确定方法,基于PCIE SPEC中AER Header Log寄存器的描述和PCIE TLP Header的解析规范以及服务器BIOS对于系统内存分布和PCIE拓扑信息收集及整理,创新性的将这些进行结合,并按一定规则在BMC下展示出来,让相关人员可以从BMC日志中直接看到整体的故障信息和涉及的PCIE链路信息,加快了定位的速度和效率,也可以避免因为非专业性导致故障定位出现差错,大大减少了维护的时间成本和人力成本。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的故障链路确定方法进行详细地说明。
图1是本申请提供的故障链路确定方法的流程示意图之一,如图1所示,本申请实施例提供的一种故障链路确定方法,该方法可以包括下述步骤101至步骤103:
步骤101:在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型。
实际应用中,当检测到故障为Completion Timeout时,AER Header Log即为该Completion Timeout对应的PCIE TLP Header,然后按照PCIE SPEC中的PCIE TLP Header的格式解析PCIE TLP Header的TLP类型(数据包类型),如可以是MRd类型,也可以是CfgRd0/CfgRd1类型。
步骤102:根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器。
进一步地,根据数据包类型和预先获取的PCIE拓扑信息,对Completion Timeout对应的发送端进行分析,确定发送端对应的第一设备信息,即第一类型或者第一设备。
同样地,根据数据包类型和预先获取的总线拓扑信息,对Completion Timeout对应的接收端进行分析,确定接收端对应的第二设备信息,即第二类型或者第二设备。
步骤103:根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。
在获取到第一设备信息和第二设备信息的基础上,进一步地,根据第一设备信息和第二设备信息,以及PCIE拓扑信息进行定位,确定故障涉及的PCIE链路,即故障链路。
本申请提供的故障链路确定方法,通过在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。1.可以无需额外查看日志即可定位故障,加快了定位的速度;可以使非专业人员定位故障,降低了故障定位的门槛;在复杂PCIE拓扑的情况下可以更直观查看故障的信息。
在本申请一个或更多个可选的实施例中,所述根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,具体实现过程可以如下:
在所述数据包类型为内存读类型的情况下,从所述总线拓扑信息中,获取所述发送端的第一标识符信息和所述接收端对应的系统内存地址;
若所述第一标识符信息中的第一总线号为指定总线号,则将所述发送端确定为核心处理器,所述第一设备信息为第一类型,所述指定总线号为所述核心处理器指定的总线号;
若所述第一标识符信息中的第一总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第一标识符信息,查找所述发送端对应的第一设备,所述第一设备信息为第一设备;
若所述系统内存地址不处于所述总线拓扑信息中的总线拓扑根资源区间,则将所述接收端确定为核心处理器,所述第二设备信息为第二类型;
若所述系统内存地址处于所述总线拓扑根资源区间,则遍历所述总线拓扑信息中总线底层设备对应的基址寄存器资源区间,确定所述接收端对应的第二设备,所述第二设备信息为第二设备。
实际应用中,如果TLP类型是MRd类型,则从PCIE拓扑信息找到发送端的BDF信息(第一标识符信息)和接收端对应的系统内存地址。
进一步地,若发送端的BDF信息中发送端的Bus号(第一总线号)为CPU内部指定Bus号(指定总线号),那么无需再找发送端对应的第一设备,将发送端看作CPU,即第一设备信息为第一类型。若发送端的Bus号不是CPU内部指定Bus号,则遍历PCIE拓扑信息,通过发送端的BDF信息找到发送端对应的第一设备,即第一设备信息为第一设备。
同时,判断接收端对应的系统内存地址是否在RootPort资源区间(总线拓扑根资源区间)内。如果系统内存地址不在RootPort资源区间内,则将接收端看作CPU,即第二设备信息为第二类型。如果系统内存地址在RootPort资源区间内,则遍历所有End Device的Bar资源区间,由此确定系统内存地址信息属于哪个设备,将该设备作为接收端对应的第二设备,即第二设备信息为第二设备。
在本申请一个或更多个可选的实施例中,所述根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,具体实现过程可以如下:
在所述数据包类型为配置空间读类型的情况下,从所述总线拓扑信息中,获取所述发送端的第一标识符信息和所述接收端对应的第二标识符信息;
若所述第一标识符信息中的第一总线号为所述指定总线号,则将所述发送端确定为核心处理器,所述第一设备信息为第一类型;
若所述第一标识符信息中的第一总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第一标识符信息,查找所述发送端对应的第一设备,所述第一设备信息为第一设备;
若所述第二标识符信息中的第二总线号为所述指定总线号,则将所述接收端确定为核心处理器,所述第二设备信息为第二类型;
若所述第二标识符信息中的第二总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第二标识符信息,查找所述接收端对应的第二设备,所述第二设备信息为第二设备。
实际应用中,如果TLP类型是CfgRd0/CfgRd1类型,从PCIE拓扑信息找到发送端的BDF信息(第一标识符信息)和接收端的BDF信息(第二标识符信息)。
进一步地,若发送端的Bus号为CPU内部指定Bus号,则将发送端作为CPU,无需查找发送端对应的第一设备。若发送端的Bus号不是CPU内部指定Bus号,则遍历PCIE拓扑信息,通过发送端的BDF信息找到发送端对应的第一设备。
同样地,若接收端的Bus号为CPU内部指定Bus号,则将接收端作为CPU,无需查找接收端对应的第二设备。若接收端的Bus号不是CPU内部指定Bus号,则遍历PCIE拓扑信息,通过接收端的BDF信息找到接收端对应的第二设备。
在本申请一个或更多个可选的实施例中,所述根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路,具体实现过程可以如下:
在所述第一设备信息为第一类型,且第二设备信息为第二设备的情况下,从所述接收端开始查找总线拓扑根,并将所述第二设备到所述总线拓扑根之间的第一链路确定为故障链路。
实际应用中,由于发送端和接收端均为同一服务器中的节点,而服务器中包含一个CPU,所以发送端和接收端中最多有一个是CPU。
如果发送端为CPU,从接收端开始找到RootPort,第二设备到RootPort之间的链路为故障涉及的PCIE链路,即故障链路;并反向记录故障链路中每个PCIE Port的信息。
在本申请一个或更多个可选的实施例中,所述根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路,具体实现过程可以如下:
在所述第一设备信息为第一设备,且第二设备信息为第二类型的情况下,从所述发送端开始查找所述总线拓扑根,并将所述第一设备到所述总线拓扑根之间的第二链路确定为故障链路。
实际应用中,由于发送端和接收端均为同一服务器中的节点,而服务器中包含一个CPU,所以发送端和接收端中最多有一个是CPU。
如果接收端为CPU,从发送端开始找到RootPort,第一设备到RootPort之间的链路为故障涉及的PCIE链路,即故障链路;并正向记录故障链路中每个PCIE Port的信息。
在本申请一个或更多个可选的实施例中,所述根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路,包括:
在所述第一设备信息为第一设备,且第二设备信息为第二设备的情况下,从所述接收端开始查找总线拓扑根,并确定所述第二设备到所述总线拓扑根的第一链路,并从所述发送端开始查找所述总线拓扑根,并确定所述第一设备到所述总线拓扑根的第二链路;
确定所述第一链路与所述第二链路中的各重复总线节点;
获取各所述重复总线节点的第三总线号,将所述第三总线号最大的重复总线节点确定为目标总线节点;
删除所述第二链路中所述目标总线节点的下一总线节点到所述总线拓扑根的部分链路,得到第三链路;并删除所述第一链路中所述总线拓扑根到所述目标总线节点的部分链路,得到第四链路;
将所述第四链路拼接在所述第三链路的链尾,得到故障链路。
具体地,如果接收端和发送端均不为CPU,则从接收端开始找到RootPort,第二设备到RootPort之间的链路为第一链路,并反向记录第一故障链路中每个PCIE Port的信息;同时从发送端开始找到RootPort,第一设备到RootPort之间的链路为第二链路,并正向记录第二链路中每个PCIE Port的信息。
然后找到第一链路和第二链路中的重复PCIE Port(重复总线节点),取Bus号最大的重复PCIE Port为目标PCIE Port。接着把第二链路中此目标PCIE Port之后到RootPort的信息(链路)删除(保留目标PCIE Port),得到第三链路;同时把第一链路中RootPort到此目标PCIE Por的信息(链路)删除(不保留目标PCIE Port),得到第四链路。最后将第四链路保存在第三链路后面,此时,整个链路即为故障涉及的PCIE链路,即故障链路,记录整个故障链路的每个PCIE Port信息。
在本发明一个或更多个可选的实施例中,所述方法还包括:
在所述第一设备信息为第一类型,且第二设备信息为第二设备的情况下,反向记录所述故障链路中各总线节点的总线节点信息;
在所述第一设备信息为第一设备,且第二设备信息为第二类型的情况下,正向记录所述故障链路中各总线节点的总线节点信息;
在所述第一设备信息为第一设备,且第二设备信息为第二设备的情况下,记录所述故障链路中各总线节点的总线节点信息;
将各所述总线节点信息,按照所述发送端至所述接收端的顺序进行显示,并根据所述总线拓扑信息中的设备型号信息显示各设备的名称,所述设备型号信息包括厂商编号信息和/或设备编号信息。
实际应用中,如果发送端为CPU,需要反向记录故障链路中每个PCIE Port的PCIEPort信息;如果接收端为CPU,需要正向记录故障链路中每个PCIE Port的PCIE Port信息;如果发送端和接收端均不是CPU,则正常记录整个故障链路中每个PCIE Port的PCIE Port信息。
进一步地,根据记录的每个PCIE Port信息,按照发送端->PCIE Port->...->PCIEPort->接收端的格式显示出来。可根据VID/DID信息将设备对应的名称同步显示出来。
在本申请一个或更多个可选的实施例中,所述在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型之前,还包括:
获取总线拓扑信息。
实际应用中,可以通过BIOS收集总线拓扑信息。
在本申请一个或更多个可选的实施例中,所述获取总线拓扑信息,具体实现过程可以如下:
对于总线节点,以双向链表的形式保存标识符信息和设备型号信息;
对于总线拓扑根,保存标识符信息、设备型号信息和内存映射输入输出信息;
对于非总线拓扑根,保存标识符信息和设备型号信息,以及所述非总线拓扑根对应的总线拓扑根的标识符信息;
对于总线底层设备,保存标识符信息、设备型号信息、总线拓扑根资源区间和所述总线底层设备对应的总线拓扑根的标识符信息。
实际应用中,BIOS以双向链表的形式保存所有PCIE Port的BDF信息、VID/DID信息;对于PCIE Port中的RootPort,需要额外保存MMIO资源区间信息;对于PCIE Port中的非RootPort,需要额外保存其所在RootPort的BDF信息;对于PCIE Port中的End Device,需要额外保存MMIO资源区间信息、其所在RootPort的BDF信以及Bar资源区间信息。
示例性地,先进行PCIE TLP Header解析和定位设备:PCIE TLP Header涉及多种格式,Completion Timeout故障主要涉及MRd、CfgRd0和CfgRd1三种格式的TLP类型,因此就需要根据不同的格式进行解析。对PCIE TLP Header的解析内容包含TLP类型(TLP Type)、发送端BDF信息(Requester ID)及接收端的BDF信息或系统内存地址信息。因为接收端有BDF信息或者系统内存地址信息,所以需要BIOS收集系统PCIE拓扑信息中各个PCIE Port的系统内存地址信息和BDF信息,然后BIOS将收集并整理的信息根据不同的TLP类型去找到发送端和接收端对应的设备。此外,因为存在部分CPU内部占用BDF的行为,所以当TLP类型为CfgRd0和CfgRd1的时候,PCIE设备的BDF信息和CPU内部的BDF信息均需要被纳入PCIE TLPHeader中发送端和接收端BDF信息的定位范围内。
然后进行故障涉及PCIE链路的定位:在找到发送端和接收端对应的设备之后,需要显示整体PCIE链路,于是需要根据BIOS整理的PCIE拓扑信息需要分情况进行定位。如果发送端或接收端是CPU,那么需要从发送端开始一直找到接收端,那么找到的这条链路就是故障涉及的PCIE链路;如果均不包含CPU,那么需要从发送端开始找到RootPort,然后从接收端开始找到RootPort,接着将找到的两条链路按一定规则串起来,最终形成整条PCIE链路信息。
下面结合图2对本申请提供的故障链路确定方法进行进一步说明。图2是本申请提供的故障链路确定方法的流程示意图之二,参见图2:
1)PCIE拓扑信息获取。
BIOS以双向链表的形式保存所有PCIE Port的BDF、VID/DID信息,对于PCIE Port中的RootPort,需要额外保存MMIO资源区间信息;对于PCIE Port中的非RootPort,需要额外保存其所在RootPort的BDF信息;对于PCIE Port中的End Device,需要额外保存MMIO资源区间信息、其所在RootPort的BDF信以及Bar资源区间信息。
2)解析PCIE TLP Header和定位设备。
当检测到故障为Completion Timeout时,AER Header Log即为该CompletionTimeout对应的PCIE TLP Header,然后按照PCIE SPEC中的PCIE TLP Header的格式解析TLP类型是MRd或者CfgRd0/CfgRd1。
如果是MRd类型,找到发送端的BDF信息和接收端的系统内存地址。
进一步地,根据发送端的Bus号查找发送端对应的设备。如果发送端的Bus号为CPU内部指定Bus号,那么无需再找发送端对应的设备,将发送端看作CPU;反之则遍历BIOS收集到的PCIE拓扑信息,通过BDF信息找到发送端对应的设备。同时,根据接收端的系统内存地址查找接收端对应的设备。判断接收端的系统内存地址是否在RootPort资源区间内,如果不在RootPort资源区间内,则将接收端看作CPU;反之则遍历所有End Device的Bar资源区间,由此确定接收端系统内存地址信息属于哪个设备,即接收端对应的设备。
如果是CfgRd0/CfgRd1类型,找到其发送端的BDF信息和接收端的BDF信息。进一步地,根据发送端的Bus号查找发送端对应的设备,并根据接收端的Bus号查找接收端对应的设备。
具体地,遍历BIOS收集到的PCIE拓扑信息,通过BDF信息找到发送端、接收端对应的设备。如果发送端或接收端的Bus号为CPU内部指定Bus号,那么无需找这一端对应的设备,将这一端看作CPU。
3)故障涉及PCIE链路的定位。
根据收集的接收端和发送端的信息以及获取的PCIE拓扑信息,确定接收端和发送端是否为CPU。
如果接收端为CPU,则从发送端开始找到RootPort,此条链路(发送端对应的设备到RootPort)为故障涉及的PCIE链路,正向记录每个PCIE Port的信息。
如果发送端为CPU,则从接收端开始找到RootPort,此条链路(接收端对应的设备到RootPort)为故障涉及的PCIE链路,反向记录每个PCIE Port的信息。
如果接收端和发送端均不为CPU,则从发送端开始找到RootPort,记录每个PCIEPort的信息;并从接收端开始找到RootPort,反向记录每个PCIE Port的信息。然后找到两个链路重复的PCIE Port,取Bus号最大的PCIE Port,即找到最大Bus号的重复PCIE Port。接着,对第一个链路和第二个链路进行处理:把第一个链路此PICE Port之后到RootPort的信息(保留此PCIE Port)删除,同时把第二个链路RootPort到此PCIE Port信息(不保留此PCIE Port)删除。最后将第二个链路保存在第一个链路后面。此时,整个链路即为故障涉及的PCIE链路,记录整个链路的每个PCIE Port信息。
4)故障显示
根据记录的每个PCIE Port信息,按照发送端->PCIE Port->...->PCIE Port->接收端的格式显示出来。可根据VID/DID信息将设备对应的名称同步显示出来。
本实施例,深入解析了Completion timeout故障的发送端和接收端,弥补了当前对此故障定位的文档的局限性。并且加入了整体故障涉及的PCIE链路的信息,让故障信息更加直观,便于研发、测试、运维人员查看和定位故障,尤其在复杂拓扑的机器上更加优势明显,由此节约测试、运维和维护的成本。可以无需额外查看日志即可定位故障,加快了定位的速度;可以使非专业人员定位故障,降低了故障定位的门槛;在复杂PCIE拓扑的情况下可以更直观查看故障的信息。
此外,其他支持AER Header Log的报错也可以用本申请提供的故障链路确定方法进行深度解析。
需要说明的是,本申请实施例提供的故障链路确定方法,执行主体可以为故障链路确定装置,或者该故障链路确定装置中的用于执行故障链路确定方法的控制模块。本申请实施例中以故障链路确定装置执行故障链路确定方法为例,说明本申请实施例提供的故障链路确定装置。
需要说明的是,本申请实施例中,上述各个方法附图所示的故障链路确定方法均是以结合本申请实施例中的一个附图为例示例性的说明的。具体实现时,上述各个方法附图所示的故障链路确定方法还可以结合上述实施例中示意的其它可以结合的任意附图实现,此处不再赘述。
下面对本申请提供的故障链路确定装置进行描述,下文描述的与上文描述的故障链路确定方法可相互对应参照。
图3为本申请实施例提供故障链路确定装置的结构示意图,如图3所示,具体包括:
解析模块301,被配置为在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;
第一确定模块302,被配置为根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;
第二确定模块303,被配置为根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。
本申请提供的故障链路确定装置,通过在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。1.可以无需额外查看日志即可定位故障,加快了定位的速度;可以使非专业人员定位故障,降低了故障定位的门槛;在复杂PCIE拓扑的情况下可以更直观查看故障的信息。
在本申请一个或更多个可选的实施例中,所述第一确定模块302,进一步被配置为:
在所述数据包类型为内存读类型的情况下,从所述总线拓扑信息中,获取所述发送端的第一标识符信息和所述接收端对应的系统内存地址;
若所述第一标识符信息中的第一总线号为指定总线号,则将所述发送端确定为核心处理器,所述第一设备信息为第一类型,所述指定总线号为所述核心处理器指定的总线号;
若所述第一标识符信息中的第一总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第一标识符信息,查找所述发送端对应的第一设备,所述第一设备信息为第一设备;
若所述系统内存地址不处于所述总线拓扑信息中的总线拓扑根资源区间,则将所述接收端确定为核心处理器,所述第二设备信息为第二类型;
若所述系统内存地址处于所述总线拓扑根资源区间,则遍历所述总线拓扑信息中总线底层设备对应的基址寄存器资源区间,确定所述接收端对应的第二设备,所述第二设备信息为第二设备。
在本申请一个或更多个可选的实施例中,所述第一确定模块302,进一步被配置为:
在所述数据包类型为配置空间读类型的情况下,从所述总线拓扑信息中,获取所述发送端的第一标识符信息和所述接收端对应的第二标识符信息;
若所述第一标识符信息中的第一总线号为所述指定总线号,则将所述发送端确定为核心处理器,所述第一设备信息为第一类型;
若所述第一标识符信息中的第一总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第一标识符信息,查找所述发送端对应的第一设备,所述第一设备信息为第一设备;
若所述第二标识符信息中的第二总线号为所述指定总线号,则将所述接收端确定为核心处理器,所述第二设备信息为第二类型;
若所述第二标识符信息中的第二总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第二标识符信息,查找所述接收端对应的第二设备,所述第二设备信息为第二设备。
在本申请一个或更多个可选的实施例中,所述第一确定模块302,进一步被配置为:
在所述第一设备信息为第一类型,且第二设备信息为第二设备的情况下,从所述接收端开始查找总线拓扑根,并将所述第二设备到所述总线拓扑根之间的第一链路确定为故障链路。
在本申请一个或更多个可选的实施例中,所述第一确定模块302,进一步被配置为:
在所述第一设备信息为第一设备,且第二设备信息为第二类型的情况下,从所述发送端开始查找所述总线拓扑根,并将所述第一设备到所述总线拓扑根之间的第二链路确定为故障链路。
在本申请一个或更多个可选的实施例中,所述第二确定模块303,进一步被配置为:
在所述第一设备信息为第一设备,且第二设备信息为第二设备的情况下,从所述接收端开始查找总线拓扑根,并确定所述第二设备到所述总线拓扑根的第一链路,并从所述发送端开始查找所述总线拓扑根,并确定所述第一设备到所述总线拓扑根的第二链路;
确定所述第一链路与所述第二链路中的各重复总线节点;
获取各所述重复总线节点的第三总线号,将所述第三总线号最大的重复总线节点确定为目标总线节点;
删除所述第二链路中所述目标总线节点的下一总线节点到所述总线拓扑根的部分链路,得到第三链路;并删除所述第一链路中所述总线拓扑根到所述目标总线节点的部分链路,得到第四链路;
将所述第四链路拼接在所述第三链路的链尾,得到故障链路。
在本申请一个或更多个可选的实施例中,所述故障链路确定装置,还包括:
记录模块,被配置为在所述第一设备信息为第一类型,且第二设备信息为第二设备的情况下,反向记录所述故障链路中各总线节点的总线节点信息;在所述第一设备信息为第一设备,且第二设备信息为第二类型的情况下,正向记录所述故障链路中各总线节点的总线节点信息;在所述第一设备信息为第一设备,且第二设备信息为第二设备的情况下,记录所述故障链路中各总线节点的总线节点信息;
显示模块,被配置为将各所述总线节点信息,按照所述发送端至所述接收端的顺序进行显示,并根据所述总线拓扑信息中的设备型号信息显示各设备的名称,所述设备型号信息包括厂商编号信息和/或设备编号信息。
在本申请一个或更多个可选的实施例中,所述故障链路确定装置,还包括获取模块,被配置为获取总线拓扑信息。
在本申请一个或更多个可选的实施例中,所述获取模块,进一步被配置为:
对于总线节点,以双向链表的形式保存标识符信息和设备型号信息;
对于总线拓扑根,保存标识符信息、设备型号信息和内存映射输入输出信息;
对于非总线拓扑根,保存标识符信息和设备型号信息,以及所述非总线拓扑根对应的总线拓扑根的标识符信息;
对于总线底层设备,保存标识符信息、设备型号信息、总线拓扑根资源区间和所述总线底层设备对应的总线拓扑根的标识符信息。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行故障链路确定方法,该方法包括:在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的故障链路确定方法,该方法包括:在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。
又一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的故障链路确定方法,该方法包括:在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种故障链路确定方法,其特征在于,包括:
在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;
根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;
根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。
2.根据权利要求1所述的故障链路确定方法,其特征在于,所述根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,包括:
在所述数据包类型为内存读类型的情况下,从所述总线拓扑信息中,获取所述发送端的第一标识符信息和所述接收端对应的系统内存地址;
若所述第一标识符信息中的第一总线号为指定总线号,则将所述发送端确定为核心处理器,所述第一设备信息为第一类型,所述指定总线号为所述核心处理器指定的总线号;
若所述第一标识符信息中的第一总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第一标识符信息,查找所述发送端对应的第一设备,所述第一设备信息为第一设备;
若所述系统内存地址不处于所述总线拓扑信息中的总线拓扑根资源区间,则将所述接收端确定为核心处理器,所述第二设备信息为第二类型;
若所述系统内存地址处于所述总线拓扑根资源区间,则遍历所述总线拓扑信息中总线底层设备对应的基址寄存器资源区间,确定所述接收端对应的第二设备,所述第二设备信息为第二设备。
3.根据权利要求2所述的故障链路确定方法,其特征在于,所述根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,包括:
在所述数据包类型为配置空间读类型的情况下,从所述总线拓扑信息中,获取所述发送端的第一标识符信息和所述接收端对应的第二标识符信息;
若所述第一标识符信息中的第一总线号为所述指定总线号,则将所述发送端确定为核心处理器,所述第一设备信息为第一类型;
若所述第一标识符信息中的第一总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第一标识符信息,查找所述发送端对应的第一设备,所述第一设备信息为第一设备;
若所述第二标识符信息中的第二总线号为所述指定总线号,则将所述接收端确定为核心处理器,所述第二设备信息为第二类型;
若所述第二标识符信息中的第二总线号不为所述指定总线号,则遍历所述总线拓扑信息,并根据所述第二标识符信息,查找所述接收端对应的第二设备,所述第二设备信息为第二设备。
4.根据权利要求1-3任一项所述的故障链路确定方法,其特征在于,所述根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路,包括:
在所述第一设备信息为第一类型,且第二设备信息为第二设备的情况下,从所述接收端开始查找总线拓扑根,并将所述第二设备到所述总线拓扑根之间的第一链路确定为故障链路。
5.根据权利要求1-3任一项所述的故障链路确定方法,其特征在于,所述根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路,包括:
在所述第一设备信息为第一设备,且第二设备信息为第二类型的情况下,从所述发送端开始查找所述总线拓扑根,并将所述第一设备到所述总线拓扑根之间的第二链路确定为故障链路。
6.根据权利要求1-3任一项所述的故障链路确定方法,其特征在于,所述根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路,包括:
在所述第一设备信息为第一设备,且第二设备信息为第二设备的情况下,从所述接收端开始查找总线拓扑根,并确定所述第二设备到所述总线拓扑根的第一链路,并从所述发送端开始查找所述总线拓扑根,并确定所述第一设备到所述总线拓扑根的第二链路;
确定所述第一链路与所述第二链路中的各重复总线节点;
获取各所述重复总线节点的第三总线号,将所述第三总线号最大的重复总线节点确定为目标总线节点;
删除所述第二链路中所述目标总线节点的下一总线节点到所述总线拓扑根的部分链路,得到第三链路;并删除所述第一链路中所述总线拓扑根到所述目标总线节点的部分链路,得到第四链路;
将所述第四链路拼接在所述第三链路的链尾,得到故障链路。
7.根据权利要求1所述的故障链路确定方法,其特征在于,所述方法还包括:
在所述第一设备信息为第一类型,且第二设备信息为第二设备的情况下,反向记录所述故障链路中各总线节点的总线节点信息;
在所述第一设备信息为第一设备,且第二设备信息为第二类型的情况下,正向记录所述故障链路中各总线节点的总线节点信息;
在所述第一设备信息为第一设备,且第二设备信息为第二设备的情况下,记录所述故障链路中各总线节点的总线节点信息;
将各所述总线节点信息,按照所述发送端至所述接收端的顺序进行显示,并根据所述总线拓扑信息中的设备型号信息显示各设备的名称,所述设备型号信息包括厂商编号信息和/或设备编号信息。
8.根据权利要求1所述的故障链路确定方法,其特征在于,所述在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型之前,还包括:
获取总线拓扑信息;
所述获取总线拓扑信息,包括:
对于总线节点,以双向链表的形式保存标识符信息和设备型号信息;
对于总线拓扑根,保存标识符信息、设备型号信息和内存映射输入输出信息;
对于非总线拓扑根,保存标识符信息和设备型号信息,以及所述非总线拓扑根对应的总线拓扑根的标识符信息;
对于总线底层设备,保存标识符信息、设备型号信息、总线拓扑根资源区间和所述总线底层设备对应的总线拓扑根的标识符信息。
9.一种故障链路确定装置,其特征在于,包括:
解析模块,被配置为在检测到完成超时故障的情况下,解析事务层数据包的包头,得到所述事务层数据包对应的数据包类型;
第一确定模块,被配置为根据所述数据包类型和预先获取的总线拓扑信息,确定发送端对应的第一设备信息和接收端对应的第二设备信息,所述第一设备信息为第一类型或第一设备,所述第一类型表征所述发送端为核心处理器,所述第二设备信息为第二类型或第二设备,所述第二类型表征所述接收端为所述核心处理器;
第二确定模块,被配置为根据所述第一设备信息和所述第二设备信息,确定所述完成超时故障设计的故障链路。
10.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至8任一项所述故障链路确定方法的步骤。
11.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述故障链路确定方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311435562.4A CN117707815A (zh) | 2023-10-31 | 2023-10-31 | 故障链路确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311435562.4A CN117707815A (zh) | 2023-10-31 | 2023-10-31 | 故障链路确定方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117707815A true CN117707815A (zh) | 2024-03-15 |
Family
ID=90148748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311435562.4A Pending CN117707815A (zh) | 2023-10-31 | 2023-10-31 | 故障链路确定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117707815A (zh) |
-
2023
- 2023-10-31 CN CN202311435562.4A patent/CN117707815A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10649838B2 (en) | Automatic correlation of dynamic system events within computing devices | |
US7340649B2 (en) | System and method for determining fault isolation in an enterprise computing system | |
WO2017124704A1 (zh) | 日志内容的显示方法及装置 | |
CN108092854B (zh) | 基于iec61375协议的列车级以太网设备的测试方法及装置 | |
AU2005331434B2 (en) | Monitoring simulating device, method, and program | |
CN102075368A (zh) | 一种业务故障诊断方法、装置和系统 | |
US11782609B2 (en) | Method and apparatus for auditing abnormality of block device in cloud platform, device, and storage medium | |
CN110489317B (zh) | 基于工作流的云系统任务运行故障诊断方法与系统 | |
CN105183575A (zh) | 处理器故障的诊断方法、装置及系统 | |
CN106980572B (zh) | 分布式系统的在线调试方法和系统 | |
CN112035314B (zh) | 内存泄漏的监控方法、装置及电子设备 | |
CN112311574B (zh) | 网络拓扑连线的检查方法、装置及设备 | |
US9983970B2 (en) | Redundant cable routing management in storage systems | |
CN108512675B (zh) | 一种网络诊断的方法、装置、控制节点和网络节点 | |
CN117707815A (zh) | 故障链路确定方法及装置 | |
CN114461193B (zh) | 一种通信协议代码的生成方法、装置、设备及存储介质 | |
CN113868137A (zh) | 埋点数据的处理方法、装置、系统和服务器 | |
CN1963771A (zh) | 开放式测试资料收集系统及方法 | |
CN1251085C (zh) | 机群系统运行过程监控的方法和监控管理装置 | |
CN115542067A (zh) | 一种故障检测方法及装置 | |
CN114253846B (zh) | 自动化测试异常定位方法、装置、设备及可读存储介质 | |
CN115543747B (zh) | 一种前端网页性能自动巡检的方法 | |
CN111176916B (zh) | 数据存储故障诊断方法及系统 | |
CN116340046B (zh) | 一种芯粒故障检测方法和装置 | |
CN113452537B (zh) | 基于模型的故障定位方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |