CN101887393A - 基于半虚拟化技术的设备故障复现方法及系统 - Google Patents
基于半虚拟化技术的设备故障复现方法及系统 Download PDFInfo
- Publication number
- CN101887393A CN101887393A CN2010102207338A CN201010220733A CN101887393A CN 101887393 A CN101887393 A CN 101887393A CN 2010102207338 A CN2010102207338 A CN 2010102207338A CN 201010220733 A CN201010220733 A CN 201010220733A CN 101887393 A CN101887393 A CN 101887393A
- Authority
- CN
- China
- Prior art keywords
- interrupt event
- interrupt
- event
- playback
- log
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于半虚拟化技术的设备故障复现方法及系统,其中,该方法包括:通过前端设备驱动与后端设备驱动之间的事件通道,虚拟机管理器获取并记录日志信息,其中,日志信息包括:中断事件的类型、外部输入值及发生的时间点;响应于目标操作系统用户输入的回放命令,虚拟机管理器依次按照记录的各个中断事件发生的时间点,根据各个中断事件的类型及外部输入值,模拟产生对应于各个中断事件的虚拟中断,并通过事件通道向目标操作系统发送虚中断消息,使目标操作系统执行对应该虚拟中断的处理操作。通过本发明,可以减少记录的日志占用的存储空间,提高回放的精度和效率。
Description
技术领域
本发明涉及嵌入式领域,具体而言,涉及一种基于半虚拟化技术的设备故障复现方法及系统。
背景技术
在产品的维护阶段,经常会遇到各种各样的故障与异常。目前,传统的故障定位方法是根据客户描述来重构故障发生时的场景,以期望出现客户描述的现象。采用这种方法一般只能复现一部分简单的故障,这种故障的解决周期一般也非常之短;而对于复现要求极其苛刻的故障来说,采用这种方式一般无法复现,从而导致这类故障的解决时间较长,进而延长了故障解决的平均周期。
基于Xen提供的半虚拟化平台将对操作系统进行隔离和封装,在Xen虚拟机中,所有的硬件都是通过软件模拟实现的。在Xen的半虚拟化模型下非特权域(即客户操作系统)并不能直接操作物理硬件,所有对硬件设备的请求都是由特权域代与其完成的。在前后端驱动之间,即特权域与非特权域之间的共享内存区和事件通道上可以截获所有外部中断的中断号与数据,因此,也可以通过对共享内存区和事件通道的操作来达到模拟中断的效果。
在相关技术中,基于Xen提供的半虚拟化平台提出了一种回放技术,该回放技术的执行包括两个阶段:记录和回放。其中,初始化记录阶段的目的是捕获被监控程序产生的时间,并记录在下个阶段重新生成这些事件所需的全部数据。在随后的回放阶段,程序将根据被捕获的记录运行。
在相关技术中主要有两种方法重现系统的运行状态,一种是基于内容或数据驱动的方法,另一种是基于顺序或控制驱动的方法。其中,前者基于这样的原理:如果能够为正在执行的机器指令提供正确的输入,则这条指令的输出则必然是正确的,因此,在系统运行过程中,记录系统执行的每一条机器指令,从而达到重现系统运行状态的目的。而基于顺序或控制驱动的方法,只需要记录少量来自外部事件(例如,I/O通道、程序文件或其他线程对应用程序的输入),并保证这些输入在与原有执行相同的时间顺序被回放,从而获得一个等价的执行效果。
发明人发现,在上述第一种方法中,由于需要记录每条指令,从而会产生巨大的数据量,占用大量的存储空间;而第二种方法中需要额外记录一些与指令执行序列相关的信息,而且当需要回放到某个特定的状态时需要执行更多的指令,从而导致花费的时间相对较长。
发明内容
本发明的主要目的在于提供一种基于半虚拟化技术的设备故障复现方法及系统,以至少解决上述问题之一。
根据本发明的一个方面,提供了一种基于半虚拟化技术的设备故障复现方法,包括:通过前端设备驱动与后端设备驱动之间的事件通道,虚拟机管理器获取并记录日志信息,其中,日志信息包括:中断事件的类型、外部输入值及发生的时间点;响应于目标操作系统用户输入的回放命令,虚拟机管理器依次按照记录的各个中断事件发生的时间点,根据各个中断事件的类型及外部输入值,模拟产生对应于各个中断事件的虚拟中断,并通过事件通道向目标操作系统发送虚中断消息,使目标操作系统执行对应该虚拟中断的处理操作。
根据本发明的另一方面,提供了一种基于半虚拟化技术的设备故障复现系统,包括:日志记录子系统,用于通过前端设备驱动与后端设备驱动之间的事件通道,获取并记录日志信息,其中,日志信息包括:中断事件的类型、外部输入值及发生的时间点;日志回放子系统,用于响应于目标操作系统用户输入的回放命令,依次按照记录的各个中断事件发生的时间点,根据各个中断事件的类型及外部输入值,模拟产生对应于记录的各个中断事件的虚拟中断,并通过事件通道向目标操作系统发送虚中断消息,使目标操作系统执行对应该虚拟中断的处理操作。
通过本发明,虚拟机管理器只记录不确定的中断事件及其发生的时间点来实现回放,从而减少了记录的日志占用的存储空间,并且,通过记录中断事件发生的时间点,可以提高回放的精确度,提高回放的效率,进而缩短故障排除的周期。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为基于Xen的半虚拟化模型的结构示意图;
图2为根据本发明实施例一的基于半虚拟化技术的设备故障复现系统的结构示意图;
图3为根据本发明实施例一的日志记录子系统10的结构示意图;
图4为根据本发明实施例一的日志回放子系统20的结构示意图;
图5为根据本发明实施例一的基于半虚拟化技术的设备故障复现方法的流程图;
图6为根据本发明实施例二的基于半虚拟化技术的设备故障复现系统的示意图;
图7为本发明实施例二中的日志记录子系统的体系结构图;
图8为本发明实施例二中的日志回放子系统的体系结构图;
图9为本发明实施例三中日志记录子系统命令接收线程的工作流程图;
图10为本发明实施例三中日志记录子系统的日志传输线程的工作流程图;
图11为本发明实施例三中在日志记录子系统开启的状态下,非特权域运行的流程图;
图12为本发明实施例三中日志回放子系统命令接收线程工作流程图;
图13为本发明实施例三中日志回放子系统的日志传输线程的工作流程图;
图14为本发明实施例三中日志回放子系统的中断模拟工作流程图;
图15为本发明实施例三中在日志回放子系统运行过程中,非特权域的运行流程图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1为基于Xen的半虚拟化模型的结构示意图,在基于Xen的半虚拟化模型下,非特权域(即客户操作系统,也可称为目标操作系统)并不能直接操作物理硬件,所有对硬件设备的请求都是由特权域代其完成的。在前后端设备驱动之间,即特权域与非特权域之间的共享内存区和事件通道上可以截获所有外部中断的中断信号与数据,也可以通过对共享内存区和事件通道的操作来达到模拟中断的效果。
实施例一
图2为根据本发明实施例一的基于半虚拟化技术的设备故障复现系统的结构示意图,该系统位于虚拟机管理器,主要包括:日志记录子系统10和日志回放子系统20。其中,日志记录子系统10,用于通过前端设备驱动与后端设备驱动之间的事件通道,获取并记录日志信息,其中,该日志信息包括:中断事件的类型、外部输入值及中断事件发生的时间点,中断事件包括:在接收到目标操作系统用户输入的记录开始命令和记录结束命令期间发生的所有中断事件;日志回放子系统20,用于响应于目标操作系统用户输入的回放命令,依次按照记录的各个中断事件发生的时间点,根据各个中断事件的类型及外部输入值,模拟产生对应于记录的各个中断事件的虚拟中断,并通过事件通道向目标操作系统发送虚中断消息,使目标操作系统执行对应该虚拟中断的处理操作,即回放。
对于一段无外界输入的封闭代码,在同一机器上运行多次,每次的结果都是相同的。因此,在本发明实施例中,日志记录子系统10只记录目标操作系统(即客户端操作系统)运行过程中的不确定性事件(即中断事件)和其发生的时间点,便可构成回放所需要的系统日志,从而可以减少占用的存储空间。
由于相关技术中一是通过记录系统执行的每一条机器指令,另一种方式是只记录外部事件发生的顺序而不记录事件发生的时间点,从而导致记录的日志占用的存储空间很大或者回放的效率较低等问题,而本实施例中,日志记录子系统10在只记录不确定的中断事件及中断事件发生的时间点,从而即可以减少记录的数据量又可以提高故障复现的精确度和效率,进而可以缩短故障排除的周期。
图3为根据本发明实施例一的日志记录子系统10的结构示意图,该日志记录子系统10可以包括:日志处理模块100、后端设备驱动模块102和日志记录模块104。其中,日志处理模块100,用于响应于目标操作系统用户输入的记录初始化命令,在前端设备驱动与后端设备驱动之间的共享内存区创建并初始化日志缓存区;后端设备驱动模块102,用于截获中断事件发生时的中断信息,将与该中断事件的回放有关的数据信息发送至日志缓存区,并触发日志记录模块104,其中,该数据信息包括:中断事件的类型和外部输入值;日志记录模块104,用于读取当前CPU性能计数器的值,并根据当前CPU性能计数器的值确定中断事件发生的时间点,将时间点与数据信息绑定作为中断事件的日志信息存储在日志缓存区。通过该日志记录子系统10,可以将系统发生的中断事件的日志记录在共享内存区,从而可以提高存储的效率。
图4为根据本发明实施例一的日志回放子系统20的结构示意图,该日志回放子系统20可以包括:日志写入模块200、回放模块202和中断模拟模块204。其中,日志写入模块200用于将用户空间的日志信息写入日志缓存区;回放模块200,用于从日志缓存区读取各个中断事件的日志信息,根据当前需要回放的中断事件发生的时间点,启动CPU性能计数器,并将中断事件的外部输入值返回给中断模拟模块204;中断模拟模块204,用于在CPU性能计数器溢出时,根据中断事件的外部输入值,完成中断事件的模拟,通过事件通道向目标操作系统发送虚中断。通过该日志回放子系统20可以通过将日志信息读入到共享内存区,通过CPU性能计数器进行计时来重现中断事件,可以提高中断事件回放的精确性。
图5为根据本发明实施例一的基于半虚拟化技术的设备故障复现方法的流程图,该方法主要包括以下步骤(步骤S502-步骤S504):
步骤S502、通过前端设备驱动与后端设备驱动之间的事件通道,虚拟机管理器(例如,上述日志记录子系统10)获取并记录日志信息,其中,该日志信息包括:中断事件的类型、外部输入值及中断事件发生的时间点,中断事件包括在接收到目标操作系统用户输入的记录开始命令和记录结束命令期间发生的所有中断事件;
例如,可以通过在设备驱动程序中设置钩子程序(HOOK程序),当有外部中断发生时,钩子程序会截获中断信息并进行分析,将与回放有关的所有数据(即中断事件的类型及外部输入数据)发送给虚拟机管理器处理;而虚拟机管理器在接收到HOOK程序发送的数据时,读取当前CPU性能计数器的值(即tick值)作为此次中断操作发生的时间点,写入虚拟机管理器处理预先在共享内存区域内创建并初始化好的日志缓存区中,或者,虚拟机管理器也可以将当前中断事件发生时的tick值与上一次中断事件发生时的tick值之差作为当前中断事件发生的时间点,这样可以减少存储时间点占用的空间。
当日志缓存区的剩余空间少于预定值(例如,不足20%)时,为了确保后续的中断事件能够被记录,虚拟机管理器可以将日志缓存区记录的日志信息拷贝到用户空间,并删除日志缓存区内存储的日志信息。
步骤S504、响应于目标操作系统用户输入的回放命令,虚拟机管理器依次按照记录的各个中断事件发生的时间点,根据各个中断事件的类型及外部输入值,模拟产生对应于记录的各个中断事件的虚拟中断,并通过事件通道向目标操作系统发送虚中断消息,使目标操作系统执行对应该虚拟中断的处理操作,即回放。
例如,用户端应用程序可以解析日志文件,将记录的中断事件发生的时间点、中断事件的类型及外部输入值等信息写入日志缓冲区,然后通过系统调用嵌入内核。在接收到回放命令时,虚拟机管理器判断日志缓存区内的日志信息是否小于预设值,如果是,则以虚中断方式将用户空间的日志信息读入日志缓存区,否则,直接从日志缓存区顺序读取一个中断事件的日志信息,根据该中断事件的时间点启动CPU性能计数器,当CPU性能计数器溢出时,根据该中断事件的类型和外部输入值模拟该中断事件,产生一个虚中断。
为了避免在回放最后一个中断事件后,虚拟机管理器还继续从用户空间读取日志信息,在回放中断事件前,虚拟机管理器可以先判断当前中断事件是否是记录的最后一个中断事件,如果是,则设置一个标识,指示回放完该中断事件后停止回放。
通过本实施例的上述方法,通过记录系统运行过程中的中断事件及其发生时间点,可以减少记录的数据量,减少存储空间的占用,并通过记录的时间点,可以精确再现中断事件发生的时间,从而可以提高故障复现的精度。
实施例二
本实施例以Xen半虚拟化平台为例,对本发明实施例提供的基于半虚拟化技术的设备故障复现系统进行说明。
图6为根据本发明实施例二的基于半虚拟化技术的设备故障复现系统的示意图。
如图6所示,在本实施例中,日志记录子系统和日志回放子系统位于Xen虚拟机管理器内,日志记录子系统通过核心处理单元获取中断事件的类型及外部输入值等信息,并从CPU计数器中获取中断事件发生的时间点,将获取的中断事件的类型、外部输入值及其发生的时间点等信息以日志文件的形式存储在特权域的用户空间。日志回放子系统从特权域的日志文件中读取各个中断事件的相关信息,通过核心处理单元回放各个中断事件。
图7为本实施例中的日志记录子系统的体系结构图,基于半虚拟化模型的日志记录子系统就其体系结构来说分为用户接口、日志记录子系统虚拟设备和日志记录子系统核心处理单元。日志记录子系统需要记录在目标操作系统运行期间,传送向Xen虚拟机管理器的所有虚中断事件和每次中断事件的外部输入值。以网口中断为例,需要记录网口中断类型(虚拟中断号)以及该网络数据包的内容;对于键盘中断,只需要记录它的虚拟中断号和按键值即可。
该日志记录子系统的各个模块之间的功能关系为:
特权域的用户层通过日志记录应用程序以系统调用的方式进入内核态,激活设备驱动程序中的钩子程序(HOOK程序),并使用超级调用将用户指令传达到Xen内部的通信模块;通信模块对命令进行解析之后向日志记录模块发送相应的命令,如开始,暂停,结束日志记录等;
日志记录模块在接到通信模块发来的命令后,针对不同的命令做出对应的操作,如:对于开始命令,日志记录模块进行性能计数器初始化,并开始计数,并且,日志记录模块在共享内存区创建并初始化日志缓存区;对于暂停命令,日志记录模块则保存当前计数器的值到全局变量,然后暂停计数。
当有外部中断发生时,日志记录模块在相应设备驱动程序中的钩子程序会截获中断信息并进行分析,将与回放有关的所有数据发送给虚拟机管理器处理;否则不执行任何操作。在收到钩子程序的数据信息时,日志记录模块读取当前性能计数器的值作为此次中断操作发生的时间点,将该时间点与来自钩子程序的数据信息绑定作为当前中断事件的日志,写入虚拟机管理器处理预先初始化好的日志缓存区。
当数据缓存区的剩余空间不足预设值(例如,20%)时,日志记录模块通过事件通道向特权域发送虚中断,由特权域中相应的虚中断处理模块唤醒用户态下的读取进程,将共享内存区域中的数据拷贝到特权域的用户空间,以日志文件的方式保存。
图8为本实施例的日志回放子系统的体系结构图,如图8所示,基于半虚拟化的日志回放子系统分为:用户接口、日志回放子系统虚拟设备和日志回放子系统核心处理单元。在本实施例中,日志回放子系统以数据环的形式读取日志信息,并实现回放。
本实施例中,日志回放子系统的各个模块之间的功能关系为:
用户端应用程序解析日志文件,将日志文件中记录的中断事件发生的时间点、中断事件的类型及外部输入值等信息写入用户缓冲区,然后通过系统调用嵌入内核,发送回放系统初始化的消息。Xen的回放模块接到初始化的消息后,初始化性能计数器和数据环,最后将初始化结果返回给特权域内核。
如果回放子系统初始化成功,则用户再发送回放开始消息,在接到此消息后,Xen检查数据环中是否有可用日志信息:如没有,则通过虚中断方式通知特权域内核,特权域内核的虚中断处理模块截获此消息而后唤醒日志写入进程,将解析好的日志文件先写入设备缓冲区,进而通过相应的超级调用写入Xen的数据环,并执行第一次回放操作(再发一次回放消息);如有,继续。Xen中的回放模块将回放需要的信息从环中取出,并启动性能计数器,完成本次超级调用执行,并且将外部中断输入返回给特权域内核供中断模拟模块使用。当性能计数器溢出时,产生性能计数器中断,其中断模拟模块中将完成以前记录中断的模拟工作:例如,通过事件通道向非特权域发送虚中断,将日志记录的外部输入写入对应的数据环中,通知回放模块本阶段回放已完成准备进行下一次的回放等。
当Xen共享缓存区可用日志记录数少于20%时,回放模块以虚中断方式通知特权域内核写入后续日志信息。
通过本实施例的上述系统,可以减少回放所需记录的日志占用存储空间,这使长期的系统监控成为可能。并且,通过将回放的时间点精确到CPU执行每一条分支指令(即1tick),可以提高回放精确度,从而为及时排除故障提供了可能,进而可以缩短故障排除的平均周期。
实施例三
本实施例基于实施例二所述的系统,对本发明实施例提供的基于半虚拟化技术的设备故障复现方法进行说明。
在本实施例的基于半虚拟化技术的设备故障复现方法中,为先运行日志记录子系统,获取目标操作系统运行过程中的不确定事件信息,然后以这些信息作为输入运行日志回放子系统,在一个新的客户操作系统上重现原操作系统的行为。
为了方便描述,在本实施例中,将日志记录子系统的工作流程可分为命令(domid)接收线程、日志传输线程和非特权域运行过程。其中,命令接收线程负责接收用户输入指令;日志传输线程负责将日志数据从Xen与特权域的共享缓存区内拷贝到特权域用户态下的临时缓存区中,然后将这些数据写入日志文件;为了保证回放的精确性,回放系统将日志记录开始与结束的控制权交给非特权域,以避免日志记录之初非特权域的分支指令被遗漏,因此在日志记录子系统启动以后非特权域的运行过程与日志记录子系统启动前不同。
图9为本实施例中,日志记录子系统命令接收线程的工作流程图。如图9所示,日志记录子系统命令接收线程(客户机操作系统,Domu)的工作流程主要包括以下步骤:
步骤1,日志记录子系统命令接收线程启动,等待用户输入指示;
步骤2,判断用户输入的指令是否合法,如果是,判断用户输入的指令是否为“7”,即日志记录关闭命令,如果是,则结束,否则执行步骤3;如果用户输入的指示不合法,则返回步骤1继续等待用户输入指令;
步骤3,判断用户输入指令的内容,如果用户输入的指令为“1”,则代表日志记录初始化,执行步骤4;如果用户输入的指令为“2”则代表日志记录开启,执行步骤5;如果用户输入的指令为“3”,则代表日志记录结束,执行步骤6;
步骤4,设置日志记录标志位,然后共享内存映射初始化缓存存区及标志位,并注册日志处理中断服务程序(即图7中的虚中断处理模块),然后返回执行步骤1;
步骤5,首先判断是否启动日志记录,如果是,则设置记录开始标志位,并配置性能计数器,置位日志打开标志位,将控制移交给非特权域(domu)并返回执行步骤1,同时进行非特权域(Domu)的运行过程;如果不启动日志记录,则返回执行步骤1;
在本发明实施例中,当日志记录子系统开启后,并未马上开始回放,而是发生了一次特权域与非特权域的切换。在非特权域环境下正式启动日志记录。这样可以保证日志记录开始不会遗漏非特权域执行的分支指令,确保日志记录的完整性。
步骤6,判断日志记录是否启动或记录是否开始,如果是,则结束记录,执行日志传输线程传输剩余日志,结束后置位传输标志位,然后返回执行步骤1。
图10为日志记录子系统的日志传输线程的工作流程图,日志传输线程除了负责数据传输任务,还负责日志记录结束后共享内存映射的清除、中断服务程序的卸载。如图10所示,在本发明实施全名,日志传输线程的工作流程主要包括以下步骤:
步骤1,日志传输线程处于休眠状态等待日志传输;
步骤2,日志传输线程接收到命令接收线程通过中断服务程序发送的日志传输命令;
步骤3,判断休眠标志位是否为真,如果是,则执行步骤4,否则返回步骤1;
步骤4,拷贝日志数据;
步骤5,判断是否为最后一次传输,如果是,则执行步骤6,否则执行步骤8;
步骤6,共享内存区映射,清零相关标志位;
步骤7,清除中断服务程序;
步骤8,清除休眠标志位;
步骤9,写日志文件;
步骤10,判断日志传输标志位是否为真,如果是,则结束,否则返回执行步骤1。
图11为在日志记录子系统开启的状态下,非特权域运行(即Domu运行过程)的流程图,在非特权域环境下,“@”代表日志记录的正式开始并将日志记录标志位置位,在以后的日志记录过程中依靠该标志位判断回放系统的工作模式。并且,每一次日志记录都会检测缓存区的状态,如果缓存区达到预设阀值,Xen会向特权域内核发送日志传输虚中断,然后继续日志记录,以免漏掉当前正在发生的外部设备中断。从而不仅保证了日志记录之初性能计数器的增加来源于目标虚拟域分支指令的执行,而且可以以异步中断消息的方式通知特权域内核,让其在适当时间取走日志数据。当用户按下“$”时,记录过程终止。如图11所示,在本发明实施例中,非特权域运行的流程主要包括以下步骤:
步骤1,非特权域接收到命令接收线程的命令,判断用户输入的字符是否==@或已开启日志记录,如果是(即值为真),则执行步骤2,否则结束流程;
步骤2,置位日志记录标志位;
步骤3,判断命令(domid)是否相符,以判断当前的外部中断是否发生在执行日志记录的客户机操作系统中,如果是,则执行步骤6,否则,执行步骤4;
步骤4,性能计数器开始读数;
步骤5,组合日志数据写入Xen缓存区;
步骤6,判断缓存区是否已满,如果是,则执行步骤7,否则,执行步骤8;
步骤7,发送虚中断,进入日志传输线程;
步骤8,判断用户输入的字符是否==$,如果是,则结束流程,否则返回步骤1。
结合图9至图11,回放系统的日志记录子系统记录日志主要包括以下步骤:
步骤1、加载日志记录模块,启动目标虚拟机,运行日志记录应用程序,而后初始化应用程序中的各个标志位;
步骤2、按照图9所示的命令接收线程的工作流程,等待用户输入指令,在用户输入指令后,如图9所示,验证指令的合法性,若合法继续执行;若不合法,返回让用户重新输入;
步骤3、若用户指令为日志记录初始化指令(log_init domid),即用户输入的指令为“1”,则初始化日志记录子系统,包括设置模块工作方式,建立共享内存映射,创建并初始化日志缓存区,以及注册虚中断服务程序;
步骤4、若用户指令为日志记录开启指令(log_start domid),即用户输入的指令为“2”,则先验证系统是否经过初始化:若日志记录子系统未经初始化,返回让用户重新输入初始化命令;若日志记录子系统已初始化则变更模块工作方式,设置性能计数器,最后将控制权交给目标操作系统,跳转到步骤6;
步骤5、用户指令为日志记录结束指令(log_end domid),即用户输入的指令为“3”,则先验证系统工作模式:若非日志记录或记录开始,则返回让用户重新输入指令;否则变更模块工作方式为记录结束,并且利用超级调用发送虚中断,通知特权域内核,最后置位日志传输标志位,跳转到步骤8;
步骤6、在目标操作系统界面下输入字符,按照图11所示的日志记录子系统的非特权域运行流程图执行,若字符为“@”,则置位记录开始标志位,并利用超级调用将之后的每次外部中断输入都写到Xen中的缓存区内,直到输入字符为“$”时,跳转到步骤5;
步骤7、当日志数据被记录到日志缓存区中后,验证日志缓存区容量:若达到预设的阀值(80%),则通过事件通道向非特权域内核发送虚中断;
步骤8、当特权域内核接收到来自于Xen的虚中断后,转到该虚中断的中断服务程序:在唤醒日志处理线程前(即按照图10所示的日志记录子系统日志传输线程工作流程进行)先将休眠标志位置1以免日志传输线程再次被休眠;
步骤9、日志处理线程首先将日志缓存区中的日志数据拷贝到用户缓存区中;然后根据模块的工作模式来判定刚才执行的拷贝操作是否为最后一次记录传输,若是,则执行解除共享内存映射,解绑中断服务程序等清理工作;最后将用户缓存区中的日志数据写入日志文件,并通过验证日志传输标志位来决定是否继续运行。
日志回放子系统的工作流程与日志记录子系统相似,可分为命令接收线程、日志传输线程、非特权域运行过程和中断模拟线程。其中,命令接收线程负责接收用户指令并调用ioctl完成相应操作;日志传输线程负责解析日志文件,并将解析得来的日志数据通过写(write)系统调用写入Xen与特权域之间的共享缓存区中;为了保证回放的精确性,回放开始与结束的控制权依然掌握在非特权域手中,因此有必要论述非特权域在回放过程中的运行流程;中断模拟线程负责执行回放的具体操作。
日志回放子系统命令接收线程工作流程如图12所示。在用户输入的指令中,“4”代表日志回放初始化;“5”代表日志回放开启;“6”代表日志回放结束;“7”为日志回放关闭命令。与日志记录子系统相同,日志回放子系统的命令接收线程同样需要特权域与非特权域之间的切换,但切换只在回放第一个字符之前发生,之后回放过程会随着“$”标志的输出而自动终止。而记录不足时向日志传输线程发送消息的情况也只发生在回放开始时,在以后的回放过程中如果出现记录不足的情况,Xen中的回放核心处理单元会以虚中断的形式通知特权域,进行下一阶段回放所需日志数据的传输。
如图12所示,日志回放子系统命令接收线程的工作流程主要包括以下步骤:
步骤1,命令接收线程等待用户输入指令;
步骤2,判断用户输入的指令是否合法,如果是,判断用户输入的指令是否为“7”,即日志回放关闭命令,如果是,则结束,否则执行步骤3;如果用户输入的指示不合法,则返回步骤1继续等待用户输入指令;
步骤3,判断用户输入指令的内容,如果用户输入的指令为“4”,则代表日志回放初始化,执行步骤4;如果用户输入的指令为“5”则代表日志回放开启,执行步骤5;如果用户输入的指令为“6”,则代表日志回放结束,执行步骤6;
步骤4,设置日志回放模块,建立共享内存映射设置虚中断(NMI)回调函数,注册中断服务程序(即图8中的中断模拟模块),返回执行步骤1;
步骤5,判断日志回放是否启动,如果是,则设置回放开始模式,设置性能计数器和高级可编程中断控制器(APIC),然后判断记录是否不足,如果是,则执行日志传输线程,否则,将控制移交给非特权域,执行Domu运行过程;
步骤6,判断日志回放是否启动或回放是否开始,如果不是,则返回执行步骤1,否则,设置回放结束模式,恢复NMI和APIC初始设置,卸载中断服务程序,然后结束其他线程,返回步骤1。
如图13所示,同日志记录子系统类似,日志回放子系统中的日志传输线程除了负责数据传输任务外还有其他工作——根据传输日志量的多少来判断当前的回放是否为最后一轮回放:若是,则通过超级调用来通知Xen中的日志回放核心处理单元,在日志数据不足时不在向特权域发送虚中断。
如图13所示,在本发明实施例中,日志回放子系统中的日志传输线程的工作流程主要包括以下步骤:
步骤1,日志传输线程处于休眠状态等待日志传输;
步骤2,日志传输线程接收到命令接收线程通过中断服务程序发送的日志传输命令;
步骤3,判断休眠标志位是否为真,如果是,则执行步骤4,否则返回步骤1;
步骤4,拷贝日志数据;
步骤5,判断是否为最后一次传输,如果是,则执行步骤6,否则执行步骤8;
步骤6,禁用Xen日志传输虚中断的发送;
步骤7,清除休眠标志;
步骤8,分离日志;
步骤9,判断日志传输标志位是否为真,如果是,则结束,否则返回执行步骤1。
图14为日志回放子系统中断模拟工作流程图。日志回放子系统的中断模拟模块不但负责在规定回放时间点上完成不确定性事件的重现工作,而且还负责回放结束后的内存释放、中断服务程序的卸载、NMI与APIC初值的恢复。
如图14所示,日志回放子系统中断模拟主要包括以下步骤:
步骤1,中断模拟模块休眠以等待中断模拟;
步骤2,非特权域运行过程触发中断模拟模块或性能计数器溢出,触发高级可编程中断控制器(APIC),高级可编号中断控制器触发中断模拟模块;
步骤3,判断休眠标志位是否为真,如果是,则执行步骤4,否则,返回步骤1;
步骤4,执行中断模块程序;
步骤5,执行下一次回放;
步骤6,判断是否无记录回放,如果是,则执行步骤7,否则,执行步骤8;
步骤7,回放结束,恢复NMI与APIC,并卸载中断服务程序;
步骤8,判断中断模块标识是否为真,如果是,则结束,否则返回步骤1。
图15为在日志回放子系统运行过程中,非特权域的运行流程图。如图15所示,在日志回放子系统运行过程中,非特权域的运行主要包括以下步骤:
步骤1,非特权域接收到命令接收线程的命令,判断用户输入的字符是否==@或已开启日志记录,如果是(即值为真),则执行步骤2,否则结束流程;
步骤2,置位日志回放标志位;
步骤3,判断命令(domid)是否相符,如果是,则执行步骤6,否则,执行步骤1;
步骤4,性能计数器开始读数;
步骤5,发送NMI虚中断,进入中断模块线程;
步骤6,判断用户输入的字符是否==$,如果是,则结束流程,否则返回步骤1。
结合图12至图15,日志回放子系统进行事件回放主要包括以下步骤:
步骤1、加载回放模块,启动目标虚拟机,运行日志回放应用程序,而后初始化应用程序中的各个标志位;
步骤2、按照图12所示的日志回放子系统命令接收线程工作流程,等待用户输入指令,在用户输入指令后,验证指令的合法性:若合法继续执行;若不合法,返回让用户重新输入;
步骤3、若用户指令为日志回放初始化命令(replay_init domid),即用户输入的指令为“4”,则初始化日志回放子系统,包括设置模块工作方式、建立共享内存映射、创建并初始化日志缓存区、利用超级调用设置性能计数器中断(PMI)的回调函数,以及相应的注册虚中断服务程序;
步骤4、若用户指令为日志回放开启命令(replay_start domid),即用户输入的指令为“5”,则先验证系统是否经过初始化:若未经初始化,返回让用户重新输入初始化命令;若已初始化则变更模块工作方式,设置性能计数器与高级可编程中断控制器(APIC);最后将控制权交给目标操作系统(回放模式下控制权移交只发生一次),跳转到步骤6;
步骤5、若用户指令为日志回放结束命令(replay_end domid),即用户输入指令为“6”,则先验证系统工作模式:若非日志回放或回放开始,则返回让用户重新输入指令;否则变更模块工作方式为回放结束,并且利用超级调用还原性能计数器和APIC中的值,以及性能计数器中断回调函数,然后对先前注册的中断服务程序解除绑定,最后设置用户态标志终止日志处理线程与中断模拟线程;
步骤6、在目标操作系统界面下输入字符,按照如图15所示的非特权域的运行流程图执行,若字符为“#”,则置位回放开始标志位,并利用超级调用设置Xen内回放模块中相应的标志位,然后通过事件通道向特权域内核发送性能计数器虚中断,以开始首次回放;
步骤7、当特权域内核接收到来自于Xen的性能计数器虚中断后,转向该虚中断的中断服务程序,即按照图14所示的日志回放子系统中断模拟工作流程图执行。在唤醒中断模拟线程之前先将休眠标志位置1以免中断模拟线程再次被休眠;
步骤8、中断模拟线程被唤醒后继续运行。如图14所示,若为回放阶段为首次回放,则跳过中断模拟程序,直接利用超级调用执行下一次回放,否则,待中断模拟程序执行完后再执行下一次回放。在回放超级调用中,首先查看缓冲区中的回放记录数是否不足,若不足则通过事件通道向特权域内核发送日志处理虚中断,跳转到步骤10,按照图13所示的日志传输线程工作流程执行;而后依据回放超级调用的返回值来判断回放是否结束,若结束,则执行类似于步骤5的清除工作;然后清除休眠标志位,完成此次中断模拟线程的执行;在结束线程并转到步骤11之前还需要检测中断模拟标志位是否置位,若不是,则再次进行系统调用进入休眠。当性能计数器溢出时,高级可编程中断控制器会向CPU发出非可屏蔽中断,在其的回调函数中通过事件通道向特权域内核发送性能计数器虚中断,转到步骤7。
步骤9、当特权域内核接收到来自于Xen的日志处理虚中断后,转向该虚中断的中断服务程序;在唤醒日志传输线程之前先将休眠标志位置1以免日志传输线程再次被休眠;
步骤10、如图13所示,日志传输线程首先将用户缓存区中的日志数据拷贝到共享缓存区中;而后根据影子缓存区中日志的数量来判断是否是最后一轮回放,若是,则利用超级调用将回放模块的相应标志位置位,避免回放模块在记录不足时发送日志处理虚中断;然后根据模块的工作模式来判定刚才执行的拷贝操作是否为首次记录传输,若是,则执行回放超级调用;最后通过分析日志文件取得新的日志数据,并通过验证日志传输标志位是否置位和有无新日志数据来决定是否继续运行。
步骤11、通知用户日志记录已全部回放完毕,等待系统关闭指令,跳转到步骤5。
日志记录子系统与日志回放子系统均可通过在应用程序终端内键入“kill”指令,来结束应用程序进程。
从以上的描述中,可以看出,本发明实现了如下技术效果:1.回放所需记录的日志占用存储空间较小,这使长期的系统监控成为可能。2.回放精确度高,由于回放的时间点精确到了CPU执行的每一条分支指令。3.放系统不需要修改客户机操作系统,不用在这些操作系统的驱动中安插各种钩子,即可对这些操作系统的外部中断进行精确的记录。4.回放效率较高,回放过程和记录过程均不影响目标操作系统的正常运行,换句话说,回放系统对于目标操作系统来说是透明的。进而可以在故障发生时对故障进行准确的定位,从而可以保证故障得到及时的排除,缩短故障排除的周期。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种基于半虚拟化技术的设备故障复现方法,其特征在于,包括:
通过前端设备驱动与后端设备驱动之间的事件通道,虚拟机管理器获取并记录日志信息,其中,所述日志信息包括:中断事件的类型、外部输入值及发生的时间点;
响应于所述目标操作系统用户输入的回放命令,所述虚拟机管理器依次按照所述记录的各个中断事件发生的时间点,根据所述各个中断事件的类型及外部输入值,模拟产生对应于所述各个中断事件的虚拟中断,并通过所述事件通道向目标操作系统发送虚中断消息,使所述目标操作系统执行对应该虚拟中断的处理操作。
2.根据权利要求1所述的方法,其特征在于,所述中断事件是在接收到目标操作系统用户输入的记录开始命令和记录结束命令期间发生的所有中断事件。
3.根据权利要求2所述的方法,其特征在于,对于所述所有中断事件之一,所述虚拟机管理器获取该中断事件的类型及外部输入值包括:在所述后端设备驱动程序中设置钩子程序,当所述中断事件发生时,所述钩子程序获取所述中断事件的中断信息,从中解析出所述中断事件的类型及外部输入值,并将所述中断事件的类型及外部输入值传送给所述虚拟机管理器。
4.根据权利要求3所述的方法,其特征在于,对于所述各个中断事件之一,所述虚拟机管理器获取该所述中断事件发生的时间点包括:所述虚拟机管理器接收到所述中断事件的类型及外部
输入值时,读取当前CPU性能计数器的值,将所述值作为所述中断事件发生的时间点。
5.根据权利要求3所述的方法,其特征在于,对于所述各个中断事件之一,所述虚拟机管理器获取该所述中断事件发生的时间点包括:所述虚拟机管理器接收到所述中断事件的类型及外部输入值时,读取当前CPU性能计数器的值,将当前所述CPU性能计数器的值与上一次中断事件发生时所述CPU性能计数器的值之差作为所述中断事件发生的时间点。
6.根据权利要求2至5中任一项所述的方法,其特征在于,所述虚拟机管理器在接收到所述目标操作系统用户输入的记录开始命令之前,所述方法还包括:所述虚拟机管理器接收所述目标操作系统用户输入的记录初始化命令,在所述虚拟机管理器与特权域的共享缓存区内创建并初始化日志缓存区;
对于所述所有中断事件之一,所述虚拟机管理器记录该中断事件的类型、外部输入值及中断事件发生的时间点包括:所述虚拟机管理器将所述中断事件的类型、外部输入值及时间点记录在所述日志缓存区中。
7.根据权利要求6所述的方法,其特征在于,当所述日志缓存区的剩余空间小于预定值或记录完成时,所述方法还包括:将所述日志缓存区内记录的日志信息拷贝到用户空间,删除所述日志缓存区内存储的日志信息。
8.根据权利要求7所述的方法,其特征在于,所述虚拟机管理器根据各个中断事件的类型及外部输入值,模拟得到所述记录的各个中断事件的虚拟中断,包括:
判断所述日志缓存区内的日志信息是否小于预设值,如果是,则以虚中断方式将所述用户空间的日志信息读入所述日志缓存区;
从所述日志缓存区顺序读取所述各个中断事件之一的日志信息,根据该中断事件发生的时间点启动所述CPU性能计数器,当所述CPU性能计数器溢出时,根据该中断事件的类型和外部输入值模拟该中断事件,产生一个虚拟中断。
9.根据权利要求8所述的方法,其特征在于,在从所述日志缓存区顺序读取所述各个中断事件之一的日志信息之前,还包括:判断读取的所述中断事件是否为最后一个中断事件,如果是,则设置标识位,指示在模拟所述中断事件后不再读取下一个日志信息。
10.一种基于半虚拟化技术的设备故障复现系统,其特征在于,包括:
日志记录子系统,用于通过前端设备驱动与后端设备驱动之间的事件通道,获取并记录日志信息,其中,所述日志信息包括:中断事件的类型、外部输入值及发生的时间点;
日志回放子系统,用于响应于所述目标操作系统用户输入的回放命令,依次按照记录的各个中断事件发生的时间点,根据所述各个中断事件的类型及外部输入值,模拟产生对应于所述记录的各个中断事件的虚拟中断,并通过所述事件通道向目标操作系统发送虚中断消息,使所述目标操作系统执行对应该虚拟中断的处理操作。
11.根据权利要求10所述的系统,其特征在于,所述日志记录子系统包括:
日志处理模块,用于响应于所述目标操作系统用户输入的记录初始化命令,在所述前端设备驱动与所述后端设备驱动之间的共享内存区创建并初始化日志缓存区,并将存储在所述日志缓存区的日志信息拷贝到用户空间;
后端设备驱动模块,用于截获中断事件发生时的中断信息,将与所述中断事件的回放有关的数据信息发送至日志缓存区,并触发日志记录模块,其中,所述数据信息包括:所述中断事件的类型和外部输入值;
日志记录模块,用于读取当前CPU性能计数器的值,并根据当前CPU性能计数器的值确定所述中断事件发生的时间点,将所述时间点与所述数据信息绑定作为所述中断事件的日志信息存储在所述日志缓存区。
12.根据权利要求11所述的系统,其特征在于,所述日志回放子系统包括:
日志写入模块,用于将用户空间的所述日志信息写入所述日志缓存区;
回放模块,用于从所述日志缓存区读取各个中断事件的日志信息,根据当前需要回放的中断事件发生的时间点,启动CPU性能计数器,并将所述中断事件的外部输入值返回给中断模拟模块;
所述中断模拟模块,用于在所述CPU性能计数器溢出时,根据所述中断事件的外部输入值,完成所述中断事件的模拟,通过所述事件通道向所述目标操作系统发送虚中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010220733.8A CN101887393B (zh) | 2010-07-01 | 2010-07-01 | 基于半虚拟化技术的设备故障复现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010220733.8A CN101887393B (zh) | 2010-07-01 | 2010-07-01 | 基于半虚拟化技术的设备故障复现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101887393A true CN101887393A (zh) | 2010-11-17 |
CN101887393B CN101887393B (zh) | 2014-07-02 |
Family
ID=43073321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010220733.8A Active CN101887393B (zh) | 2010-07-01 | 2010-07-01 | 基于半虚拟化技术的设备故障复现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101887393B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184138A (zh) * | 2011-05-19 | 2011-09-14 | 广东威创视讯科技股份有限公司 | 一种软件错误自动重现和定位的方法及系统 |
CN102541468A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 虚拟化环境下的脏数据回写系统 |
CN102750470A (zh) * | 2012-05-22 | 2012-10-24 | 中国科学院计算技术研究所 | 全虚拟化环境下启动加载器的可信验证方法和系统 |
CN103201719A (zh) * | 2010-11-24 | 2013-07-10 | 国际商业机器公司 | 虚拟化计算环境中的设备仿真 |
CN104331372A (zh) * | 2014-11-27 | 2015-02-04 | 北京奇艺世纪科技有限公司 | 一种对应用程序进行远程问题定位的方法及装置 |
CN104461850A (zh) * | 2014-12-09 | 2015-03-25 | 北京全路通信信号研究设计院有限公司 | 列控车载设备的复现方法、装置及系统、人机界面设备 |
CN105573900A (zh) * | 2015-12-17 | 2016-05-11 | 南京亚派科技股份有限公司 | 一种系统日志配置和记录方法 |
CN105610639A (zh) * | 2015-12-17 | 2016-05-25 | 北京奇虎科技有限公司 | 全量日志抓取方法及装置 |
CN105765539A (zh) * | 2013-11-14 | 2016-07-13 | 微软技术许可有限责任公司 | 具有自动生成的虚拟环境的用户支持体验 |
US9483368B2 (en) | 2012-09-17 | 2016-11-01 | Huawei Technologies Co., Ltd. | Method, apparatus, and system for handling virtual machine internal fault |
WO2017107816A1 (zh) * | 2015-12-23 | 2017-06-29 | 华为技术有限公司 | 一种虚拟化平台中的数据处理方法及装置 |
WO2017124808A1 (zh) * | 2016-01-20 | 2017-07-27 | 上海斐讯数据通信技术有限公司 | 一种故障信息的重现方法和重现装置 |
CN110502437A (zh) * | 2019-07-31 | 2019-11-26 | 惠州市德赛西威汽车电子股份有限公司 | 一种车载蓝牙应用程序的测试系统及其方法 |
CN111367755A (zh) * | 2020-02-17 | 2020-07-03 | 上海基分文化传播有限公司 | 一种移动终端的用户日志写入方法及系统 |
CN111711544A (zh) * | 2020-05-15 | 2020-09-25 | 北京奇艺世纪科技有限公司 | 链路拨测方法、装置、电子设备及存储介质 |
CN112000583A (zh) * | 2020-09-17 | 2020-11-27 | 深圳市有方科技股份有限公司 | 一种调试信息抓取方法及其装置 |
CN112988530A (zh) * | 2019-12-17 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种用户数据处理方法、装置、存储介质及用户终端 |
CN113240967A (zh) * | 2021-05-19 | 2021-08-10 | 东航技术应用研发中心有限公司 | 记录模拟机训练中断次数、时长及原因的装置及方法 |
CN114116024A (zh) * | 2021-09-29 | 2022-03-01 | 北京智芯微电子科技有限公司 | 面向嵌入式操作系统的外设驱动处理方法、虚拟机及系统 |
CN114327648A (zh) * | 2021-12-16 | 2022-04-12 | 北京安天网络安全技术有限公司 | 一种驱动调试方法、装置、电子设备及存储介质 |
CN116149820A (zh) * | 2023-02-20 | 2023-05-23 | 亿咖通(湖北)技术有限公司 | 基于Xen的域间通信方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1496589A1 (de) * | 2003-07-11 | 2005-01-12 | Siemens Aktiengesellschaft | Vorrichtung und Verfahren zum Schutz einer elektrischen Maschine |
CN101661381A (zh) * | 2009-09-08 | 2010-03-03 | 华南理工大学 | 一种基于Xen的数据共享与访问控制方法 |
JP2010086181A (ja) * | 2008-09-30 | 2010-04-15 | Fujitsu Ltd | 仮想計算機システム及びその管理方法、プログラム並びに記録媒体 |
CN102354298A (zh) * | 2011-07-27 | 2012-02-15 | 哈尔滨工业大学 | 基于staf的高端容错机故障注入自动化测试平台及方法 |
-
2010
- 2010-07-01 CN CN201010220733.8A patent/CN101887393B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1496589A1 (de) * | 2003-07-11 | 2005-01-12 | Siemens Aktiengesellschaft | Vorrichtung und Verfahren zum Schutz einer elektrischen Maschine |
JP2010086181A (ja) * | 2008-09-30 | 2010-04-15 | Fujitsu Ltd | 仮想計算機システム及びその管理方法、プログラム並びに記録媒体 |
CN101661381A (zh) * | 2009-09-08 | 2010-03-03 | 华南理工大学 | 一种基于Xen的数据共享与访问控制方法 |
CN102354298A (zh) * | 2011-07-27 | 2012-02-15 | 哈尔滨工业大学 | 基于staf的高端容错机故障注入自动化测试平台及方法 |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103201719A (zh) * | 2010-11-24 | 2013-07-10 | 国际商业机器公司 | 虚拟化计算环境中的设备仿真 |
CN102184138B (zh) * | 2011-05-19 | 2013-09-18 | 广东威创视讯科技股份有限公司 | 一种软件错误自动重现和定位的方法及系统 |
CN102184138A (zh) * | 2011-05-19 | 2011-09-14 | 广东威创视讯科技股份有限公司 | 一种软件错误自动重现和定位的方法及系统 |
CN102541468B (zh) * | 2011-12-12 | 2015-03-04 | 华中科技大学 | 虚拟化环境下的脏数据回写系统 |
CN102541468A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 虚拟化环境下的脏数据回写系统 |
CN102750470A (zh) * | 2012-05-22 | 2012-10-24 | 中国科学院计算技术研究所 | 全虚拟化环境下启动加载器的可信验证方法和系统 |
CN102750470B (zh) * | 2012-05-22 | 2014-10-08 | 中国科学院计算技术研究所 | 全虚拟化环境下启动加载器的可信验证方法和系统 |
US9483368B2 (en) | 2012-09-17 | 2016-11-01 | Huawei Technologies Co., Ltd. | Method, apparatus, and system for handling virtual machine internal fault |
CN105765539A (zh) * | 2013-11-14 | 2016-07-13 | 微软技术许可有限责任公司 | 具有自动生成的虚拟环境的用户支持体验 |
CN105765539B (zh) * | 2013-11-14 | 2018-11-09 | 微软技术许可有限责任公司 | 用于自动生成虚拟环境的方法和系统 |
CN104331372A (zh) * | 2014-11-27 | 2015-02-04 | 北京奇艺世纪科技有限公司 | 一种对应用程序进行远程问题定位的方法及装置 |
CN104331372B (zh) * | 2014-11-27 | 2017-08-25 | 北京奇艺世纪科技有限公司 | 一种对应用程序进行远程问题定位的方法及装置 |
CN104461850A (zh) * | 2014-12-09 | 2015-03-25 | 北京全路通信信号研究设计院有限公司 | 列控车载设备的复现方法、装置及系统、人机界面设备 |
CN104461850B (zh) * | 2014-12-09 | 2018-08-28 | 北京全路通信信号研究设计院集团有限公司 | 列控车载设备的复现方法、装置及系统、人机界面设备 |
CN105573900A (zh) * | 2015-12-17 | 2016-05-11 | 南京亚派科技股份有限公司 | 一种系统日志配置和记录方法 |
CN105610639A (zh) * | 2015-12-17 | 2016-05-25 | 北京奇虎科技有限公司 | 全量日志抓取方法及装置 |
WO2017107816A1 (zh) * | 2015-12-23 | 2017-06-29 | 华为技术有限公司 | 一种虚拟化平台中的数据处理方法及装置 |
WO2017124808A1 (zh) * | 2016-01-20 | 2017-07-27 | 上海斐讯数据通信技术有限公司 | 一种故障信息的重现方法和重现装置 |
CN110502437A (zh) * | 2019-07-31 | 2019-11-26 | 惠州市德赛西威汽车电子股份有限公司 | 一种车载蓝牙应用程序的测试系统及其方法 |
CN112988530B (zh) * | 2019-12-17 | 2023-12-12 | 腾讯科技(深圳)有限公司 | 一种用户数据处理方法、装置、存储介质及用户终端 |
CN112988530A (zh) * | 2019-12-17 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种用户数据处理方法、装置、存储介质及用户终端 |
CN111367755A (zh) * | 2020-02-17 | 2020-07-03 | 上海基分文化传播有限公司 | 一种移动终端的用户日志写入方法及系统 |
CN111711544A (zh) * | 2020-05-15 | 2020-09-25 | 北京奇艺世纪科技有限公司 | 链路拨测方法、装置、电子设备及存储介质 |
CN112000583A (zh) * | 2020-09-17 | 2020-11-27 | 深圳市有方科技股份有限公司 | 一种调试信息抓取方法及其装置 |
CN113240967A (zh) * | 2021-05-19 | 2021-08-10 | 东航技术应用研发中心有限公司 | 记录模拟机训练中断次数、时长及原因的装置及方法 |
CN114116024A (zh) * | 2021-09-29 | 2022-03-01 | 北京智芯微电子科技有限公司 | 面向嵌入式操作系统的外设驱动处理方法、虚拟机及系统 |
CN114116024B (zh) * | 2021-09-29 | 2024-01-30 | 北京智芯微电子科技有限公司 | 面向嵌入式操作系统的外设驱动处理方法、装置及系统 |
CN114327648A (zh) * | 2021-12-16 | 2022-04-12 | 北京安天网络安全技术有限公司 | 一种驱动调试方法、装置、电子设备及存储介质 |
CN114327648B (zh) * | 2021-12-16 | 2024-02-02 | 北京安天网络安全技术有限公司 | 一种驱动调试方法、装置、电子设备及存储介质 |
CN116149820A (zh) * | 2023-02-20 | 2023-05-23 | 亿咖通(湖北)技术有限公司 | 基于Xen的域间通信方法、装置、设备及存储介质 |
CN116149820B (zh) * | 2023-02-20 | 2024-02-06 | 亿咖通(湖北)技术有限公司 | 基于Xen的域间通信方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101887393B (zh) | 2014-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101887393B (zh) | 基于半虚拟化技术的设备故障复现方法及系统 | |
CN102147749B (zh) | 仿真os隔离定序器上的用户级多线程处理的机制 | |
US8627143B2 (en) | Dynamically modeling and selecting a checkpoint scheme based upon an application workload | |
CN101446909B (zh) | 用于管理任务事件的方法和系统 | |
US7904903B2 (en) | Selective register save and restore upon context switch using trap | |
CN103842968B (zh) | 一种内存数据的迁移方法、计算机和装置 | |
US10049010B2 (en) | Method, computer, and apparatus for migrating memory data | |
CN101339581B (zh) | 基于中断通讯的嵌入式系统的在线调试仿真方法 | |
CN103744764A (zh) | 一种基于Crontab的整机内存稳定性的测试方法 | |
CN101557420A (zh) | 虚拟机监控器高效网络通信的实现方法 | |
CN101976217A (zh) | 网络处理器异常检测方法及系统 | |
CN101937376A (zh) | 一种数据管理方法及数据存储装置 | |
CN104778116B (zh) | 一种多断点的软件调试装置和方法 | |
CN106873990A (zh) | 嵌入式系统ram损坏模式下的多分区引导方法 | |
CN103268277A (zh) | 一种输出日志信息的方法及系统 | |
CN117112133A (zh) | 虚拟机运行跟踪 | |
CN105024879A (zh) | 虚拟机故障检测、恢复系统及虚拟机检测、恢复、启动方法 | |
CN101325610A (zh) | 虚拟磁带库备份系统以及磁盘电源控制方法 | |
CN101937344B (zh) | 一种计算机快速启动的装置及方法 | |
CN106406974B (zh) | 一种用于虚拟机的高性能定时器实现方法、虚拟机 | |
CN103744725A (zh) | 一种虚拟机管理方法及装置 | |
CN101901177A (zh) | 多核微处理器及其除错方法 | |
CN104216771A (zh) | 软件程序的重启方法及装置 | |
CN102609324B (zh) | 一种虚拟机死锁后的恢复方法、装置及系统 | |
JP2000020349A (ja) | プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |