异常时自动溯源端口受控情况的方法、装置、设备、介质与流程

文档序号:31778474发布日期:2022-10-12 09:10阅读:54来源:国知局
异常时自动溯源端口受控情况的方法、装置、设备、介质与流程

1.本发明涉及bmc端口故障定位技术领域,具体涉及一种异常时自动溯源端口受控情况的方法、装置、设备、介质。


背景技术:

2.bmc是服务器远端管理控制器,英文全称为baseboard management controller,又为基板管理控制器。bmc可以在服务器未开机,操作系统未启动的情况下监测系统健康状态,监测网卡等外设是否正常运行。bmc能通过对下位设备发出控制信号控制其它部件工作,信号或是基于bmc对自身收集的信息做出的处理,或是对cpu/bios/cpld等上位部件的控制命令的转达,常用ipmi命令对软硬件接口层层调用,对控制寄存器发出命令,修改端口配置。最终是通过端口输出值来控制下位部件。这个过程中,所传达的信息在多个部件、多个层次间流转,一旦在某个层次处理有误,或者某个部件发出了错误指令,就会导致bmc芯片端口输出异常。
3.异常的处理过程一般是由bmc开发人员先分析问题可能的原因,对有关的处理进程进行debug,从ipmi命令发出的层次开始排查,查看串口打印,用gpiotool,devmem,i2c-test等工具辅助;当对bmc自身的排查过程中不能找到错误源头时,需要联络bios、ee、cpld工程师联合排查。
4.每次手动执行上述工具,只能查询一个或一组控制寄存器,效率较低。且执行时只能读取控制寄存器在执行时刻的值,无法读取其在某时间段内的变化历史。定位错误效率低,需要反复重启捕捉错误。串口日志仅能即时输出软件上层发生的事件,采集到的硬件底层信息不带有时间信息,两者不能结合。因此无法直接确定端口配置出错,是源于bmc启动时应用层写的控制寄存器出错、bmc加载的驱动出错还是哪些部件启动时向bmc发出了错误的控制信息,需要多部件团队协调。


技术实现要素:

