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

一种飞腾服务器平台下基于非易失内存的实时监控方法

文献发布时间:2023-06-19 12:24:27


一种飞腾服务器平台下基于非易失内存的实时监控方法

技术领域

本发明属于计算机领域,具体涉及一种飞腾服务器平台下基于非易失内存的实时监控方法。

背景技术

非易失内存是指内存掉电后,内存中存储的数据不会消失。而常见的服务器上基本上使用的都是掉电后,内存中的数据丢失的普通易失的内存。服务器上运行的监控系统,是在普通易失的内存上申请一块缓存空间,存储实时监控数据,再通过硬盘的文件系统接口,存储到硬盘的记录文件中。常见的服务器并没有使用非易失内存,或者即使使用非易失内存,也是主要用于服务器关机后保存操作系统的现场数据。常见的服务器上的主存也是通用的服务器内存条,硬件上仅仅支持易失内存。基于FT2000+国产处理器的服务器平台使用的内存基于上述表述的普通易失去的内存。

常见的服务器上使用的掉电后数据丢失的普通内存条。而在服务器运行过程中,如果遇到故障或者死机后,服务器要恢复正常运行,只有通过重新启动。重新启动的服务器,内存中的数据就会丢失。服务器遇到故障或者死机时候的服务器的现场状态也不可避免的会丢失。这对于定位服务器故障或者死机原因,是非常不利的。即使服务器开启了调试监控类的程序,实时的将服务器运行的状态信息存储到易失内存中,进而再从易失内存传输到硬盘中。服务器也会在发生故障或者死机的时候,来不及将调试监控类信息,写进到硬盘中。原因是硬盘的读写速度远低于内存的读写速度。所以服务器记录的数据,常常在发生故障或者死机后,记录的数据存储到了从易失内存申请的缓存中,但是并没有存到硬盘中。这样就增加了定位服务器发生故障和死机的原因,降低了服务器系统的强壮性,同时也加长了定位、解决服务器的漏洞的时间周期。

发明内容

(一)要解决的技术问题

本发明要解决的技术问题是如何提供一种飞腾服务器平台下基于非易失内存的实时监控方法,以解决服务器使用普通内存条导致加长定位服务器故障或者死机原因时间的问题。

(二)技术方案

为了解决上述技术问题,本发明提出一种飞腾服务器平台下基于非易失内存的实时监控方法,该方法包括如下步骤:

S1、飞腾服务器上电启动;

S2、进入Linux内核的内存子系统初始化阶段;飞腾服务器上插了普通内存条和非易失内存条,将非易失内存注册进Linux内核内存管理子系统中,与普通内存进行统一管理;

S3、在Linux内核中建立虚拟设备,该虚拟设备用于存储飞腾服务器运行时产生的运行实时数据;

S4、针对建立的虚拟设备,建立该虚拟设备对应的驱动程序,在该驱动程序中建立内核线程B;

S5、在虚拟设备对应的驱动程序中,使用dma_declare_coherent_memory函数,将飞腾服务器上使用的非易失内存对应的物理地址空间,从内存管理子系统中为虚拟设备预留出来;

S6、在虚拟设备对应的驱动程序中,通过Linux内核API函数kmalloc申请一块缓存,建立Linux内核线程A;

S7、修改飞腾服务器上运行的调试监控类软件的输出缓存到步骤S6中申请的缓存,将调试监控类软件获取到的飞腾服务器运行的实时数据,通过内核线程A输出到所述缓存中;

步骤S8、通过内核线程B实时地将内核线程A输出到缓存中的数据,根据时间先后,传输给飞腾服务器硬盘中。

进一步地,所述飞腾服务器硬盘为NVME硬盘。

进一步地,所述步骤S1具体包括:飞腾服务器上电启动,飞腾服务器的固件等非易失内存配套的电容电源充电完成后,引导Linux内核启动。

进一步地,所述电容电源为AgigA Tech公司的AGIGA9811-001JCE型号的电容电源。

进一步地,所述步骤S3具体包括:

S31、建立虚拟设备的设备节点;使用Linux内核提供的申请、注册设备节点的接口函数,实现为虚拟设备申请设备节点,并且将申请的设备节点注册进Linux内核中;

S32、建立虚拟设备的设备描述符;

S33、将设备描述符通过Linux内核标准的设备注册函数注册进Linux内核中。

如权利要求5所述的飞腾服务器平台下基于非易失内存的实时监控方法,其特征在于,所述步骤S32具体包括:通过内核kmalloc函数,为虚拟设备申请一块内存存储设备描述符结构体,该设备描述符结构体中包含内核的标准的设备结构体。

进一步地,所述步骤S4具体包括:

S41、建立一个标准的Linux内核驱动模块,作为虚拟设备的驱动程序;

S42、在Linux内核驱动模块中,添加Linux内核标准的Linux内核设备文件操作描述符,实现操作函数;

S43、将步骤S42添加的Linux内核设备文件操作描述符通过Linux内核的字符设备注册标准接口注册进Linux内核;

S44、通过Linux内核线程创建的标准接口函数,在该驱动程序中建立内核线程B。

进一步地,所述操作函数为open函数、close函数、read函数、write函数和ioctl函数。

进一步地,非易失内存的容量是32GB,步骤S5预留32GB的地址空间,步骤S6中缓存的大小为32GB。

进一步地,所述步骤S7中内核线程A循环使用步骤S6中申请的32GB缓存,当32GB的缓存存满后,将从缓存的首地址重新开始输出数据,依次覆盖原来的数据。

(三)有益效果

本发明提出一种飞腾服务器平台下基于非易失内存的实时监控方法,本发明在基于FT2000+新一代国产多核处理器的服务器上使用一块非易失内存。该服务器上的操作系统中运行的调试监控类的程序,使用非易失内存中申请的内存,可以实现数据断电不丢失。并且实时的将该申请的内存中的数据传输到硬盘当中。循环使用该申请的内存,在该内存存储满了后,根据时间最久数据越旧的原则。将该申请内存中存储的最久的数据更新成服务器操作系统的调试监控类程序产生的最新数据信息。本发明与现有技术相比,提出的技术方法使用非易失内存实时的存储服务器上产生的记录信息,对于服务器在发生故障或者死机时,提升了定位原因、排查问题效率。进而对于服务器运行的稳定性有很大的提升。另外本发明在不影响服务器的操作系统稳定性的前提下,对记录调式监控类程序的数据信息的记录速率,也有较大的提升。

附图说明

图1为本发明的实时监控方法流程图。

具体实施方式

为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

基于FT2000+新一代国产多核处理器的服务器,已经应用于国内很多行业和企事业单位中。该服务器的运行稳定性有很高的要求。所以在该服务器发生故障或者死机的时候,越短时间定位、解决故障和死机问题,越有利于该服务器的稳定性提高。本发明主要是在基于FT2000+新一代国产多核处理器的服务器上使用一条非易失内存条。将该服务器上的操作系统的运行记录申请的调试监控类程序申请的缓存,申请到使用的非易失内存条上。从而在服务器重启后,能够得到重启前发生故障或者死机的现场信息,提升了定位、解决故障和死机问题的效率。

本发明中的飞腾服务器平台上使用一块非易失内存。在飞腾服务器正常工作期间产生的运行信息,通过调试监控类软件,记录到非易失去内存中。同时实时的将非易失内存中的数据,实时的传输到NVME硬盘中。

本发明的具体工作流程参考图1所示。包括以下步骤:

S1、飞腾服务器上电启动。具体地,飞腾服务器上电启动,飞腾服务器的固件会等非易失内存配套的电容电源充电完成后,再引导Linux内核启动,该电容电源为AgigA Tech公司的AGIGA9811-001JCE型号的电容电源。

S2、进入Linux内核的内存子系统初始化阶段。飞腾服务器上插了普通内存条和非易失内存条。将非易失内存注册进Linux内核内存管理子系统中,与普通内存进行统一管理。Linux内核的内存管理子系统初始化完成后,进入步骤S3中。普通内存条的数量为一根或多根,非易失内存条的数量为一根。本例中,普通内存条的数量为7根,非易失内存条的数量为1根。

S3、在Linux内核中建立虚拟设备,该虚拟设备主要用于存储飞腾服务器运行时产生的运行实时数据。建立虚拟设备主要是完成以下几个方面的工作。

S31、建立虚拟设备的设备节点。使用Linux内核提供的申请、注册设备节点的接口函数,实现为虚拟设备申请设备节点,并且将申请的设备节点注册进Linux内核中。

S32、建立虚拟设备的设备描述符。主要是通过内核kmalloc函数,为虚拟设备申请一块内存存储设备描述符结构体。该设备描述符结构体中包含内核的标准的设备结构体device。

