CN113687916B - 数据处理方法及装置、时间更新方法及装置、电子设备 - Google Patents
数据处理方法及装置、时间更新方法及装置、电子设备 Download PDFInfo
- Publication number
- CN113687916B CN113687916B CN202110944978.3A CN202110944978A CN113687916B CN 113687916 B CN113687916 B CN 113687916B CN 202110944978 A CN202110944978 A CN 202110944978A CN 113687916 B CN113687916 B CN 113687916B
- Authority
- CN
- China
- Prior art keywords
- clock interrupt
- time interval
- clock
- virtual machine
- interrupt
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Electric Clocks (AREA)
Abstract
本申请实施例提供一种数据处理方法及装置、时间更新方法及装置、电子设备。按照第一时间间隔产生第一时钟中断,并将所述第一时钟中断注入虚拟机;统计未注入成功的所述第一时钟中断的数量;若所述数量大于零,按照小于第一时间间隔的第二时间间隔产生第二时钟中断,并将所述第二时钟中断注入所述虚拟机;若所述第二时钟中断注入成功,更新所述数量;若所述数量为零,终止产生所述第二时钟中断,并等待到达所述第一时间间隔之后产生所述第一时钟中断。本申请实施例提供的技术方案减小了虚拟机的系统时间与宿主机的系统时间之间的偏差,提高了虚拟机系统时间更新的准确性。
Description
技术领域
本申请实施例涉及计算机应用技术领域,尤其涉及一种数据处理方法及装置、时间更新方法及装置、电子设备。
背景技术
时钟是计算机运行的基础,针对操作系统而言,可以起到提供统计值及驱动事件及维护定时器等作用。虚拟机作为宿主机上的应用程序,为了确保虚拟机的正常运行,通常需要保证虚拟机的系统时间与宿主机上的系统时间保持一致。
现有技术中,虚拟机的系统时间更新是通过模拟时钟中断实现的。其中,时钟中断作为操作系统的推动器,关系着不同任务的处理和调度。操作系统可以利用时钟中断,进行负载统计、进程时间统计、促使进程的切换等。具体的,宿主机以固定的时间间隔产生时钟中断,并将时钟中断注入虚拟机,由虚拟机接收并对其进行处理,根据时钟中断代表的时间及处理的时钟中断的数量,更新虚拟机的系统时间。例如,每个时钟中断代表的时间是1s,虚拟机处理的时钟中断的数量是10个,则虚拟机的系统时间可以更新10s。然而,受虚拟机的运行机制影响,可能存在当时钟中断产生时,虚拟机运行在无法接收时钟中断的情况,此时宿主机产生的时钟中断无法成功注入虚拟机,虚拟机处理的时钟中断的数量与宿主机产生的时钟中断的数量不一致,导致虚拟机的系统时间与宿主机的系统时间不一致,从而出现时间偏差,影响虚拟机的正常运行。
发明内容
本申请实施例提供一种数据处理方法及装置、时间更新方法及装置、电子设备,用以减小虚拟机的系统时间与宿主机的系统时间之间的偏差,提高了虚拟机系统时间更新的准确性。
第一方面,本申请实施例中提供了一种数据处理方法,包括:
按照第一时间间隔产生第一时钟中断,并将所述第一时钟中断注入虚拟机;
统计未注入成功的所述第一时钟中断的数量;
若所述数量大于零,按照小于所述第一时间间隔的第二时间间隔产生第二时钟中断,并将所述第二时钟中断注入所述虚拟机;
若所述第二时钟中断注入成功,更新所述数量;
若所述数量为零,终止产生所述第二时钟中断,并等待到达所述第一时间间隔之后产生所述第一时钟中断。
第二方面,本申请实施例中提供了一种系统时间更新方法,包括:
接收第一时钟中断及第二时钟中断,所述第一时钟中断按照第一时间间隔产生,所述第二时钟中断在统计未成功注入虚拟机的所述第一时钟中断的数量大于零时,按照小于所述第一时间间隔的第二时间间隔产生,以及在所述数量为零时,终止产生;
基于所述第一时钟中断及所述第二时钟中断的数量及各时钟中断代表的时间,更新所述虚拟机的系统时间。
第三方面,本申请实施例中提供了一种数据处理装置,包括:
第一产生模块,用于按照第一时间间隔产生第一时钟中断,并将所述第一时钟中断注入虚拟机;
统计模块,用于统计未注入成功的所述第一时钟中断的数量;
第二产生模块,用于若所述数量大于零,按照小于所述第一时间间隔的第二时间间隔产生第二时钟中断,并将所述第二时钟中断注入所述虚拟机;
第一更新模块,用于若所述第二时钟中断注入成功,更新所述数量;
终止模块,用于若所述数量为零,终止产生所述第二时钟中断,并等待到达所述第一时间间隔之后产生所述第一时钟中断。
第四方面,本申请实施例中提供了一种系统时间更新装置,包括:
接收模块,用于接收第一时钟中断及第二时钟中断,所述第一时钟中断按照第一时间间隔产生,所述第二时钟中断在统计未成功注入虚拟机的所述第一时钟中断的数量大于零时,按照小于所述第一时间间隔的第二时间间隔产生,以及在所述数量为零时,终止产生;
第二更新模块,用于基于所述第一时钟中断及所述第二时钟中断的数量及各时钟中断代表的时间,更新所述虚拟机的系统时间。
第五方面,本申请实施例中提供了一种电子设备,包括存储组件及处理组件;
所述存储组件存储一条或多条计算机指令;所述计算机指令供所述处理组件调用执行;
所述处理组件执行所述计算机指令时实现第一方面所述的方法。
本申请实施例中,统计未成功注入虚拟机的第一时钟中断的数量,并在判断数量大于零时,按照小于第一时间间隔的第二时间间隔产生第二时钟中断,将第二时钟中断注入虚拟机,并在判断第二时钟中断注入成功时,更新数量,直至判断数量为零时,终止产生第二时钟中断,通过产生并注入第二时钟中断对未注入成功的第一时钟中断进行补偿,减小虚拟机未接收成功的时钟中断的数量,从而减小虚拟的系统时间与宿主机的系统时间之间的偏差,提高虚拟机系统时间更新的准确性。同时,第二时钟中断是按照小于第一时间间隔的第二时间间隔产生的,第二时钟中断的产生频率高于第一时钟中断,因此增加了第二时钟中断产生时,虚拟机运行在可以接收该第二时钟中断的情况的几率,进一步减小了虚拟机的系统时间与宿主机的系统时间之间的偏差,提高了虚拟机系统时间更新的准确性。并且,该第二时钟中断的产生是针对系统时间与宿主机的系统时间之间存在偏差的某一虚拟机进行设置的,只针对该虚拟机进行补偿,不会影响宿主机上其它虚拟机的系统时间更新以及程序运行,可以适用于多虚拟机运行环境。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请提供的一种数据处理方法一个实施例的流程图;
图2示出了本申请提供的一种数据处理方法另一个实施例的流程图;
图3示出了本申请提供的一种系统时间更新方法一个实施例的流程图;
图4示出了本申请提供的一种数据处理装置一个实施例的结构示意图;
图5示出了本申请提供的一种系统时间更新装置一个实施例的结构示意图;
图6示出了本申请提供的一种电子设备一个实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
时钟是计算机运行的基础,针对操作系统而言,可以起到提供统计值及驱动事件及维护定时器等作用。虚拟机作为宿主机上的应用程序,为了确保虚拟机的正常运行,通常需要保证虚拟机的系统时间与宿主机上的系统时间保持一致。
虚拟机的系统时间更新是通过模拟时钟中断实现的。其中,时钟中断作为操作系统的推动器,关系着不同任务的处理和调度。操作系统可以利用时钟中断,进行负载统计、进程时间统计、促使进程的切换等。具体的,宿主机以固定的时间间隔产生时钟中断,并将时钟中断发送至虚拟机,由虚拟机接收并对其进行处理,根据时钟中断代表的时间及虚拟机处理的时钟中断的数量,更新虚拟机的系统时间。例如,每个时钟中断代表的时间是1s,虚拟机处理的时钟中断的数量是10个,则虚拟机的系统时间可以更新10s。
然而,受虚拟机的运行机制影响,可能存在当时钟中断产生时,虚拟机运行在无法接收时钟中断的情况,此时宿主机产生的时钟中断无法成功发送至虚拟机,虚拟机接收并处理的时钟中断的数量与宿主机产生的时钟中断的数量不一致,导致虚拟机的系统时间与宿主机的系统时间不一致,从而出现时间偏差,影响虚拟机的正常运行。传统方案中,通常是采用网络同步的方法,更新虚拟机的系统时间。
该种方法需要依赖网络,若网络较差或更新不及时,仍旧会出现时间偏差,影响虚拟机及安装在虚拟机上各应用程序的正常运行。为此,发明人对出现上述时间偏差的原因进行了分析,即宿主机产生的时钟中断需要经由虚拟中断控制器注入虚拟机,该中断控制器对于同类型的时钟中断只能记录一个,因此当存在时钟中断未成功注入虚拟机,且新的时钟中断产生时,未注入成功的时钟中断将会丢失,导致虚拟机接收并处理的时钟中断的数量小于宿主机产生的时钟中断的数量,从而出现时间偏差。发明人想到,是否可以利用其它的时钟中断对未注入成功的时钟中断进行补偿,使虚拟机实际接收的时钟中断的数量与宿主机产生的数量保持一致,并在经过一系列研究之后,提出了本申请的技术方案,包括,按照第一时间间隔产生第一时钟中断,并将所述第一时钟中断注入虚拟机;统计未注入成功的所述第一时钟中断的数量;若所述数量大于零,按照小于第一时间间隔的第二时间间隔产生第二时钟中断,并将所述第二时钟中断注入所述虚拟机;若所述第二时钟中断注入成功,更新所述数量;若所述数量为零,终止产生所述第二时钟中断,并等待到达所述第一时间间隔之后产生所述第一时钟中断。
本申请实施例中,无需依赖网络,统计未成功注入虚拟机的第一时钟中断的数量,并在判断数量大于零时,按照小于第一时间间隔的第二时间间隔产生第二时钟中断,将第二时钟中断注入虚拟机,并在判断第二时钟中断注入成功时,更新数量,直至判断数量为零时,终止产生第二时钟中断。通过产生并注入第二时钟中断对未注入成功的第一时钟中断进行补偿,减小虚拟机未接收成功的时钟中断的数量,从而减小虚拟的系统时间与宿主机的系统时间之间的偏差,提高虚拟机系统时间更新的准确性。同时,第二时钟中断是按照小于第一时间间隔的第二时间间隔产生的,第二时钟中断的产生频率高于第一时钟中断,因此增加了第二时钟中断产生时,虚拟机运行在可以接收该第二时钟中断的情况的几率,进一步减小了虚拟机的系统时间与宿主机的系统时间之间的偏差,提高了虚拟机系统时间更新的准确性。并且,该第二时钟中断的产生是针对系统时间与宿主机的系统时间之间存在偏差的某一虚拟机进行设置的,只针对该虚拟机进行补偿,不会影响宿主机上其它虚拟机的系统时间更新以及程序运行,可以适用于多虚拟机运行环境。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,为本申请提供的一种数据处理方法一个实施例的流程图,该方法可以包括以下几个步骤:
101:按照第一时间间隔产生第一时钟中断,并将第一时钟中断注入虚拟机。
本实施例中,可以应用于安装有虚拟机的宿主机。宿主机可以按照固定的时间间隔产生时钟中断,并将时钟中断注入虚拟机,即将时钟中断发送至虚拟机。该时间间隔可以预先设置,如可以是10ms、20ms等。
102:统计未注入成功的第一时钟中断的数量。
时钟中断产生后,将其注入虚拟机。受虚拟机的运行机制影响,虚拟机可能运行在可以接收时钟中断的情况,此时时钟中断可以成功注入虚拟机,以供虚拟机接收并处理。或者,虚拟机可能运行在无法接收时钟中断的情况,此时时钟中断将无法成功注入虚拟机,虚拟机处理的时钟中断的数量与宿主机产生的时钟中断的数量不一致,导致二者的系统时间不一致,出现偏差,此时可以对未注入成功的时钟中断进行补偿。
因此,在时钟中断产生后,可以对时钟中断是否成功注入虚拟机进行判断,并对未注入成功的时钟中断的数量进行统计,以便于补偿未注入成功的时钟中断。其中,判断时钟中断是否成功注入虚拟机的实现方式将在后续实施例中进行说明,此处不进行赘述。
103:判断该数量是否大于零。
若存在未注入成功的时钟中断,上述统计获得的数量大于零,表明虚拟机处理的时钟中断的数量小于宿主机产生的时钟中断的数量,此时可以对未注入成功的时钟中断进行补偿。若不存在,上述统计获得的数量为零,表明虚拟机处理的时钟中断的数量与宿主机产生的时钟中断的数量一致,无需进行补偿。
由此,上述统计获得的数量大于零与数量为零时,后续的处理操作也有所不同。因此,可以优先对该数量是否大于零进行判断,并在判断结果为是时,执行步骤104的操作,以及在判断结果为否时,执行步骤106的操作。
104:若数量大于零,按照小于第一时间间隔的第二时间间隔产生第二时钟中断,并将第二时钟中断注入虚拟机。
判断数量大于零时,对未注入成功的时钟中断进行补偿,此时可以产生补偿时钟中断,并将该补偿时钟中断注入虚拟机。为了便于描述,可以将前者时钟中断称为第一时钟中断,将产生第一时钟中断的时间间隔称为第一时间间隔,以及将补偿时钟中断称为第二时钟中断,将产生第二时钟中断的时间间隔称为第二时间间隔。
具体的,该第二时间间隔可以小于第一时间间隔。以第一时间间隔是10ms为例,第二时间间隔可以设置为9ms、8ms等。
105:若第二时钟中断注入成功,更新数量。
第二时钟中断产生后,也可以对第二时钟中断是否成功注入虚拟机进行判断。若第二时钟中断注入成功,可以减小上述统计获得的未注入成功的第一时钟中断的数量,从而更新该数量,并返回执行步骤103的操作继续执行,直至判断结果为否时,执行步骤106的操作。
具体的,可以基于注入成功的第二时钟中断的数量,更新原数量。例如,统计获得的数量为100个,注入成功的第二时钟中断数量为40个,则可以更新该数量为60个。判断该数量大于零,继续按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断,并将第二时钟中断注入虚拟机,判断第二时钟中断是否注入成功,并在判断结果为是时,更新数量。例如,统计获得的数量为60个,注入成功的第二时钟中断数量为60个,则可以更新该数量为0个。此时,判断该数量为零,执行步骤106的操作。
可选的,若第二时钟中断未注入成功,则直接返回步骤103的操作继续执行,直至判断结果为否时,执行步骤106的操作。
106:若数量为零,终止产生第二时钟中断,并等待到达第一时间间隔之后产生第一时钟中断。
判断数量为零时,表明虚拟机处理的时钟中断与宿主机发送的时钟中断的数量一致,虚拟机的系统时间也与宿主机的系统时间一致,虚拟机及该虚拟机上的程序正常运行,无需进行时钟中断补偿。因此,可以在当前存在第二时钟中断的情况下,终止产生第二时钟中断,并等待到达第一时间间隔之后产生第一时钟中断,将第一时钟中断注入虚拟机。
本申请实施例中,统计未成功注入虚拟机的第一时钟中断的数量,并在判断数量大于零时,按照小于第一时间间隔的第二时间间隔产生第二时钟中断,将第二时钟中断注入虚拟机,并在判断第二时钟中断注入成功时,更新数量,直至判断数量为零时,终止产生第二时钟中断,通过产生并注入第二时钟中断对未注入成功的第一时钟中断进行补偿,减小虚拟机未接收成功的时钟中断的数量,从而减小虚拟机的系统时间与宿主机的系统时间之间的偏差,提高虚拟机系统时间更新的准确性。同时,第二时钟中断是按照小于第一时间间隔的第二时间间隔产生的,第二时钟中断的产生频率高于第一时钟中断,因此增加了第二时钟中断产生时,虚拟机运行在可以接收该第二时钟中断的情况的几率,进一步减小了虚拟机的系统时间与宿主机的系统时间之间的偏差,提高了虚拟机系统时间更新的准确性。并且,该第二时钟中断的产生是针对系统时间与宿主机的系统时间之间存在偏差的某一虚拟机进行设置的,只针对该虚拟机进行补偿,不会影响宿主机上其它虚拟机的系统时间更新以及程序运行,可以适用于多虚拟机运行环境。
为了提高补偿效果,第二时间间隔可以进行多次设置,在某些实施例中,若数量大于零时,可以按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断。
可选的,第二时间间隔进行初次设置时,当前最小时间间隔可以等于第一时间间隔,此时,第二时间间隔可以小于第一时间间隔。第二时钟中断的产生频率高于第一时钟中断,可以起到对未注入成功的第一时钟中断的补偿作用。以第一时间间隔是10ms为例,第二时间间隔可以设置为9ms、8ms等。
可选的,第二时间间隔进行多次设置时,当前最小时间间隔可以为上次设置的第二时间间隔,小于第一时间间隔。以第一时间间隔是10ms,初次设置的第二时间间隔是9ms为例,再次设置的第二时间间隔可以为8ms、5ms等。
上述第二时间间隔是根据任意小于当前最小时间间隔的时间间隔进行设置的。可选的,该第二时间间隔还可以根据预设规则进行设置,具体的实现过程将在后续的实施例中进行说明,此处不进行赘述。
在实际应用中,时钟中断可以是由定时器产生的。在某些实施例中,按照第一时间间隔产生第一时钟中断的方法可以包括:
启动第一定时器,由第一定时器按照第一时间间隔产生第一时钟中断。
本实施例中,定时器安装在宿主机上,由宿主机启动,并设置定时间隔为第一时间间隔。定时器按照第一时间间隔运行,产生第一时钟中断,并将其注入虚拟机。判断第一时钟中断是否成功注入虚拟机,统计未注入成功的第一时钟中断的数量,并判断该数量是否大于零。
若数量大于零,可以产生补偿时钟中断,即第二时钟中断。可选的,该第二时钟中断也可以由定时器产生。此时,若数量大于零,按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断,并将第二时钟中断注入虚拟机的方法可以包括:
若数量大于零,创建第二定时器;
启动第二定时器,利用第二定时器按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断,并将第二时钟中断注入虚拟机。
具体的,产生第二时钟中断的定时器可以作为补偿定时器,由宿主机创建并启动。为了便于描述,可以将产生第一时钟中断的定时器称为第一定时器,以及将补偿定时器称为第二定时器。创建第二定时器并启动,设置该第二定时器的定时间隔为小于当前最小时间间隔的第二时间间隔。
第二定时器按照第二时间间隔运行,产生第二时钟中断,并将其注入虚拟机。判断第二时钟中断是否成功注入虚拟机,若注入成功,更新上述数量,返回判断数量是否大于零的步骤继续执行。若未注入成功,返回判断数量是否大于零的步骤继续执行。
若判断数量依旧大于零,表明第二定时器按照第二时间间隔运行,所产生的第二时钟中断无法完全补偿未注入成功的第一时钟中断,因此可以进一步缩小第二定时器的定时间隔。
可选的,可以重新设置小于当前最小时间间隔的第二时间间隔作为第二定时器的定时间隔,此时,当前最小时间间隔是上次设置的第二时间间隔。第二定时器按照重新设置的第二时间间隔运行,重新产生第二时钟中断,将其注入虚拟机,并按照若第二时钟中断注入成功,更新数量,以及判断数量是否大于零的步骤继续执行。
可选的,还可以删除当前的第二定时器,并重新创建第二定时器,设置小于当前最小时间间隔的第二时间间隔作为重新创建的第二定时器的定时间隔,其中,当前最小时间间隔实现为上述删除的第二定时器的定时间隔。
直至判断数量为零,无需进行时钟中断补偿时,将上述第二定时器进行删除,以终止产生第二时钟中断。
本实施例中,创建补偿定时器,并设置补偿定时器的定时间隔小于当前最小时间间隔,使得补偿定时器可以以更快的频率产生补偿时钟中断并注入虚拟机,实现了对未注入成功的第一时钟中断进行补偿,减小虚拟机未接收成功的时钟中断的数量,从而减小虚拟的系统时间与宿主机的系统时间之间的偏差,提高虚拟机系统时间更新的准确性。同时,该补偿定时器是针对系统时间与宿主机的系统时间之间存在偏差的某一虚拟机进行设置的,只针对该虚拟机进行补偿,不会影响宿主机上其它虚拟机的系统时间更新以及程序运行,可以适用于多虚拟机运行环境。
在实际应用中,对于补偿定时器的时间间隔,可以基于当前最小时间间隔,任意设置小于该当前最小时间间隔的第二时间间隔。例如,当前最小时间间隔是10ms,该第二时间间隔可以设置为9ms。除此之外,还可以根据预设规则进行设置。在某些实施例中,利用第二定时器按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断的方法可以包括:
基于数量及预设的数量与第二时间间隔的对应关系,确定第二时间间隔,第二时间间隔小于当前最小时间间隔,当前最小时间间隔小于或等于第一时间间隔;
利用第二定时器按照第二时间间隔产生第二时钟中断。
具体的,可以预先设置数量与第二时间间隔的对应关系。为了提高补偿效果,数量越大,第二时间间隔可以越小,这样,可以更快地产生补偿时钟中断,完成时钟补偿。以第一时间间隔是10ms为例,数量是10时,对应的第二时间间隔可以为5ms,数量是20时,对应的第二时间间隔可以为3ms等,可以根据实际应用场景进行设置,本申请对此不做具体限制。
因此,基于数量以及上述对应关系,可以确定第二时间间隔,由第二定时器按照该第二时间间隔产生第二时钟中断。并且该第二时间间隔小于当前最小时间间隔,当前最小时间间隔小于或等于第一时间间隔。
在实际应用中,上述过程中,统计未注入成功的第一时钟中断的数量可以通过计数器实现。在某些实施例中,该方法还可以包括:
创建计数器,并将计数器的数值作为该数量。
此时,统计未注入成功的第一时钟中断的数量的方法可以包括:
针对任一个注入虚拟机的第一时钟中断,判断第一时钟中断是否注入成功;
若未注入成功,将计数器的数值加一;
若注入成功,维持计数器的数值不变。
本实施例中,计数器可以由宿主机创建,并设置计数器的初始数值为零。当第一时钟中断未注入成功时,计数器的数值增加。例如,存在五个第一时钟中断未注入成功,则计数器的数值增加五。可选的,针对每一个第一时钟中断,判断其是否注入成功,并在判断结果为否时,将计数器的数值加一,以及在判断结果为是时,维持计数器的数值不变。
可以将计数器的数值作为上述统计数量,通过对该计数器的数值是否大于零进行判断,实现对该数量是否大于零的判断。
判断计数器的数值大于零时,可以执行按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断,并将第二时钟中断注入虚拟机,以及判断第二时钟中断是否注入成功,若注入成功,更新数量的步骤。
上述过程中,判断第二时钟中断注入成功时,计数器的数值开始减小,并且计数器减小的数值与注入成功的第二时钟中断的数量一致。例如,三个第二时钟中断注入成功,则计数器的数值减三。
可选的,若第二时钟中断注入成功,更新数量的方法可以包括:
若第二时钟中断注入成功,将计数器的数值减一。
具体的,针对每一个第二时钟中断,判断其是否注入成功,并在判断结果为是时,将计数器的数值减一,以及在判断结果为否时,计数器的数值不减小。之后,返回判断计数器的数值是否大于零的步骤继续执行。
本实施例中,将统计获得的未注入成功的第一时钟中断的数量用计数器的数值进行表示,并在任一个第一时钟中断未注入成功时,增加计数器的数值,以及在任一个用于补偿的第二时钟中断注入成功时,减小计数器的数值,直至计数器的数值为零,使得时钟中断的补偿过程清晰直观地体现。
下面对判断时钟中断是否成功注入虚拟机的具体方式进行说明。以第一时钟中断为例,在实际应用中,第一时钟中断成功注入虚拟机后,虚拟机中的中断处理程序将会对该第一时钟中断进行处理,并存储针对该第一时钟中断的处理结果。由此,可以实现对第一时钟中断是否成功注入虚拟机的判断。在某些实施例中,判断第一时钟中断是否注入成功的方法可以包括:
判断是否存在虚拟机对第一时钟中断的处理结果;
若存在,确定第一时钟中断注入成功;
若不存在,确定第一时钟中断未注入成功。
具体的,针对每一个注入虚拟机的第一时钟中断,可以判断是否存在虚拟机对该第一时钟中断的处理结果。例如,可以向虚拟机发送获取针对该第一时钟中断处理结果的请求,并在接收到对应的处理结果时,确定该第一时钟中断注入成功,以及在未接收到对应的处理结果时,确定该第一时钟中断未注入成功。
第二时钟中断的判断方式与第一时钟中断相同,不再进行赘述。可选的,时钟中断可以带有标识信息,如第一时钟中断可以带有第一定时器的标识信息,第二时钟中断可以带有第二定时器的标识信息,从而可以根据标识信息获取对应的处理结果。
如图2所示,本申请提供的一种数据处理方法另一个实施例的流程图,该方法可以包括以下几个步骤:
201:启动第一定时器,由第一定时器按照第一时间间隔产生第一时钟中断,以及创建计数器,并将计数器的数值作为未注入成功的第一时钟中断的数量;
202:针对任一个注入虚拟机的第一时钟中断,判断第一时钟中断是否注入成功;若判断结果为是,返回步骤201中“由第一定时器按照第一时间间隔产生第一时钟中断”的操作继续执行;若判断结果为否,执行步骤203的操作;
203:若第一时钟中断未注入成功,将计数器的数值加一;
204:判断计数器的数值是否大于零;若判断结果为是,执行步骤205的操作;若判断结果为否,执行步骤208的操作;
205:若计数器的数值大于零,创建第二定时器,并启动第二定时器,利用第二定时器按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断,并将第二时钟中断注入虚拟机;
206:判断第二时钟中断是否注入成功;若判断结果为是,执行步骤207的操作;若判断结果为否,返回步骤204的操作继续执行;
207:若第二时钟中断注入成功,将计数器的数值减一,并返回步骤204的操作继续执行;
208:若计数器的数值为零,且在当前存在第二定时器的情况下,删除第二定时器以终止产生第二时钟中断,并返回步骤201的操作继续执行。
本实施例中各步骤的具体实现方式在图1所示实施例中已进行了详细的说明,此处不再进行赘述。
如图3所示,为本申请提供的一种系统时间更新方法一个实施例的流程图,该方法可以包括以下几个步骤:
301:接收第一时钟中断及第二时钟中断。
其中,第一时钟中断按照第一时间间隔产生,第二时钟中断在统计未成功注入虚拟机的第一时钟中断的数量大于零时,按照小于第一时间间隔的第二时间间隔产生,以及在数量为零时,终止产生。
本实施例中,可以应用于宿主机上安装的虚拟机。虚拟机可以接收宿主机产生的时钟中断,并基于该时钟中断更新系统时间。具体的,该时钟中断包括第一时钟中断及第二时钟中断,宿主机产生各时钟中断的具体实现方式在图1所示实施例中已进行了详细的说明,此处不再进行赘述。
302:基于第一时钟中断及第二时钟中断的数量及各时钟中断代表的时间,更新虚拟机的系统时间。
其中,第一时钟中断和第二时钟中断所代表的时间相同,例如可以为10ms。因此,可以结合接收的第一时钟中断和第二时钟中断的数量,更新虚拟机的系统时间。例如,虚拟机接收的第一时钟中断的数量为200个,第二时钟中断的数量为100个,则系统时间可以更新3s。
本申请实施例中,虚拟机接收第一时钟中断及第二时钟中断。通过接收并处理第二时钟中断,实现了对未接收成功的第一时钟中断的补偿,减小虚拟机未接收成功的第一时钟中断的数量,从而减小虚拟机的系统时间与宿主机的系统时间之间的偏差,提高虚拟机系统时间更新的准确性。并且由于第二时钟中断是按照小于第一时间间隔的第二时间间隔产生的,第二时钟中断的产生频率高于第一时钟中断,增加了第二时钟中断产生时,虚拟机运行在可以接收该第二时钟中断的情况的几率,进一步减小了虚拟机的系统时间与宿主机的系统时间之间的偏差,提高了虚拟机系统时间更新的准确性。
如图4所示,为本申请提供的一种数据处理装置一个实施例的结构示意图,该装置可以包括以下几个模块:
第一产生模块401,用于按照第一时间间隔产生第一时钟中断,并将第一时钟中断注入虚拟机;
统计模块402,用于统计未注入成功的第一时钟中断的数量;
第二产生模块403,用于若数量大于零,按照小于第一时间间隔的第二时间间隔产生第二时钟中断,并将第二时钟中断注入所述虚拟机;
第一更新模块404,用于若第二时钟中断注入成功,更新数量;
终止模块405,用于若数量为零,终止产生第二时钟中断,并等待到达第一时间间隔之后产生第一时钟中断。
在某些实施例中,该装置还可以包括判断模块;
第二产生模块403具体可以用于在判断模块结果为是时,按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断,并将第二时钟中断注入虚拟机;
终止模块405具体可以用于在判断模块结果为否时,终止产生第二时钟中断,并等待到达第一时间间隔之后产生第一时钟中断。
图4所示的数据处理装置可以用于实现图1所示实施例中的数据处理方法,本实施例未详细描述的部分,可参考对图1所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1所示实施例中的描述,在此不再赘述。
如图5所示,为本申请提供的一种系统时间更新装置一个实施例的结构示意图,该装置可以包括以下几个模块:
接收模块501,用于接收第一时钟中断及第二时钟中断,第一时钟中断按照第一时间间隔产生,第二时钟中断在统计未成功注入虚拟机的第一时钟中断的数量大于零时,按照小于第一时间间隔的第二时间间隔产生,以及在数量为零时,终止产生;
第二更新模块502,用于基于第一时钟中断及第二时钟中断的数量及各时钟中断代表的时间,更新虚拟机的系统时间。
图5所示的系统时间更新装置可以用于实现图3所示实施例中的系统时间更新方法,本实施例未详细描述的部分,可参考对图3所示实施例的相关说明。该技术方案的执行过程和技术效果参见图3所示实施例中的描述,在此不再赘述。
以上描述了数据处理装置的内部功能和结构,在一个可能的设计中,数据处理装置的结构可实现为一电子设备。如图6所示,为本申请提供的一种电子设备一个实施例的结构示意图,包括存储组件601及处理组件602;
存储组件601存储一条或多条计算机指令;该计算机指令供处理组件602调用执行;
处理组件602用于:
按照第一时间间隔产生第一时钟中断,并将第一时钟中断注入虚拟机;
统计未注入成功的第一时钟中断的数量;
若数量大于零,按照小于第一时间间隔的第二时间间隔产生第二时钟中断,并将第二时钟中断注入虚拟机;
若第二时钟中断注入成功,更新数量;
若数量为零,终止产生第二时钟中断,并等待到达第一时间间隔之后产生第一时钟中断。
可选地,处理组件602还用于执行前述各方法步骤中的全部或部分步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对传统方案做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种数据处理方法,其特征在于,包括:
按照第一时间间隔产生第一时钟中断,并将所述第一时钟中断注入虚拟机;
统计未注入成功的所述第一时钟中断的数量;
若所述数量大于零,按照小于所述第一时间间隔的第二时间间隔产生第二时钟中断,并将所述第二时钟中断注入所述虚拟机;
若所述第二时钟中断注入成功,更新所述数量;
若所述数量为零,终止产生所述第二时钟中断,并等待到达所述第一时间间隔之后产生所述第一时钟中断;
其中,所述若所述第二时钟中断注入成功,更新所述数量包括:若所述第二时钟中断注入成功,基于注入成功的所述第二时钟中断的数量,更新所述数量。
2.根据权利要求1所述的方法,其特征在于,所述按照小于所述第一时间间隔的第二时间间隔产生第二时钟中断包括:
按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断。
3.根据权利要求2所述的方法,其特征在于,所述按照第一时间间隔产生第一时钟中断包括:
启动第一定时器,由所述第一定时器按照第一时间间隔产生第一时钟中断;
所述若所述数量大于零,按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断,并将所述第二时钟中断注入所述虚拟机包括:
若所述数量大于零,创建第二定时器;
启动所述第二定时器,利用所述第二定时器按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断,并将所述第二时钟中断注入所述虚拟机;
所述若所述数量为零,终止产生所述第二时钟中断包括:
若所述数量为零,删除所述第二定时器以终止产生所述第二时钟中断。
4.根据权利要求3所述的方法,其特征在于,所述利用所述第二定时器按照小于当前最小时间间隔的第二时间间隔产生第二时钟中断包括:
基于所述数量及预设的数量与第二时间间隔的对应关系,确定第二时间间隔,所述第二时间间隔小于当前最小时间间隔,所述当前最小时间间隔小于或等于所述第一时间间隔;
利用所述第二定时器按照所述第二时间间隔产生第二时钟中断。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
创建计数器,并将所述计数器的数值作为数量;
所述统计未注入成功的所述第一时钟中断的数量包括:
针对任一个注入虚拟机的第一时钟中断,判断所述第一时钟中断是否注入成功;
若未注入成功,将所述计数器的数值加一;
若注入成功,维持所述计数器的数值不变。
6.根据权利要求5所述的方法,其特征在于,所述判断所述第一时钟中断是否注入成功包括:
判断是否存在所述虚拟机对所述第一时钟中断的处理结果;
若存在,确定所述第一时钟中断注入成功;
若不存在,确定所述第一时钟中断未注入成功。
7.根据权利要求5所述的方法,其特征在于,所述若所述第二时钟中断注入成功,更新所述数量包括:
若所述第二时钟中断注入成功,将所述计数器的数值减一。
8.一种系统时间更新方法,其特征在于,包括:
接收第一时钟中断及第二时钟中断,所述第一时钟中断按照第一时间间隔产生,所述第二时钟中断在统计未成功注入虚拟机的所述第一时钟中断的数量大于零时,按照小于所述第一时间间隔的第二时间间隔产生,以及在所述数量为零时,终止产生;
基于所述第一时钟中断及所述第二时钟中断的数量及各时钟中断代表的时间,更新所述虚拟机的系统时间。
9.一种数据处理装置,其特征在于,包括:
第一产生模块,用于按照第一时间间隔产生第一时钟中断,并将所述第一时钟中断注入虚拟机;
统计模块,用于统计未注入成功的所述第一时钟中断的数量;
第二产生模块,用于若所述数量大于零,按照小于所述第一时间间隔的第二时间间隔产生第二时钟中断,并将所述第二时钟中断注入所述虚拟机;
第一更新模块,用于若所述第二时钟中断注入成功,基于注入成功的所述第二时钟中断的数量,更新所述数量;
终止模块,用于若所述数量为零,终止产生所述第二时钟中断,并等待到达所述第一时间间隔之后产生所述第一时钟中断。
10.一种系统时间更新装置,其特征在于,包括:
接收模块,用于接收第一时钟中断及第二时钟中断,所述第一时钟中断按照第一时间间隔产生,所述第二时钟中断在统计未成功注入虚拟机的所述第一时钟中断的数量大于零时,按照小于所述第一时间间隔的第二时间间隔产生,以及在所述数量为零时,终止产生;
第二更新模块,用于基于所述第一时钟中断及所述第二时钟中断的数量及各时钟中断代表的时间,更新所述虚拟机的系统时间。
11.一种电子设备,其特征在于,包括存储组件及处理组件;
所述存储组件存储一条或多条计算机指令;所述计算机指令供所述处理组件调用执行;
所述处理组件用于执行所述计算机指令时实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110944978.3A CN113687916B (zh) | 2021-08-17 | 2021-08-17 | 数据处理方法及装置、时间更新方法及装置、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110944978.3A CN113687916B (zh) | 2021-08-17 | 2021-08-17 | 数据处理方法及装置、时间更新方法及装置、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113687916A CN113687916A (zh) | 2021-11-23 |
CN113687916B true CN113687916B (zh) | 2023-01-10 |
Family
ID=78580375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110944978.3A Active CN113687916B (zh) | 2021-08-17 | 2021-08-17 | 数据处理方法及装置、时间更新方法及装置、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113687916B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853598A (zh) * | 2014-02-21 | 2014-06-11 | 北京神舟航天软件技术有限公司 | 实现嵌入式虚拟机硬实时虚拟定时器响应的方法 |
CN105656795A (zh) * | 2014-11-14 | 2016-06-08 | 腾讯科技(深圳)有限公司 | 虚拟机的流量控制方法及物理机 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6981165B2 (en) * | 2002-09-03 | 2005-12-27 | International Business Machines Corporation | Method and apparatus for handling an interrupt from a real-time clock to increment a program clock |
CN1755614A (zh) * | 2004-09-29 | 2006-04-05 | 华为技术有限公司 | 定时器的实现方法 |
CN101441498B (zh) * | 2007-11-19 | 2010-06-09 | 联想(北京)有限公司 | 虚拟机监视器、虚拟机系统及其时钟分配使用方法 |
CN102929735B (zh) * | 2012-10-19 | 2015-11-25 | 北京星网锐捷网络技术有限公司 | 一种时钟校正的方法和设备 |
CN104679583B (zh) * | 2013-11-28 | 2019-02-05 | 华为技术有限公司 | 一种动态调整时钟中断的方法及装置 |
CN106559157A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种时钟同步方法、装置及通信设备 |
CN107346261A (zh) * | 2017-06-30 | 2017-11-14 | 联想(北京)有限公司 | 虚拟机时间同步方法、物理主机及虚拟机 |
US10712766B2 (en) * | 2017-09-19 | 2020-07-14 | Microsoft Technology Licensing, Llc | Hypervisors timer techniques |
CN111338748B (zh) * | 2020-02-10 | 2024-03-19 | 龙芯中科技术股份有限公司 | 时间同步方法、装置、设备及存储介质 |
-
2021
- 2021-08-17 CN CN202110944978.3A patent/CN113687916B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853598A (zh) * | 2014-02-21 | 2014-06-11 | 北京神舟航天软件技术有限公司 | 实现嵌入式虚拟机硬实时虚拟定时器响应的方法 |
CN105656795A (zh) * | 2014-11-14 | 2016-06-08 | 腾讯科技(深圳)有限公司 | 虚拟机的流量控制方法及物理机 |
Also Published As
Publication number | Publication date |
---|---|
CN113687916A (zh) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110222091B (zh) | 一种海量数据实时统计分析方法 | |
WO2018000678A1 (zh) | 模块流程化调度方法及装置 | |
EP3139269A1 (en) | Interrupt messages processing method, virtual machine monitor and interrupt controller | |
EP2071453A1 (en) | Dynamic code update | |
CN102999387A (zh) | 进程运行装置及方法 | |
CN113687916B (zh) | 数据处理方法及装置、时间更新方法及装置、电子设备 | |
CN110737507B (zh) | 一种虚拟机迁移方法与装置 | |
CN109117295B (zh) | 一种交易超时监控方法及装置 | |
CN113590007B (zh) | 进度条的生成方法、生成装置、计算机设备及存储介质 | |
CN111078418B (zh) | 操作同步方法、装置、电子设备及计算机可读存储介质 | |
CN107092528A (zh) | 一种分布式任务调度方法、装置及系统 | |
CN114500488B (zh) | 半导体清洗设备通讯方法、系统以及计算机可读存储介质 | |
CN115981854A (zh) | 一种基于链表的定时器管理方法及装置 | |
CN109117277B (zh) | 异步环境中模拟同步阻塞的方法及装置、存储介质、服务器、终端 | |
CN112000492B (zh) | 公众号用户标签的管理系统及方法 | |
CN108920722B (zh) | 一种参数配置的方法、装置及计算机存储介质 | |
CN107506214B (zh) | 一种集群系统控制器的更新方法及更新系统 | |
CN106484776B (zh) | 一种基于多线程的数据处理方法及装置 | |
CN112035203A (zh) | 一种接口轮询方法、装置、设备及存储介质 | |
CN111738823A (zh) | 银行外围系统及其切日方法 | |
CN112217773B (zh) | 一种防火墙规则处理方法、装置及存储介质 | |
CN116722962B (zh) | 中断处理方法、通信装置、通信设备及芯片系统 | |
CN116610724B (zh) | 一种日志数据追踪方法、装置、电子设备和存储介质 | |
CN117033337A (zh) | 数据库的定时任务下线方法、装置、电子设备和存储介质 | |
CN103095740A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |