CN120973473A - 虚拟机监控系统和方法 - Google Patents
虚拟机监控系统和方法Info
- Publication number
- CN120973473A CN120973473A CN202511097502.5A CN202511097502A CN120973473A CN 120973473 A CN120973473 A CN 120973473A CN 202511097502 A CN202511097502 A CN 202511097502A CN 120973473 A CN120973473 A CN 120973473A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- task
- monitoring
- interrupt
- threshold
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/301—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种虚拟机监控系统和方法,所述系统包括:安全度量组件,用于监测当前运行的虚拟机如下至少一种状态信息:任务运行的异常状态、中断处理的异常状态、心跳信息或业务状态信息;监测控制组件,用于获取安全度量组件上报的状态信息,根据所述状态信息和预设的异常处理策略判断是否需要切换当前运行的虚拟机;资源分配组件,用于当监测控制组件判定需要切换虚拟机时,为待启动的虚拟机分配硬件设备资源。上述技术方案能够降低系统失效时间,提升系统可用时间和可靠性,提升主备虚拟机切换的及时性和准确性,还可以减少用户的硬件成本。
Description
技术领域
本申请涉及虚拟机监控器技术领域,具体涉及一种虚拟机监控系统和方法。
背景技术
虚拟机监控器(Hypervisor)是运行在物理计算机系统和操作系统软件之间的中间层软件,可以允许多个操作系统和应用共享一套基础物理硬件。可以将Hypervisor看作是虚拟环境中的“元”操作系统,可以协调和分配各虚拟机访问物理计算机系统上的所有物理设备,包括处理器、内存、存储、网络设备等。
常见的高可用系统构建,主要面向的应用场景是云服务、集群服务,一个节点常集合多个虚拟机上的业务系统(如数据库服务系统,互联网应用服务系统,存储服务系统等)来提供完整的服务。节点与节点间通常位于不同的物理机上,甚至不同地点的物理机上,以避免停电,自然灾害带来的共因失效。监控通道也通常配置为可以有多个路由到达的网络通道,保持通讯信道冗余。
目前高可用系统构建方法应用于汽车控制,飞机控制,工业机器人等端侧关键性业务场景时,具有如下问题:1.没有时间约束的相关设计,节点服务切换时间随集群服务的配置变化,不适合用于需要时间确定性的系统;2.对GVM上运行的操作系统和应用没有多层监控设计,完全依赖于节点的心跳监控,监控粒度比较粗;3.各个虚拟机可控的设备集合基本一致,而端侧没有这么多冗余设备,设备也缺乏灵活的分区复用配置,简单的主备切换方法难以保证关键业务平滑不中断;4.监控通道只有网络,在单Hypervisor场景时,没有提供时间延迟更小的监控通道;5.监控管理模块都基于Windows、Linux等复杂的操作系统,较难通过严格的功能安全标准认证。
发明内容
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的虚拟机监控系统和方法。
依据本申请的一个方面,提供了一种虚拟机监控系统,所述虚拟机监控系统包括:
安全度量组件,用于监测当前运行的虚拟机如下至少一种状态信息:任务运行的异常状态、中断处理的异常状态、心跳信息或业务状态信息;
监测控制组件,用于获取安全度量组件上报的状态信息,根据所述状态信息和预设的异常处理策略判断是否需要切换当前运行的虚拟机;
资源分配组件,用于当监测控制组件判定需要切换虚拟机时,为待启动的备用虚拟机分配硬件设备资源。
在一些实施方式中,所述安全度量组件内的各小组件之间或者所述安全度量组件与所述监测控制组件之间通过共享内存通道通讯。
在一些实施方式中,所述安全度量组件监测的任务的运行异常状态包括如下的至少一项:
任务的调度延迟是否大于阈值;
预设周期内任务的运行份额是否达到阈值;
任务是否异常退出;
所述安全度量组件监测的中断处理的异常状态包括如下的至少一项:
操作系统的中断处理延迟是否大于阈值;
中断处理程序的处理时间是否超过阈值;
预设周期内中断的处理数量是否达到阈值。
在一些实施方式中,所述安全度量组件监测的逻辑包括:
在虚拟机的配置文件中配置任务列表、阈值和/或预设周期,在虚拟机操作系统内注册钩子函数;当虚拟机在运行时,根据操作系统内各功能模块中不同任务的钩子函数的调用情况、所述阈值和/或所述预设周期确定所述异常状态。
在一些实施方式中,任务的调度延迟是否小于阈值的处理步骤包括:当检测到使能任务的钩子函数被调用时,判断该使能任务是否为监控任务;若是则在监控任务列表中记录任务使能时间td1;任务切换钩子函数被调用时,判断切换的目的任务是否为监控任务;若是则记录任务调度时间td2,计算调度延迟时间td2-td1;判断调度延迟时间是否大于阈值,若大于阈值则向监测控制组件上报调度延迟超时的异常信息,若不大于阈值则不上报;
预设周期里任务的运行份额是否达到阈值的处理步骤包括:启动定时器,定时间隔为预设周期,并记录当前各监控任务的已运行时间ts1;定时器到期,再次获取各监控任务的已运行时间片ts2,计算周期内各任务的运行份额=ts2-ts1;判断各任务的运行份额是否小于阈值;若小于阈值,则向监测控制组件上报任务运行份额不足的异常信息;
任务是否异常退出的处理步骤包括:当检测到任务退出钩子函数被调用时,判断退出的任务是否为关键任务;若是则向监测控制组件上报关键任务异常退出的状态信息。
在一些实施方式中,操作系统的中断处理延迟是否会大于阈值的处理步骤包括:当检测到操作系统中断关闭函数的中断关闭钩子函数被调用时,记开始时间ti1;当检测到操作系统中断开启函数的中断开启钩子函数被调用时,记结束时间ti2,计算中断关闭时间ti2-ti1;判断中断关闭时间是否大于阈值,若大于阈值则向监测控制组件上报中断延迟超时的状态信息;
中断处理程序的处理时间是否超过阈值的处理步骤包括:当检测到中断处理入口钩子函数被调用时,判断是否监控中断;若是则在监控中断列表中记录中断处理开始时间tc1;当检测到中断处理出口钩子函数被调用时,判断是否监控中断;若是则记录中断处理结束时间tc2,计算中断处理时间=tc2-tc1;判断中断处理时间是否大于阈值;若是则向监测控制组件上报中断处理超时的异常信息;
预设周期内中断的处理数量是否达到阈值的处理步骤包括:启动定时器,定时间隔为预设周期,并记录当前各监控中断的当前计数c1;定时器到期,获取各监控中断的当前计数c2,计算周期内中断处理数量=c2-c1;判断中断处理数量是否小于阈值,若是则向监测控制组件上报预设周期内关键中断处理数量不足的异常信息。
在一些实施方式中,监测控制组件中预设的异常处理策略包括如下的至少一项:
连续X次发现任务调度延迟超过阈值,则切换虚拟机;
任何一个关键任务异常退出,则切换虚拟机;
连续Y次发现关键中断处理时间超过阈值,则切换虚拟机;
连续Z次发现中断延迟时间超过阈值,则切换虚拟机;
其中,X、Y和Z为预设的整数值。
在一些实施方式中,所述虚拟机包括主用虚拟机和备用虚拟机,当主用虚拟机和备用虚拟机处于对称模式,分别具备相同的设备资源和能力时,则监测控制组件的处理步骤包括:
S1,启动心跳定时器;
S2,等待安全度量组件上报状态信息,并获取心跳定时器信息;
S3,判断是否存在虚拟机丢心跳的情况发生,若是则进入S5,若否则进入S4;
S4,判断是否有虚拟机的安全度量组件上报异常信息,若否则返回S2,若是则进入S5;
S5,根据预设的异常处理策略判断是否需要切换;若否则记录、上报异常信息后返回S2,若是则进入S6;
S6,判断当前异常的虚拟机是否为主用虚拟机;
S7,若否则主用虚拟机继续接管业务,重启备用虚拟机,然后记录并上报重启信息;若是则将备用虚拟机变为主用虚拟机并接管业务,同时改变原主用虚拟机为备用虚拟机并重启,然后记录并上报重启信息。
在一些实施方式中,所述虚拟机包括主用虚拟机和备用虚拟机,当主用虚拟机和备用虚拟机处于非对称模式,备用虚拟机相对于主用虚拟机获得更少设备资源和能力时,则监测控制组件的处理步骤包括:
S1,启动心跳定时器;
S2,等待安全度量组件上报状态信息,并获取心跳定时器信息;
S3,判断是否存在虚拟机丢心跳的情况发生,若是则进入S6,若否则进入下一步;
S4,判断是否有虚拟机的安全度量组件上报异常信息,若否则返回S2,若是则进入S5;
S5,根据预设的异常处理策略判断是否需要切换;若否则记录、上报异常信息并返回S2,若是则进入S6;
S6,判断当前异常的虚拟机是否为主用;若否则主用虚拟机继续接管业务,重启备用虚拟机,并记录和上报重启信息;则是则进入S7;
S7,备用虚拟机接管业务,重启主用虚拟机,并记录和上报重启信息;
S8,判断主用虚拟机是否重启成功,若重启成功则由主用虚拟机重新接管业务后进入下一个循环,若没有重启成功则返回S5。
依据本申请的另一方面,提供了一种虚拟机监控方法,所述虚拟机监控方法包括:
监测当前运行的虚拟机如下至少一种状态信息:任务运行的异常状态、中断处理的异常状态、心跳信息或业务状态信息;
获取所述状态信息,根据所述状态信息和预设的异常处理策略判断是否需要切换当前运行的虚拟机;
当判定需要切换虚拟机时,为待启动的虚拟机分配硬件设备资源,由该虚拟机接管任务。
由上述可知,根据本申请公开的虚拟机监控系统,能够降低系统失效时间,提升系统可用时间和可靠性,提升主备虚拟机切换的及时性和准确性,并且还可以减少用户的硬件成本。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本申请一些实施例的虚拟机监控系统的结构示意图;
图2示出了根据本申请一些实施例的虚拟机监控系统执行架构的结构示意图;
图3示出了根据本申请一些实施例的关键任务调度延迟监控的流程示意图;
图4示出了根据本申请一些实施例的预设周期内的关键任务的运行份额监控的流程示意图;
图5示出了根据本申请一些实施例的关键任务异常退出监控的流程示意图;
图6示出了根据本申请一些实施例的监控中断延迟处理的流程示意图;
图7示出了根据本申请一些实施例的监控关键中断处理超时处理的流程示意图;
图8示出了根据本申请一些实施例的预设周期内关键中断处理数量统计的流程示意图;
图9示出了根据本申请一些实施例的利用异常处理策略判断是否切换虚拟机的流程示意图;
图10示出了根据本申请另一些实施例的利用异常处理策略判断是否切换虚拟机的流程示意图;
图11示出了根据本申请一些实施例的虚拟机监控方法的流程示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
本申请实施例针对现有的基于虚拟机监控器的多虚拟机高可用系统应用在端侧关键性业务场景的缺陷,提供了一种适用于关键性业务场景的高可用的虚拟机监控方案,该虚拟机监控方案基于符合功能安全标准的监控器Hypervisor,提供监测控制组件,资源分配组件,以及至少部分运行在虚拟机里的安全度量组件,可以在不同的关键性业务场景中构建各种高可用软件系统,提供多种主备切换模式,满足关键性业务对时间响应延迟的要求,减少业务不可用时间,提升系统的可靠性级别。
图1示出了根据本申请一个实施例的虚拟机监控系统的结构示意图,所述系统包括:
安全度量组件110,用于监测当前运行的虚拟机如下至少一种状态信息:任务运行的异常状态、中断处理的异常状态、心跳信息或业务状态信息;需要说明的是,所述虚拟机一般包括一个主用虚拟机和一个或多个的备用虚拟机;
监测控制组件120,用于获取安全度量组件上报的状态信息,根据所述状态信息和预设的异常处理策略判断是否需要切换当前运行的虚拟机;
资源分配组件130,用于当监测控制组件判定需要切换虚拟机时,为待启动的备用虚拟机分配硬件设备资源。
在一些可选的实施方式中,结合图2所示的架构结构示意图,安全度量组件110可以设置在虚拟机内;也可以分为多个子组件,分别设置在虚拟机内和监控器内;而监控控制组件和资源分配组件是运行在监控器(Hypervisor)中的软件组件。
在一些实施例中,所述安全度量组件内的各小组件之间或者所述安全度量组件与所述监测控制组件之间通过共享内存通道通讯。可选的,上述共享内存通道需要进行改造和加固处理,以满足通讯的要求。
根据上述的实施例,本申请可以获得如下的有益效果:通过至少部分运行虚拟机内的安全度量组件,可以对虚拟机内部业务状态监控更及时,可以减少系统失效风险,提高了系统安全可用的时间。
安全度量组件的监控内容是针对操作系统的通用功能的,可以方便的适配到多种类型的操作系统,无需专门指定操作系统,提升了本申请应用的便利性和广泛性。
本申请使用共享内存通道替换常规的以太网通道,保证了监控的时间确定性,使得能用于汽车控制,飞机控制,工业机器人等需要实时控制的系统。
本申请的监测控制组件运行于符合功能安全要求的hypervisor中,并提供了异常策略定制机制,既能保证自身也符合功能安全要求,又可方便的应用于不同业务的控制系统,提升了高可用的应用场景。
在一些实施例中,结合图2所示,在整个高可用的虚拟机监控系统架构中,各组件分别功能包括:
监控器中的资源分配组件根据用户的配置,将设备配置给不同的虚拟机,用户可以通过合适的配置,将合适的设备集合分给主用虚拟机和备用虚拟机,让两个虚拟机都有足够的设备来完成业务运行。设备配置信息根据虚拟机操作系统支持的方式,以虚拟固件,DTS平坦设备树文件等方式传递给虚拟机操作系统。同时,资源分配组件使用二级地址映射等硬件功能来保证虚拟机对设备的访问隔离性,即虚拟机只能使用分配给它的设备,无法访问到不属于它的设备。
监测控制组件负责通过安全度量组件来监控主用虚拟机的异常状态,在监控到当前的虚拟机状态不正常,达到切换阈值时,启动切换,利用其他虚拟机接管业务,同时还可以重启发生异常的虚拟机,以检测该异常虚拟机的可用性,保障其需要其接管业务时能够顺利工作。
在一些实施例中,安全度量组件是运行在虚拟机上的软件组件,负责监控虚拟机的操作系统状态,主要包括:
任务的运行状态,用户可配置需要监控的关键任务列表(包括系统任务和应用任务),可监控的任务运行状态包括:
任务的调度延迟是否小于预设的阈值。
预设周期内,任务的运行份额是否达到预设的阈值。
监控关键任务是否异常退出。
关键中断处理的处理状态,用户可配置需要监控的中断列表,可监控的中断处理的处理状态包括:
操作系统的中断处理延迟是否会小于设置的阈值,通过监控操作系统关闭中断时间来间接监控。
关键中断的中断处理程序的处理时间是否超时。
预设周期内,关键中断的处理数量是否达到设置值。
进一步的,还包括使用共享内存通道,发送信息给Hypervisor的监测控制组件,发送的消息有:心跳消息;监控的关键任务或关键中断的状态异常消息;以及业务状态同步信息。
需要指出的是,安全度量组件至少部分的运行在用户虚拟机上,负责监控用户虚拟机关键任务和关键中断的运行状态,同时向Hypervisor中的监测控制组件上报心跳消息,异常状态,业务应用也可以通过安全度量组件的通道,上报业务状态信息。
通过安全度量组件,相比常规的心跳,Hypervisor可以更及时的掌握关键任务,关键中断的运行状况,可以更及时的启动错误处理流程,减少系统的失效时间,提升整个系统的可用性。
在一些具体的实施方式中,安全度量组件对关键任务监控的相关处理流程包括:
监控关键任务的调度延迟是否小于阈值的处理流程如图3所示,具体步骤包括:当检测到使能任务的钩子函数被调用时,判断该使能任务是否为监控任务;若是则在监控任务列表中记录任务使能时间td1;任务切换钩子函数被调用时,判断切换的目的任务是否为监控任务;若是则记录任务调度时间td2,计算调度延迟时间td2-td1;判断调度延迟时间是否大于阈值,若大于阈值则向监测控制组件上报调度延迟超时的异常信息,若不大于阈值则不上报。
其中,任务使能钩子函数被调用与任务调度函数钩子被调用之间没有直接的顺序调用关系,有逻辑上的依赖关系(图3中使用虚线来表达了这种关系)。即任务使能钩子函数被调用后,不一定会在同一上下文中又会有任务使能钩子函数被调用,任务使能钩子函数被调用可能会在不同的上下文中被调用;但是,对于同一个被监控任务,需要任务使能钩子函数先被调用,记录该任务被使能(即任务被设置为可运行状态,被加入调度队列,等待CPU)的时间点td1,然后,任务调度函数钩子被调用,记录被监控任务被调度得到CPU的时间点td2,从而计算出调度延迟。
结合图4所示,监控关键任务在预设周期内调度份额的流程包括如下的步骤:启动定时器,定时间隔为预设周期,并记录当前各监控任务的已运行时间ts1;定时器到期,再次获取各监控任务的已运行时间片ts2,计算周期内各任务的运行份额=ts2-ts1;判断各任务的运行份额是否小于阈值;若小于阈值,则向监测控制组件上报任务运行份额不足的异常信息。
需要说明的是,定时器功能和任务执行时间可以从虚拟机操作系统中得到。
监控关键任务是否异常退出的处理流程如图5所示,步骤包括:当检测到任务退出钩子函数被调用时,判断退出的任务是否为关键任务;若是则向监测控制组件上报关键任务异常退出的状态信息。
需要指出的是,根据图3-图5,为了能够在系统运行时实现上述监控功能,需要预先在配置文件对关键任务、阈值、预设周期等信息进行配置,并且在操作系统内预先注册或者挂接钩子函数。在虚拟机启动后,从配置文件中读取关键任务、预设周期、以及阈值等信息,并启动安全度量组件的监控功能。
需要注意的是,在操作系统注册了任务退出钩子函数后,并不会在监控任务的上下语境中调用该钩子函数,而是随着系统运行,当系统中有任务退出时,才会调用该任务退出函数钩子,所以图5中用虚线表示了这一点。
本申请其他实施例还示出了安全度量组件监控中断延迟的处理流程:
安全度量组件监控中断延迟的处理流程如图6所示,具体的,中断处理延迟是否会大于阈值的处理步骤包括:当检测到操作系统中断关闭函数的中断关闭钩子函数被调用时,记开始时间ti1;当检测到操作系统中断开启函数的中断开启钩子函数被调用时,记结束时间ti2,计算中断关闭时间ti2-ti1;判断中断关闭时间是否大于阈值,若大于阈值则向监测控制组件上报中断延迟超时的状态信息。
其中,中断开启和中断关闭的钩子函数挂接功能,在开源操作系统中,可能有现成接口,如果没有也可以通过源码修改来添加,对于闭源操作系统,如果不提供相关接口,也可以看该闭源操作系统是否提供相应中断关闭时间统计,或中断延迟监控的功能,如果都不能提供,则无法对该操作系统进行中断延迟监控,从功能安全的时间确定性角度来看,该闭源操作系统也不太适合承载关键性业务。
图6是基于操作系统能提供中断开启和中断关闭的钩子函数挂接功能的处理流程。其中,在中断延迟监控功能开启后,程序不会直接执行到中断关闭钩子函数被调用,而是随着系统运行,可能在由其他任务触发,在不同的上下文中被调用,因此图中用虚线表示。
对关键中断处理时间监控流程如图7所示,中断处理程序的处理时间是否超过阈值的处理步骤包括:当检测到中断处理入口钩子函数被调用时,判断是否监控中断;若是则在监控中断列表中记录中断处理开始时间tc1;当检测到中断处理出口钩子函数被调用时,判断是否监控中断;若是则记录中断处理结束时间tc2,计算中断处理时间=tc2-tc1;判断中断处理时间是否大于阈值;若是则向监测控制组件上报中断处理超时的异常信息。
基于操作系统能提供中断处理入口钩子和中断处理出口的钩子挂接的处理流程,在开源操作系统一般有现成接口,如果没有也可以通过源码修改来添加。其中,在中断超时监控功能开启后,程序不会直接执行到中断处理入口钩子函数被调用,而是随着系统运行,会在操作系统的中断处理流程中被调用,因此图7中用虚线表示。
监控周期内关键中断处理数量的流程如图8所示,预设周期内中断的处理数量是否达到阈值的处理步骤包括:启动定时器,定时间隔为预设周期,并记录当前各监控中断的当前计数c1;定时器到期,获取各监控中断的当前计数c2,计算周期内中断处理数量=c2-c1;判断中断处理数量是否小于阈值,若是则向监测控制组件上报预设周期内关键中断处理数量不足的异常信息。
流程中所示的定时器功能和中断数量获取功能,大部分操作系统都会提供。
根据本申请的其他的一些实施例,还给出了监测控制组件的处理流程,具体参见图9和图10所示。其中,图9主要适用于分配给主用虚拟机和备用虚拟机的设备资源相同的情况,因此,当其中一个虚拟机异常需要切换时,另一个虚拟机就成为主用,并接管业务,且并不需要人为地切换回原虚拟机上,当然这种模式也可以适用于设备资源不同的情况。图10一般适用于主用虚拟机和备用虚拟机的设备资源不对等的情况,一旦主用虚拟机恢复启动后,需要将业务切换回主用虚拟机,否则可能出现超负载运行的情况。
具体的结合图9所示,当主备虚拟机处于对称模式时,监测控制组件的处理步骤包括:
S1,启动心跳定时器;
S2,等待安全度量组件上报状态信息,并获取心跳定时器信息;
S3,判断是否存在虚拟机丢心跳的情况发生,若是则进入S5,若否则进入S4;
S4,判断是否有虚拟机的安全度量组件上报异常信息,若否则返回S2,若是则进入S5;
S5,根据预设的异常处理策略判断是否需要切换;若否则记录、上报异常信息后返回S2,若是则进入S6;
S6,判断当前异常的虚拟机是否为主用虚拟机;
S7,若否则主用虚拟机接管业务,重启备用虚拟机,然后记录并上报重启信息;若是则将备用虚拟机变为主用虚拟机并接管业务,同时改变原主用虚拟机为备用虚拟机并重启,然后记录并上报重启信息。
需要指出的是,Hypervisor启动时,会按照用户配置,分别启动主用和备用虚拟机(各虚拟机的设备资源配置在虚拟机配置文件中,由设备资源管理组件提供功能,这也是所有Hypervisor的基本功能,行业通用技术),监测控制组件会使用高速共享内存通道(Hypervisor与虚拟机,以及虚拟机之间的高速共享内存通道,是大多数Hypervisor都会提供的功能,属于行业通用技术,不涉及本申请的关键技术点,因此本申请不详细说明)与虚拟机中的安全度量组件建立连接,监控虚拟机状态,在监控主用虚拟机状态异常时,按照用户配置的策略,做告警,上报,切换到备用等错误处理操作。
图9中,异常处理策略主要是由最终用户根据业务情况配置,可配置的异常策略有如下参考:
连续X次发现关键任务调度延迟超过阈值,需重启虚拟机。
任何一个关键任务异常退出,需重启虚拟机。
连续Y次发现关键中断处理时间超过阈值,需重启虚拟机。
连续Z次发现中断延迟时间超过阈值,需重启虚拟机。
在图9的模式1中,主用虚拟机和备用虚拟机都有相同的设备资源配置。可执行完全相同的业务。缺点就是系统成本高,功耗大。
在另一些实施例中,监测控制组件还提供了另一种控制模块,该情况下,备用虚拟机配置较少的设备资源,临时提供降级的业务,在主用虚拟机恢复正常后,再由主用虚拟机提供业务,备用虚拟机再重新切换为待用状态。结合图10所示,当主备虚拟机处于非对称模式时,监测控制组件的处理步骤包括:
S1,启动心跳定时器;
S2,等待安全度量组件上报状态信息,并获取心跳定时器信息;
S3,判断是否存在虚拟机丢心跳的情况发生,若是则进入S6,若否则进入下一步;
S4,判断是否有虚拟机的安全度量组件上报异常信息,若否则返回S2,若是则进入S5;
S5,根据预设的异常处理策略判断是否需要切换;若否则记录、上报异常信息并返回S2,若是则进入S6;
S6,判断当前异常的虚拟机是否为主用;若否则主用虚拟机接管业务,重启备用虚拟机,并记录和上报重启信息;若是则进入S7;
S7,备用虚拟机接管业务,重启主用虚拟机,并记录和上报重启信息;
S8,判断主用虚拟机是否重启成功,若重启成功则由主用虚拟机重新接管业务后进入下一个循环,若没有重启成功则返回S5。
在图10中,异常处理策略主要是由最终用户根据业务情况配置,和图9的模式类似,可配置的异常策略有如下参考:
连续X次发现关键任务调度延迟超过阈值,需重启虚拟机。
任何一个关键任务异常退出,需重启虚拟机。
连续Y次发现关键中断处理时间超过阈值,需重启虚拟机。
连续Z次发现中断延迟时间超过阈值,需重启虚拟机。
其中,上述X、Y和Z取正整数值。
相对于图9的模式,图10的模式构建的系统,需要的成本更小,更具经济性。
参见图11所示,本申请还提供了一种虚拟机监控方法,包括如下的步骤:
步骤S110,监测当前运行的虚拟机如下至少一种状态信息:任务运行的异常状态、中断处理的异常状态、心跳信息或业务状态信息;
步骤S120,获取所述状态信息,根据所述状态信息和预设的异常处理策略判断是否需要切换当前运行的虚拟机;
步骤S130,当判定需要切换虚拟机时,为待启动的虚拟机分配硬件设备资源,由该备用的虚拟机接管任务。
根据该方法实施例,能够降低系统失效时间,提升系统可用时间和可靠性,提升主备虚拟机切换的及时性和准确性,并且还可以减少用户的硬件成本。
需要说明的是,上述各方法实施例的具体实施方式可以参照前述对应系统实施例的具体实施方式进行,在此不再赘述。
综上,本申请的实施例获得如下特点或者有益效果:
降低系统失效时间,提升系统可用时间。例如,通常的基于Linux的汽车智能驾驶系统,一次热重启到业务正常运行,需要3-10秒。而使用本申请构建的高可用系统,做一次主备热切换,正常可以在毫秒级完成,相对于将系统失效时间从秒级降低到毫秒级。
提升系统的可靠性。根据本申请构建的高可用系统,相当于给原来的功能链路中添加并联节点。假设单系统的出错概率为0.01,在并联两个单系统为高可用系统后,则高可用系统的出错概率为0.0001,系统的可靠性提升100倍。
提升主备切换的及时性和准确性。常规的,基于Hypervisor的高可用系统使用心跳来监控,当Hypervisor监控到心跳丢失时,虚拟机系统中业务已经失效一段时间了,还有可能心跳没有丢失,但业务已经失效。通过本申请提供的安全度量组件,可以更准确,更及时的监控到业务故障,及时触发主备切换,减少高可用系统的失效时间。
提升系统的经济性。常规的方法通常需要多个物理机构建,而本申请提供的方案,可以在单物理机上,基于Hypervisor来构建高可用系统,减少用户的硬件成本。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本申请并帮助理解各个申请方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的栅格地图构建装置中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
本申请实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的虚拟机监控方法。
应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种虚拟机监控系统,其特征在于,所述虚拟机监控系统包括:
安全度量组件,用于监测当前运行的虚拟机如下至少一种状态信息:任务运行的异常状态、中断处理的异常状态、心跳信息或业务状态信息;
监测控制组件,用于获取安全度量组件上报的状态信息,根据所述状态信息和预设的异常处理策略判断是否需要切换当前运行的虚拟机;
资源分配组件,用于当监测控制组件判定需要切换虚拟机时,为待启动的虚拟机分配硬件设备资源。
2.根据权利要求1所述的虚拟机监控系统,其特征在于,所述安全度量组件内的各小组件之间或者所述安全度量组件与所述监测控制组件之间通过共享内存通道通讯。
3.根据权利要求1所述的虚拟机监控系统,其特征在于,所述安全度量组件监测的任务的运行异常状态包括如下的至少一项:
任务的调度延迟是否大于阈值;
预设周期内任务的运行份额是否达到阈值;
任务是否异常退出;
所述安全度量组件监测的中断处理的异常状态包括如下的至少一项:
操作系统的中断处理延迟是否大于阈值;
中断处理程序的处理时间是否超过阈值;
预设周期内中断的处理数量是否达到阈值。
4.根据权利要求3所述的虚拟机监控系统,其特征在于,所述安全度量组件监测的逻辑包括:
在虚拟机的配置文件中配置任务列表、阈值和/或预设周期,在虚拟机操作系统内注册钩子函数;当虚拟机在运行时,根据操作系统内各功能模块中不同任务的钩子函数的调用情况、所述阈值和/或所述预设周期确定所述异常状态。
5.根据权利要求3或4所述的虚拟机监控系统,其特征在于,任务的调度延迟是否小于阈值的处理步骤包括:当检测到使能任务的钩子函数被调用时,判断该使能任务是否为监控任务;若是则在监控任务列表中记录任务使能时间td1;任务切换钩子函数被调用时,判断切换的目的任务是否为监控任务;若是则记录任务调度时间td2,计算调度延迟时间td2-td1;判断调度延迟时间是否大于阈值,若大于阈值则向监测控制组件上报调度延迟超时的异常信息,若不大于阈值则不上报;
预设周期里任务的运行份额是否达到阈值的处理步骤包括:启动定时器,定时间隔为预设周期,并记录当前各监控任务的已运行时间ts1;定时器到期,再次获取各监控任务的已运行时间片ts2,计算周期内各任务的运行份额=ts2-ts1;判断各任务的运行份额是否小于阈值;若小于阈值,则向监测控制组件上报任务运行份额不足的异常信息;
任务是否异常退出的处理步骤包括:当检测到任务退出钩子函数被调用时,判断退出的任务是否为关键任务;若是则向监测控制组件上报关键任务异常退出的状态信息。
6.根据权利要求3或4所述的虚拟机监控系统,其特征在于,操作系统的中断处理延迟是否会大于阈值的处理步骤包括:当检测到操作系统中断关闭函数的中断关闭钩子函数被调用时,记开始时间ti1;当检测到操作系统中断开启函数的中断开启钩子函数被调用时,记结束时间ti2,计算中断关闭时间ti2-ti1;判断中断关闭时间是否大于阈值,若大于阈值则向监测控制组件上报中断延迟超时的状态信息;
中断处理程序的处理时间是否超过阈值的处理步骤包括:当检测到中断处理入口钩子函数被调用时,判断是否监控中断;若是则在监控中断列表中记录中断处理开始时间tc1;当检测到中断处理出口钩子函数被调用时,判断是否监控中断;若是则记录中断处理结束时间tc2,计算中断处理时间=tc2-tc1;判断中断处理时间是否大于阈值;若是则向监测控制组件上报中断处理超时的异常信息;
预设周期内中断的处理数量是否达到阈值的处理步骤包括:启动定时器,定时间隔为预设周期,并记录当前各监控中断的当前计数c1;定时器到期,获取各监控中断的当前计数c2,计算周期内中断处理数量=c2-c1;判断中断处理数量是否小于阈值,若是则向监测控制组件上报预设周期内关键中断处理数量不足的异常信息。
7.根据权利要求1-4中任一项所述的虚拟机监控系统,其特征在于,监测控制组件中预设的异常处理策略包括如下的至少一项:
连续X次发现任务调度延迟超过阈值,则切换虚拟机;
任何一个关键任务异常退出,则切换虚拟机;
连续Y次发现关键中断处理时间超过阈值,则切换虚拟机;
连续Z次发现中断延迟时间超过阈值,则切换虚拟机;
其中,X、Y和Z为预设的整数值。
8.根据权利要求1-4中任一项所述的虚拟机监控系统,其特征在于,所述虚拟机包括主用虚拟机和备用虚拟机,当主用虚拟机和备用虚拟机处于对称模式,分别具备相同的设备资源和能力时,则监测控制组件的处理步骤包括:
S1,启动心跳定时器;
S2,等待安全度量组件上报状态信息,并获取心跳定时器信息;
S3,判断是否存在虚拟机丢心跳的情况发生,若是则进入S5,若否则进入S4;
S4,判断是否有虚拟机的安全度量组件上报异常信息,若否则返回S2,若是则进入S5;
S5,根据预设的异常处理策略判断是否需要切换;若否则记录、上报异常信息后返回S2,若是则进入S6;
S6,判断当前异常的虚拟机是否为主用虚拟机;
S7,若否则主用虚拟机继续接管业务,重启备用虚拟机,然后记录并上报重启信息;若是则将备用虚拟机变为主用虚拟机并接管业务,同时改变原主用虚拟机为备用虚拟机并重启,然后记录并上报重启信息。
9.根据权利要求1-4中任一项所述的虚拟机监控系统,其特征在于,所述虚拟机包括主用虚拟机和备用虚拟机,当主用虚拟机和备用虚拟机处于非对称模式,备用虚拟机相对于主用虚拟机获得更少设备资源和能力时,则监测控制组件的处理步骤包括:
S1,启动心跳定时器;
S2,等待安全度量组件上报状态信息,并获取心跳定时器信息;
S3,判断是否存在虚拟机丢心跳的情况发生,若是则进入S6,若否则进入下一步;
S4,判断是否有虚拟机的安全度量组件上报异常信息,若否则返回S2,若是则进入S5;
S5,根据预设的异常处理策略判断是否需要切换;若否则记录、上报异常信息并返回S2,若是则进入S6;
S6,判断当前异常的虚拟机是否为主用;若否则主用虚拟机继续接管业务,重启备用虚拟机,并记录和上报重启信息;若是则进入S7;
S7,备用虚拟机接管业务,重启主用虚拟机,并记录和上报重启信息;
S8,判断主用虚拟机是否重启成功,若重启成功则由主用虚拟机重新接管业务后进入下一个循环,若没有重启成功则返回S5。
10.一种虚拟机监控方法,其特征在于,所述虚拟机监控方法包括:
监测当前运行的虚拟机如下至少一种状态信息:任务运行的异常状态、中断处理的异常状态、心跳信息或业务状态信息;
获取所述状态信息,根据所述状态信息和预设的异常处理策略判断是否需要切换当前运行的虚拟机;
当判定需要切换虚拟机时,为待启动的虚拟机分配硬件设备资源,由该虚拟机接管任务。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202511097502.5A CN120973473A (zh) | 2025-08-06 | 2025-08-06 | 虚拟机监控系统和方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202511097502.5A CN120973473A (zh) | 2025-08-06 | 2025-08-06 | 虚拟机监控系统和方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN120973473A true CN120973473A (zh) | 2025-11-18 |
Family
ID=97642243
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202511097502.5A Pending CN120973473A (zh) | 2025-08-06 | 2025-08-06 | 虚拟机监控系统和方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN120973473A (zh) |
-
2025
- 2025-08-06 CN CN202511097502.5A patent/CN120973473A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112416581B (zh) | 定时任务的分布式调用系统 | |
| US8868968B2 (en) | Partial fault processing method in computer system | |
| JP4054616B2 (ja) | 論理計算機システム、論理計算機システムの構成制御方法および論理計算機システムの構成制御プログラム | |
| US9483314B2 (en) | Systems and methods for fault tolerant batch processing in a virtual environment | |
| CN109788068B (zh) | 心跳状态信息上报方法、装置和设备及计算机存储介质 | |
| WO2017067484A1 (zh) | 一种虚拟化数据中心调度系统和方法 | |
| CN113391902B (zh) | 一种任务调度方法及设备、存储介质 | |
| CN109286529A (zh) | 一种恢复RabbitMQ网络分区的方法及系统 | |
| US7925922B2 (en) | Failover method and system for a computer system having clustering configuration | |
| KR20200078328A (ko) | 소프트웨어 애플리케이션 프로세스를 모니터링하는 시스템 및 방법 | |
| CN118331708A (zh) | 一种动态队列调度方法及系统 | |
| WO2018099090A1 (zh) | 从云计算系统中确定主调度器的方法及装置 | |
| US7941810B2 (en) | Extensible and flexible firmware architecture for reliability, availability, serviceability features | |
| CN117573306A (zh) | 批量任务调度系统、方法、装置、计算机设备和存储介质 | |
| CN120880886B (zh) | 一种集群故障处理方法及相关设备 | |
| CN115080199A (zh) | 任务调度方法、系统、设备、存储介质及程序产品 | |
| CN120973473A (zh) | 虚拟机监控系统和方法 | |
| CN119046050A (zh) | 一种故障上报方法、电子设备、介质及计算机程序产品 | |
| CN118409931A (zh) | 一种多线程的监测系统、方法及存储介质 | |
| CN117055519A (zh) | 自动驾驶任务的故障诊断方法及装置 | |
| CN116800590A (zh) | 故障迁移方法、装置、电子设备和计算机存储介质 | |
| Thebe et al. | Scheduling restartable jobs with short test runs | |
| CN121455646B (zh) | 中断处理方法、芯片、电子设备、介质及产品 | |
| JP4703681B2 (ja) | クラスタシステム及び引き継ぎ先ノード決定方法 | |
| CN121996356A (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 |