S33、将步骤S32中建立的设备描述符,通过Linux内核标准的设备注册函数注册进Linux内核中。

S4、针对步骤S3中建立的虚拟设备,通过如下步骤建立该虚拟设备对应的驱动程序,在该驱动程序中建立内核线程B。

S41、建立一个标准的Linux内核驱动模块,作为虚拟设备的驱动程序。

S42、在步骤S41中建立的Linux内核驱动模块中,添加Linux内核标准的Linux内核字符设备文件操作描述符,实现open函数、close函数、read函数、write函数和ioctl函数。其中,open函数用作打开设备文件,close函数用作关闭设备文件,read函数用作从设备文件读取数据,write函数用作往设备文件写入数据,ioctl函数用作给设备传输命令和接收设备反馈数据。

S43、将步骤S42添加的Linux内核设备文件操作描述符通过Linux内核的字符设备注册标准接口注册进Linux内核。

S44、通过Linux内核线程创建的标准接口函数,在该驱动程序中建立内核线程B。内核线程B主要完成的工作,是实现步骤S8中的功能,即将非易失内存的数据拷贝到NVME硬盘的自定义的地址中,该自定义的地址可以用户在NVME硬盘设备对应的虚拟地址空间中自行指定。

S5、在虚拟设备对应的驱动程序中,使用dma_declare_coherent_memory函数,将飞腾服务器上使用的非易失内存对应的物理地址空间,从内存管理子系统中为虚拟设备预留出来。预留的地址空间根据飞腾服务器上使用的非易失内存的容量决定。本发明中使用的非易失内存的容量是32GB,所以就预留了32GB的地址空间。dma_declare_coherent_memory函数需要使用非易失内存物理地址作为函数参数。所以需要根据非易失内存在飞腾服务器上的插槽,得到对应的物理地址空间。

S6、在虚拟设备对应的驱动程序中,通过Linux内核API函数kmalloc申请一块缓存,缓存的大小为32GB。建立Linux内核线程A。

S7、修改飞腾服务器上运行的调试监控类软件的输出缓存到步骤S6中申请的缓存,将调试监控类软件获取到的飞腾服务器运行的实时数据,通过内核线程A输出到所述缓存中。例如想要捕获内核的printk的ERROR级别的信息,则仅仅需要更改printk的ERROR级别的输出缓存。即将printk的ERROR级别的输出缓存从原来输出到Linux内核默认的log的缓存中,改为输出到步骤S6中申请的缓存中。将调试监控类软件获取到的飞腾服务器运行的实时数据,通过步骤S3中虚拟设备的驱动程序建立的Linux内核线程A,输出到步骤S6中申请的缓存中。Linux内核线程A循环使用步骤S6中申请的32GB缓存。当32GB的缓存存满后,将从缓存的首地址重新开始输出数据,依次覆盖原来的数据。

步骤S8、通过内核线程B实时地将内核线程A输出到缓存中的数据,根据时间先后,传输给飞腾服务器NVME硬盘中。在虚拟设备对应的驱动程序中建立的内核线程B,实时的将Linux内核线程A输出到步骤S6申请的缓存中的数据,根据时间先后,传输给飞腾服务器NVME硬盘中。内核线程B具体实现参考步骤S44步。

本发明需要在基于FT2000+新一代国产多核处理器的服务器上使用一块非易失内存。该服务器上的操作系统中运行的调试监控类的程序,使用非易失内存中申请的内存,可以实现数据断电不丢失。并且实时的将该申请的内存中的数据传输到硬盘当中。循环使用该申请的内存,在该内存存储满了后,根据时间最久数据越旧的原则。将该申请内存中存储的最久的数据更新成服务器操作系统的调试监控类程序产生的最新数据信息。

本发明与现有技术相比,提出的技术方法使用非易失内存实时的存储服务器上产生的记录信息,对于服务器在发生故障或者死机时,提升了定位原因、排查问题效率。进而对于服务器运行的稳定性有很大的提升。另外本发明在不影响服务器的操作系统稳定性的前提下,对记录调式监控类程序的数据信息的记录速率,也有较大的提升。

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

相关技术
  • 一种飞腾服务器平台下基于非易失内存的实时监控方法
  • 一种基于RDMA的非易失内存系统的通信方法及服务器
技术分类

06120113284318