5.每次手动执行上述工具,只能查询一个或一组控制寄存器,效率较低。且执行时只能读取控制寄存器在执行时刻的值,无法读取其在某时间段内的变化历史。定位错误效率低,需要反复重启捕捉错误。串口日志仅能即时输出软件上层发生的事件,采集到的硬件底层信息不带有时间信息,两者不能结合,本发明提供一种异常时自动溯源端口受控情况的方法、装置、设备、介质。
6.第一方面,本发明技术方案提供一种异常时自动溯源端口受控情况的方法,包括如下步骤:
7.bmc启动时,读取控制寄存器的值,当读取的控制寄存器的值与预期设定值一致时,记录bmc端口的输出值和控制寄存器的值;
8.bmc运行过程中异常发生时,再次记录bmc端口的输出值和控制寄存器的值,通过与bmc启动时的记录的值进行比对,定位相关的控制寄存器的范围;其中,相关的控制寄存
器的范围定义为指定范围;
9.bmc继续运行,并将定位的指定范围内的控制寄存器根据bmc启动时记录的控制寄存器的值进行置位,持续记录该指定范围内的控制寄存器的变化,异常再次发生时,记录异常发生时指定范围内的控制寄存器的值为最终控制记录;
10.将最终控制记录与串口日志比对,产生新的日志并输出。
11.进一步的,bmc启动时,读取控制寄存器的值,当读取的控制寄存器的值与预期设定值一致时,记录bmc端口的输出值和控制寄存器的值的步骤包括:
12.bmc启动时,读取控制寄存器的值;
13.判断读取的控制寄存器的值是否与预期设定值一致;
14.若是,记录bmc端口的输出值和控制寄存器的值;
15.若否,立即报错并修正控制寄存器的值。
16.进一步的,bmc启动时,读取控制寄存器的值,当读取的控制寄存器的值与预期设定值一致时,记录bmc端口的输出值和控制寄存器的值的步骤中,记录bmc端口的输出值和控制寄存器的值的步骤包括:
17.记录bmc所有端口的输出值为输出记录一;
18.读取所有控制寄存器的值保存为控制记录一。
19.进一步的,bmc运行过程中异常发生时,再次记录bmc端口的输出值和控制寄存器的值,通过与bmc启动时的记录的值进行比对,定位相关的控制寄存器的范围的步骤包括:
20.bmc运行过程中异常发生时,再次记录bmc所有端口的输出值为输出记录二;
21.比较输出记录一与输出记录二,将不同的输出记录生成端口定位范围记录;
22.依据端口定位范围记录与控制记录一,得到控制定位范围记录。
23.进一步的,bmc继续运行,并将定位的指定范围内的控制寄存器根据bmc启动时记录的控制寄存器的值进行置位,持续记录该指定范围内的控制寄存器的变化,异常再次发生时,记录异常发生时指定范围内的控制寄存器的值为最终控制记录的步骤包括:
24.bmc继续运行,将端口定位范围记录内的端口输出值写为输出记录一中的值,再对控制定位范围记录内指定的控制寄存器写为控制记录一中的值;
25.持续记录所述指定的控制寄存器的变化及时间戳,异常再次发生时,记录所述指定的控制寄存器的值为最终控制记录。
26.进一步的,将最终控制记录与串口日志比对,产生新的日志并输出的步骤包括:
27.根据时间戳,将最终控制记录与串口日志比对;
28.将比对结果结合串口日志在串口控制台输出;
29.根据输出的日志判断对控制寄存器修改的进程进而定位到端口配置错误的源头。
30.第二方面,本发明技术方案还提供一种异常时自动溯源端口受控情况的装置,包括检测模块、比较模块和控制模块;
31.bmc启动完成后,bmc系统主进程向控制模块发送通知信号;
32.控制模块收到bmc启动完成的通知后,通知检测模块开始运行;
33.检测模块,读取和记录bmc启动时bmc端口的输出值和控制寄存器的值;bmc运行过程中异常发生时,再次记录bmc端口的输出值和控制寄存器的值;将定位的指定范围内的控制寄存器根据bmc启动时记录的控制寄存器的值进行置位,持续记录该指定范围内的控制
寄存器的变化,异常再次发生时,记录异常发生时指定范围内的控制寄存器的值为最终控制记录;
34.比较模块,用于比较读取的控制寄存器的值与预期设定值以及bmc运行过程中异常发生时,再次记录的控制寄存器的值与bmc启动时的记录的值进行比对,定位相关的控制寄存器的范围;其中,相关的控制寄存器的范围定义为指定范围;还用于将最终控制记录与串口日志比对,产生新的日志并输出。
35.进一步的,检测模块包括读取单元、写单元、记录单元;
36.读取单元,用于接收到读通知后读取端口输出值为输出记录,或读取控制寄存器的值为控制记录;
37.写单元,用于接收到写通知时,按照记录文件和指定范围,向控制寄存器或端口输出值寄存器写入值;
38.记录单元,用于将读取单元读取的值保存为输出记录或控制记录。
39.进一步的,比较模块,具体用于比较输出记录一与输出记录二,将不同的输出记录生成端口定位范围记录。
40.进一步的,记录单元,还用于bmc继续运行,将端口定位范围记录内的端口输出值写为输出记录一中的值,再对控制定位范围记录内指定的控制寄存器写为控制记录一中的值;持续记录所述指定的控制寄存器的变化及时间戳,异常再次发生时,记录所述指定的控制寄存器的值为最终控制记录。
41.比较模块,具体用于根据时间戳,将最终控制记录与串口日志比对;将比对结果结合串口日志在串口控制台输出。
42.工作人员根据输出的日志判断对控制寄存器修改的进程进而定位到端口配置错误的源头。
43.bmc启动时,若控制寄存器的值与预期设定值不符,则立即报错并修正。异常发生时,记录bmc端口的输出值和控制寄存器的值,通过与bmc启动时的初次记录进行比对,通过比较两次控制寄存器的值定位相关的控制寄存器的范围;
44.bmc系统进程继续运行,并将输出值寄存器和控制寄存器根据初次记录置位,持续记录该范围内的控制寄存器的变化,直到异常再次发生。即可得到异常发生指定范围的控制寄存器的变化历史。
45.将串口日志与上一步得到的记录比对,产生新的日志并输出,判断哪个进程对控制寄存器进行了修改,即可定位到端口配置错误的源头。这样就对端口配置异常与进程发出对端口的异常控制指令两个事件建立直接联系。对异常发生前相关控制寄存器的值的变化历史进行回溯,按照记录的时间戳,对原本定向输出到日志的上层调试消息进行加工处理,定位到进程出错位置,最终输出。
46.第三方面,本发明技术方案还提供一种电子设备,所述电子设备包括:
47.至少一个处理器;以及,
48.与所述至少一个处理器通信连接的存储器;其中,
49.存储器存储有可被至少一个处理器执行的计算机程序指令,所述计算机程序指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的异常时自动溯源端口受控情况的方法。
50.第四方面,本发明技术方案还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如第一方面所述的异常时自动溯源端口受控情况的方法。
51.从以上技术方案可以看出,本发明具有以下优点:在bmc启动时,检查控制寄存器初值并自动修正;在bmc启动后,定位并记录与异常相关的控制寄存器的变化历史,不需升级和重启bmc,即可对端口配置的错误修改进行溯源。充分收集和利用了问题发生时bmc上产生的信息,尽可能避免反复启动和升级以捕捉异常。提高了研发人员排查错误的效率,尤其是为概率性异常的溯源提供了极大便利。
52.此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
53.由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
54.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
55.图1是本发明一个实施例的方法的示意性流程图。
56.图2是本发明另一个实施例的方法的示意性流程图。
57.图3是本发明一个实施例的装置的简述流程。
具体实施方式
58.为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
59.如图1所示,本发明实施例提供一种异常时自动溯源端口受控情况的方法,包括如下步骤:
60.步骤1:bmc启动时,读取控制寄存器的值,当读取的控制寄存器的值与预期设定值一致时,记录bmc端口的输出值和控制寄存器的值;
61.步骤2:bmc运行过程中异常发生时,再次记录bmc端口的输出值和控制寄存器的值,通过与bmc启动时的记录的值进行比对,定位相关的控制寄存器的范围;其中,相关的控制寄存器的范围定义为指定范围;
62.步骤3:bmc继续运行,并将定位的指定范围内的控制寄存器根据bmc启动时记录的控制寄存器的值进行置位,持续记录该指定范围内的控制寄存器的变化,异常再次发生时,记录异常发生时指定范围内的控制寄存器的值为最终控制记录;
63.步骤4:将最终控制记录与串口日志比对,产生新的日志并输出。
64.适用于与bmc的端口配置有关的异常,这些异常可能是由于bmc的某些进程对bmc芯片的控制寄存器进行了异常的修改造成的。例如在位状态无法正常获取、异常重启、raid
组建异常、服务器系统启动时的屏幕显示异常等场景。本方法可以有效缩小代码排查范围、提高此类问题的排查速度。
65.如图2所示,在有些实施例中,bmc启动时,读取控制寄存器的值,当读取的控制寄存器的值与预期设定值一致时,记录bmc端口的输出值和控制寄存器的值的步骤包括:
66.步骤11:bmc启动时,读取控制寄存器的值;
67.步骤12:判断读取的控制寄存器的值是否与预期设定值一致;
68.若是,执行步骤13;若否,执行步骤14;
69.步骤13:记录bmc端口的输出值和控制寄存器的值;
70.步骤14:立即报错并修正控制寄存器的值。
71.在有些实施例中,bmc启动时,读取控制寄存器的值,当读取的控制寄存器的值与预期设定值一致时,记录bmc端口的输出值和控制寄存器的值的步骤中,记录bmc端口的输出值和控制寄存器的值的步骤包括:
72.记录bmc所有端口的输出值为输出记录一;
73.读取所有控制寄存器的值保存为控制记录一。
74.相应的,bmc运行过程中异常发生时,再次记录bmc端口的输出值和控制寄存器的值,通过与bmc启动时的记录的值进行比对,定位相关的控制寄存器的范围的步骤包括:
75.步骤21:bmc运行过程中异常发生时,再次记录bmc所有端口的输出值为输出记录二;
76.步骤22:比较输出记录一与输出记录二,将不同的输出记录生成端口定位范围记录;
77.步骤23:依据端口定位范围记录与控制记录一,得到控制定位范围记录。
78.在有些实施例中,bmc继续运行,并将定位的指定范围内的控制寄存器根据bmc启动时记录的控制寄存器的值进行置位,持续记录该指定范围内的控制寄存器的变化,异常再次发生时,记录异常发生时指定范围内的控制寄存器的值为最终控制记录的步骤包括:
79.步骤31:bmc继续运行,将端口定位范围记录内的端口输出值写为输出记录一中的值,再对控制定位范围记录内指定的控制寄存器写为控制记录一中的值;
80.步骤32:持续记录所述指定的控制寄存器的变化及时间戳,异常再次发生时,记录所述指定的控制寄存器的值为最终控制记录。
81.在有些实施例中,将最终控制记录与串口日志比对,产生新的日志并输出的步骤包括:
82.步骤41:根据时间戳,将最终控制记录与串口日志比对;
83.步骤42:将比对结果结合串口日志在串口控制台输出;
84.进一步的,根据输出的日志判断对控制寄存器修改的进程进而定位到端口配置错误的源头。
85.如图3所示,本发明实施例还提供一种异常时自动溯源端口受控情况的装置,包括检测模块、比较模块和控制模块;
86.bmc启动完成后,bmc系统主进程向控制模块发送通知信号;
87.控制模块收到bmc启动完成的通知后,通知检测模块开始运行;
88.检测模块,读取和记录bmc启动时bmc端口的输出值和控制寄存器的值;bmc运行过
程中异常发生时,再次记录bmc端口的输出值和控制寄存器的值;将定位的指定范围内的控制寄存器根据bmc启动时记录的控制寄存器的值进行置位,持续记录该指定范围内的控制寄存器的变化,异常再次发生时,记录异常发生时指定范围内的控制寄存器的值为最终控制记录;
89.比较模块,用于比较读取的控制寄存器的值与预期设定值以及bmc运行过程中异常发生时,再次记录的控制寄存器的值与bmc启动时的记录的值进行比对,定位相关的控制寄存器的范围;其中,相关的控制寄存器的范围定义为指定范围;还用于将最终控制记录与串口日志比对,产生新的日志并输出。需要说明的是,检测模块的每一次动作需要接受到控制模块的通知后开始执行。
90.在有些实施例中,检测模块包括读取单元、写单元、记录单元;
91.读取单元,读取单元,用于接收到读通知后读取端口输出值为输出记录,或读取控制寄存器的值为控制记录;
92.比较模块,具体用于当输出读取的控制寄存器的值与预期设定值不一致时,立即报错并修正控制寄存器的值,还用于比较输出记录一与输出记录二,将不同的输出记录生成端口定位范围记录;
93.写单元,用于bmc继续运行,将端口定位范围记录内的端口输出值写为输出记录一中的值,再对控制定位范围记录内指定的控制寄存器写为控制记录一中的值;
94.记录单元,持续记录所述指定的控制寄存器的变化及时间戳,异常再次发生时,记录所述指定的控制寄存器的值为最终控制记录。
95.在有些实施例中,比较模块,具体用于比较输出记录一与输出记录二,将不同的输出记录生成端口定位范围记录。
96.记录单元,还用于bmc继续运行,将端口定位范围记录内的端口输出值写为输出记录一中的值,再对控制定位范围记录内指定的控制寄存器写为控制记录一中的值;持续记录所述指定的控制寄存器的变化及时间戳,异常再次发生时,记录所述指定的控制寄存器的值为最终控制记录。
97.比较模块,具体用于根据时间戳,将最终控制记录与串口日志比对;将比对结果结合串口日志在串口控制台输出。
98.工作人员根据输出的日志判断对控制寄存器修改的进程进而定位到端口配置错误的源头。
99.检测模块,接收控制模块发来的信号,通过mmap读或写端口的输出值和控制寄存器,将读取的内容生成记录文件。
100.控制模块,接收bmc发送的通知信号,向检测模块发送“开始写”、“开始读”的信号。
101.运行过程如下。
102.检测启动:bmc启动完成后,bmc系统主进程向控制模块发送通知信号。控制模块收到bmc启动完成的通知后,通知检测模块开始运行。
103.检测模块读取此时bmc芯片所有控制寄存器的值,检测此时的端口配置是否与预期一致,scu(系统控制寄存器组)的值,决定了端口的使能,控制寄存器的复位和时钟设置等。因此比较模块将scu与其预期设定进行比对,若不一致则报错并修正。
104.端口相应的控制寄存器的值,决定了端口的功能实现,即端口的模式、功能配置、
引脚功能/输入输出方向等。因此对端口相应的控制寄存器的值进行记录。
105.检测模块记录所有端口的输出值,保存为输出记录一。检测模块读取所有控制寄存器的值,保存为控制记录一。
106.bmc系统进程继续运行,当错误发生时,再次读取全部端口的输出值,保存为输出记录二;比较输出记录一与输出记录二,产生端口定位范围记录;依据端口定位范围记录与控制记录一,得到控制定位范围记录。
107.将端口定位范围内的端口输出值写为输出记录一中的值,再对控制定位范围记录指定的控制寄存器写为控制记录一中的值。bmc继续运行,并持续记录控制寄存器的变化及时间戳,直到问题再现,停止读取。
108.从电平置位到重复出错期间的,对指定控制寄存器的记录,即为最终控制记录。
109.根据时间戳,将最终控制记录与串口日志比对、结合后在串口控制台输出,得出bmc哪个进程发出了什么指令,对控制寄存器进行了哪些修改,从而造成了端口配置错误。
110.在bmc启动时,检查控制寄存器初值并自动修正;在bmc启动后,定位并记录与异常相关的控制寄存器的变化历史,不需升级和重启bmc,即可对端口配置的错误修改进行溯源。
111.本发明实施例还提供一种电子设备,所述电子设备包括:处理器、通信接口、存储器和总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信。总线可以用于电子设备与传感器之间的信息传输。处理器可以调用存储器中的逻辑指令,以执行如下方法:步骤1:bmc启动时,读取控制寄存器的值,当读取的控制寄存器的值与预期设定值一致时,记录bmc端口的输出值和控制寄存器的值;步骤2:bmc运行过程中异常发生时,再次记录bmc端口的输出值和控制寄存器的值,通过与bmc启动时的记录的值进行比对,定位相关的控制寄存器的范围;其中,相关的控制寄存器的范围定义为指定范围;步骤3:bmc继续运行,并将定位的指定范围内的控制寄存器根据bmc启动时记录的控制寄存器的值进行置位,持续记录该指定范围内的控制寄存器的变化,异常再次发生时,记录异常发生时指定范围内的控制寄存器的值为最终控制记录;步骤4:将最终控制记录与串口日志比对,产生新的日志并输出。
112.在有些实施例中,处理器可以调用存储器中的逻辑指令,以执行如下方法:步骤11:bmc启动时,读取控制寄存器的值;步骤12:判断读取的控制寄存器的值是否与预期设定值一致;若是,执行步骤13;若否,执行步骤14;步骤13:记录bmc端口的输出值和控制寄存器的值;步骤14:立即报错并修正控制寄存器的值。
113.在有些实施例中,处理器可以调用存储器中的逻辑指令,以执行如下方法:步骤21:bmc运行过程中异常发生时,再次记录bmc所有端口的输出值为输出记录二;步骤22:比较输出记录一与输出记录二,将不同的输出记录生成端口定位范围记录;步骤23:依据端口定位范围记录与控制记录一,得到控制定位范围记录。
114.此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所
述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
115.本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述方法实施例所提供的方法,例如包括:步骤1:bmc启动时,读取控制寄存器的值,当读取的控制寄存器的值与预期设定值一致时,记录bmc端口的输出值和控制寄存器的值;步骤2:bmc运行过程中异常发生时,再次记录bmc端口的输出值和控制寄存器的值,通过与bmc启动时的记录的值进行比对,定位相关的控制寄存器的范围;其中,相关的控制寄存器的范围定义为指定范围;步骤3:bmc继续运行,并将定位的指定范围内的控制寄存器根据bmc启动时记录的控制寄存器的值进行置位,持续记录该指定范围内的控制寄存器的变化,异常再次发生时,记录异常发生时指定范围内的控制寄存器的值为最终控制记录;步骤4:将最终控制记录与串口日志比对,产生新的日志并输出。
116.尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1