CN105446795B - 虚拟机操作中的并行化 - Google Patents
虚拟机操作中的并行化 Download PDFInfo
- Publication number
- CN105446795B CN105446795B CN201510606615.3A CN201510606615A CN105446795B CN 105446795 B CN105446795 B CN 105446795B CN 201510606615 A CN201510606615 A CN 201510606615A CN 105446795 B CN105446795 B CN 105446795B
- Authority
- CN
- China
- Prior art keywords
- tasks
- cpus
- executed
- virtual
- identified
- 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/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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
根据一种提供虚拟化服务的方法,可执行为多个任务的计算机程序可以被识别,如来自多个任务的任务。计算机程序(122)可以由执行在主机硬件平台上的虚拟机(114)中的虚拟中央处理器(CPU)(118a)来执行,并且被限定以提供用于虚拟化目标硬件平台的虚拟化平台(116)。这可以包括除(已识别的)任务以外的由在执行在主机硬件平台的CPU(104a)上的虚拟机(116)中的虚拟CPU(118a)执行的,并且至少部分地与执行在主机硬件平台的附加CPU(104b)上的这些任务并行的多个任务。目标硬件平台可以包括用于执行多个任务的CPU(104a),所述CPU在数量上不大于主机硬件平台的CPU,除该任务以外的多个任务被执行在主机硬件平台上的CPU上。
Description
技术领域
本发明通常涉及硬件的虚拟化,并且更具体地涉及虚拟机中的并行化或由此提供的虚拟化平台。
背景技术
包括飞行器、宇宙飞船、汽车、医疗器械等的许多现代复杂的系统包含与多个子系统通信以创建完整的系统的中央计算机系统或其他处理元件。该中央处理器可以包括执行被设计用于控制复杂系统的计算机程序的一个或多个处理器和/或核。
为了开发这些复杂的系统,创建了测试设备(test facility)从而允许开发中央计算机系统中的计算机程序并且使用连接到该测试设备的真实和/或模拟子系统对所述计算机程序进行测试。因为这些测试设备往往是昂贵的,所以它们通常是开发程序上的有限的资源。为了创建更多的测试能力,测试设备的虚拟表示往往被创建。
创建虚拟测试设备的一种方式是创建适当设备和通信接口的模拟并将这些模拟连接到计算机程序,用于控制运行在虚拟化平台内的复杂系统,这可以通过被配置以运行在主机硬件平台的顶端上的适合的虚拟机来提供。在虚拟平台内的仿真处理器上运行计算机程序通常是被希望的。仿真处理器和虚拟化层允许对执行计算机程序的很好控制,而且其还对计算机程序的操作提供更好的可见性。
在复杂系统被开发后,创建训练器以对复杂系统的用户培训其操作通常是必需的或非常期望的。具有以(如果不是完全相同则)接近实际系统的操作的方式来操作的训练器(trainer)是非常期望的。创建训练器的一种方法是运行在主机硬件平台上的虚拟化平台内的计算机程序。在虚拟平台内的仿真处理器上运行计算机程序通常是期望的。仿真处理器和虚拟化层提供实际系统的高保真度表示,并允许对于执行计算机程序的很好的控制,从而允许创建不可能存在于复杂系统中所使用的真实目标硬件平台上的某些训练场景。
虚拟化平台的创建包括创建基于实际复杂系统的目标硬件平台的纯软件表示。虚拟化的目标是使运行在虚拟平台内的计算机程序以与真实目标硬件类似的方式来执行。为了实现这个目标,存在于(found in)由运行在虚拟平台上的计算机程序访问的系统的存储器映射中的硬件可以被虚拟化。硬件的这种虚拟化的复杂性各不相同,但如果当计算机程序读取/写入内存位置和寄存器时做得正确,应当看到在系统中它预期(expect)的行为。
创建虚拟化平台的另一个方面是正确的处理系统的中断。中断被用于系统中的信号事件,例如,输入/输出传送和/或接收、定时器期满等。中断的设计在系统之间是不同的。中断设计经常使用中断线、向量和控制器以将中断连接到系统中的设备。中断设计的全部功能可被虚拟化以实现有效的虚拟平台。
处理器的仿真在虚拟化平台中往往是期望的特征。该处理器的仿真允许执行在硬件上的计算机程序的完全相同的二进制数(binary)以在虚拟化平台中执行。如果处理器仿真在虚拟化平台上是可用的,使用完全相同的软件开发环境和操作系统也是可能的。
处理器的仿真比本地处理器(native processor)的执行慢。测试设备和训练器使用虚拟化平台以运行至少与被虚拟化的目标硬件平台一样快通常是期望的,并且加速运行(比目标硬件平台快)通常也是期望的。因为运行虚拟化平台的主机硬件平台通常比目标硬件平台快得多,所以有时可以实现必要的性能而无需额外的工作。但随着目标硬件平台和主机硬件平台之间的性能差距的接近,如果不是不可能的,则采用传统技术达到所期望的仿真性能可能是困难的。
发明内容
鉴于上述背景,本公开的示例实施例提供用于提供虚拟化服务并包括在由此提供的虚拟机或虚拟化平台中的并行化的计算机系统、方法和计算机可读存储介质。在这点上,示例实施例可以包括识别系统中的任务或进程,并检测它们在虚拟化层中的执行,该虚拟化层可以操作具有一个或多个虚拟处理器的虚拟机。它们的处理随后可以被发送到主机硬件平台的附加物理中央处理器(CPU)(有时也被称为“核”)。虚拟机中的计算机程序对任何附加虚拟处理器可以是不可见的,并且可不必须被写入以在多处理器上运行。
根据一个方面,提供虚拟化服务的方法可以包括识别一个或多个可执行计算机程序为多个任务,其包括识别来自多个任务的一个或多个任务。该方法还可以包括通过在虚拟机中的一个或多个CPU执行计算机程序,该虚拟机被执行在主机硬件平台上并被限定以提供用于虚拟化目标硬件平台的虚拟化平台。执行计算机程序可以包括通过在运行在主机硬件平台的一个或多个CPU上的虚拟机中的虚拟CPU执行除已识别的任务以外的多个任务。并且执行计算机程序可以包括在主机硬件平台的一个或多个附加CPU上执行已识别的任务,使得已识别的任务由主机硬件平台的附加CPU来执行,所述任务的执行至少部分地并行于除已识别的任务以外的多个任务通过虚拟机中的虚拟CPU的执行。根据这方面,目标硬件平台可以包括用于执行多个任务的一个或多个CPU,所述一个或多个CPU在数量上不大于主机硬件平台的CPU,除已识别的一个或多个任务以外的多个任务被执行在主机硬件平台上的CPU上。
在一些示例中,识别已识别的任务可以包括分析计算机程序的一个或多个符号表,以确定已识别的任务。
在一些示例中,多个任务可以包括一个或多个前台任务和一个或多个后台任务。在这些示例中,识别已识别的任务可以包括识别后台已识别的任务。
在一些示例中,多个任务可以在时间的相应点处被调度执行。在这些示例中,已识别的任务可以在已识别的任务被调度执行所在的时间相应的点之前在附加CPU上来执行。并且在一些进一步的示例中,执行除已识别的任务以外的多个任务包括在已识别的任务被调度执行所在的时间的相应点中的每个点处通过虚拟CPU执行方法存根(stub)或者立即移动到通过虚拟CPU执行的多个任务的下一调度的任务。
在一些示例中,执行已识别的任务可以包括通过在主机硬件平台的附加CPU上执行的虚拟机中的一个或多个附加虚拟CPU来执行已识别的任务,其中附加虚拟CPU对被配置为管理虚拟化平台的操作系统是隐藏的。
在一些示例中,多个任务可以在由表观时间基准(apparent-time reference)跟踪的表观时间中的相应点处被调度执行。在这些示例中和在执行除已识别的任务以外的多个任务的期间,该方法可进一步包括在除已识别的任务以外的多个任务的所有前台任务已经被执行所在的表观时间处检测当前点,或在虚拟CPU是空闲所在的表观时间处检测当前点。并且响应于此,该方法可以包括使用大于所述表观时间基准来跟踪所述表观时间所在的频率的频率将所述表观时间从所述当前点推进到随后的点。
在示例实施例的其他方面中,提供了用于并行化虚拟机操作的计算机系统和计算机可读存储介质。计算机可读存储介质是非暂时性的并且具有存储在其中的计算机可读程序代码部分,其响应于通过一个或多个中央处理器(CPU)和一个或多个附加CPU的执行,使得计算机系统至少识别可执行为多个任务的一个或多个计算机程序,包括使得计算机系统从多个任务识别一个或多个任务,并通过虚拟机中的一个或多个虚拟CPU执行一个或多个计算机程序,该虚拟机被限定以为目标硬件平台的虚拟化提供虚拟化平台。使得计算机系统执行一个或多个计算机程序,包括使得通过在执行在计算机系统的一个或多个CPU上的虚拟机中的一个或多个虚拟CPU至少执行除已识别的一个或多个任务以外的多个任务;并在计算机系统的一个或多个附加CPU上执行已识别的一个或多个任务。执行是这样的,已识别的一个或多个任务由计算机系统的一个或多个附加CPU来执行,所述已识别的一个或多个任务的执行至少部分地并行于通过虚拟机中的一个或多个虚拟CPU对除已识别的一个或多个任务以外的多个任务的执行,其中,目标硬件平台包括用于执行多个任务的一个或多个CPU,所述一个或多个CPU在数量上不大于计算机系统的CPU,除已识别的一个或多个任务以外的多个任务被执行在计算机系统的一个或多个CPU上。有利的是,提供了计算机可读存储介质,其中使得计算机系统识别已识别的一个或多个任务包括被使得计算机系统分析一个或多个计算机程序的一个或多个符号表,以确定已识别的一个或多个任务,其中多个任务包括一个或多个前台任务和一个或多个后台任务,并且使得计算机系统识别已识别的一个或多个任务包括使得计算机系统识别一个或多个后台任务。有利的是,提供了计算机可读存储介质,其中多个任务在时间的相应点处被调度执行,使得计算机系统在已识别的一个或多个任务被调度执行所在的时间的相应点之前在一个或多个附加CPU上执行已识别的一个或多个任务。优选地,使得计算机系统执行除已识别的一个或多个任务之外的多个任务包括使得在已识别的一个或多个任务被调度执行所在的时间的相应点中的每个点处通过一个或多个虚拟CPU执行方法存根或者立即移动到通过一个或多个虚拟CPU执行的多个任务的下一调度的任务。更优选,使得计算机系统执行已识别的一个或多个任务包括使得通过在计算机系统的一个或多个附加CPU上执行的虚拟机中的一个或多个附加虚拟CPU来执行已识别的任务,一个或多个附加虚拟CPU对被配置为管理虚拟化平台的操作系统是隐藏的。本文所讨论的特征、功能和优点可在不同的示例实施例中独立地实现,或可在其他的示例实施例中被组合,其进一步的细节可以参照以下的描述和附图获知。
附图说明
已经以通用术语描述了本公开的示例实施例,现在将参考附图,这些附图不必要按比例绘制,并且其中:
图1A、1B和1C(统称为图1)根据本公开的示例实施例示出计算机系统;
图2根据本公开的一些示例实施例示出包括在其中任务可以在虚拟机中被执行的帧的周期;
图3、4和5示出用于对目标系统提供虚拟化服务的目标系统和计算机系统,其不具有和具有本公开的示例实施例的并行化;
图6根据本公开的示例实施例示出包括在提供虚拟化服务的方法中的各种步骤的流程图;以及
图7-14根据本公开的示例实施例示出包括可以被执行的任务并且在其执行期间可以如何移除空闲时间的计算机程序。
具体实施方式
现在将参照附图更加详细的描述以下本公开的一些实施例,其中示出本公开的一些而不是全部的实施例。事实上,本公开的各种实施可以通过多种不同的方式来实现并且不应当被解释为对在此阐述的实施例的限制;相反,提供这些示例实施例以将该公开将变得彻底和完整,并且将向本领域技术人员充分地传达本公开的范围。例如,除非另外指出,作为第一、第二等等的参考的事物不应该被解释为暗示特定顺序。类似的参考数字在所有方面指代相似的元件。
本公开的示例实施例涉及在主机硬件平台上的虚拟机的操作中的并行化。本公开的示例实施例可以通过多种方式,包括硬件,单独或在来自计算机可读存储介质的一个或多个计算机程序代码指令、程序指令或可执行计算机可读程序代码指令(有时通常称为“计算机程序”、“软件”、“固件”或等等)的指导下来实现。图1A、1B和1C(统称图1)示出计算机系统100,其可以被配置成实现本公开的各种示例实施例。
计算机系统100可以包含、包括或被体现在一个或多个固定的或便携式的电子设备中。合适的电子设备的示例包括智能手机、平板计算机、膝上型计算机、桌上型计算机、工作站计算机、服务器计算机等等。如图所示,计算机系统可以包括具有一个或多个的多个部件诸如连接到存储器106(例如,存储器器件,持久存储器)的处理器104(例如,处理器单元)中的每个的主机硬件平台102。
处理器104通常是能够处理信息诸如,例如,数据,计算机程序和/或其他合适的电子信息的任何计算机硬件。该处理器由电子电路的集合组成,电子电路的一些可被封装为集成电路或多个互连集成电路(有时集成电路更通常的被称为“芯片”)。处理器可经配置以执行计算机程序,该计算机程序可以被存储在处理器上或另外被存储在存储器(相同或另一个计算机系统或装置的)中。
处理器104根据特定的实施例可以是多个数单核处理器、多核处理器(有时被称为多处理器核)或一些其他类型的处理器。合适的多核处理器的各种示例包括八、二十四、五核或更多。如图1B所示,处理器可由多个中央处理器(CPU)(通常被称为“核”)组成的,包括一个或多个核104a和一个或多个附加核104b。另外,处理器可以使用多个异构处理器系统来实现,在异构处理器系统中,主核与一个或多个次级核存在于单个芯片上。作为另一个说明性示例,处理器可以是包含相同类型的多个核的对称多核处理器系统。在另一个示例中,处理器可以被体现为或另外包括一个或多个专用集成电路(ASIC)、现场可编程门阵列(FPGA)或等等。因此,虽然处理器可以能够执行计算机程序以执行一个或多个功能,各种示例的处理器可以能够执行一个或多个功能而不需要计算机程序的帮助。
存储器106通常是能够存储信息诸如,例如,在临时基(basis)和/或永久基上的数据、计算机程序(例如,计算机可读程序代码)和/或其它合适信息的任何计算机硬件。存储器可以包括易失性和/或非易失性存储器,并且可以是固定的或可移动的。合适的存储器的示例包括随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动器、快闪存储器、U盘、可移动计算机磁盘、光盘、磁带或上述的某些组合。光盘可以包括压缩盘-只读存储器(CD-ROM)、压缩盘-读取/写入(CD-R/W)、DVD等。在不同的实例中,存储器可以被称为计算机可读存储介质,其作为能够存储信息的非短暂性器件可以可区别于计算机可读传输媒介,诸如,能够将信息从一个位置运载到另一个位置的电子暂时信号。如本文所描述的计算机可读介质一般可以涉及计算机可读存储介质或计算机可读传输介质。
计算机系统100还可以包括或另外支持被配置为测量时间间隔或另外跟踪时间的一个或多个时间基准。如在此所示和主要描述的,合适的时间基准的一个示例是定时器108。然而,应当理解的是,计算机系统可附加地或替代地包括其它适当类型的时间基准,并且示例实施例可以同样适用于这些其它类型的时间基准。其它合适的时间基准的示例包括处理器计数器,例如,时间戳计数器(TSC)、时基计数器、递增和/或递减计数器等。
在一些示例中,时间基准诸如定时器108可以被配置为测量经过的时间,诸如,通过滴答计数(tick counting)或无刻点计时(tickless timekeeping)。根据滴答计数,定时器可以被配置为以已知速率诸如每秒100次来周期性地产生定时器中断(也被称为“滴答”)。无刻点计时可以包括被配置成保持自某一事件诸如计算机系统100启动以来已经经过的多个时间单位的计数。甚至进一步,在一些示例中,定时器可以被配置为跟踪实际时间,其也被称为“挂钟时间。”合适的定时器的示例包括可编程间隔定时器(PIT)、实时时钟(RTC)、本地高级可编程中断控制器(APIC)定时器、高级配置和电源接口(ACPI)或芯片组定时器、时间戳计数器(TSC)、高精度事件定时器(HPET)等。
存储器106可以存储计算机程序或软件,以至当计算机程序或软件由处理器104被加载并被执行时,使得计算机系统100或更特别是其主机硬件平台102提供虚拟化服务。该软件可以包括,例如,被配置为管理主机硬件平台的主机操作系统(OS)110。此外,该软件可以包括被配置为用作主机硬件平台上的软件层的虚拟化层112。虚拟化层可以被集成在主机OS内或运行在主机操作系统上。虚拟化层可以操作一个或多个虚拟机(VM)114。
如本文所用的术语“虚拟化”可以指用于将计算资源的细节或物理特性对在其中使其他系统、应用或终端用户与这些资源交互的方式隐藏,或与其分离的技术。虚拟化的不同方面可以包括呈现单个物理资源作为多个逻辑资源。虚拟化的其他方面可以包括呈现多个物理资源作为单一逻辑资源。
每个VM 114可以被限定以为目标硬件平台的虚拟化提供虚拟化平台116。术语“虚拟化平台”通常与嵌入式系统相关联,但这样的平台实际上只是更普通的术语虚拟机的一个类型。虚拟平台和虚拟机两者都是硬件的虚拟表示。
虚拟化平台116可以包括一个或多个的多个虚拟组件诸如虚拟处理器118和表观时间基准中的每个。虚拟处理器可以被配置为虚拟化目标硬件平台的处理器。类似于计算机系统100的处理器104,该虚拟处理器可以由一个或多个虚拟核(CPU)118a和一个或多个附加虚拟核118b组成,如图1C中所示。同样地,目标硬件平台的处理器可以由一个或多个核组成,尽管可能数量上比计算机系统100的处理器104的核104a少。
表观时间基准可以被配置为虚拟化目标硬件平台的相应的时间基准(例如,定时器)。如在此所示和主要描述的,合适的表观时间基准的一个示例是虚拟定时器120,尽管应该理解的是,虚拟化平台可以附加地或替换地包括(并且示例实施例可同样适用于)其它合适类型的表观时间基准,类似于以上相对于计算机系统100的定时器108。
还如图所示,虚拟处理器118可经配置以执行例如在OS 124中的一个或多个计算机程序122。类似于运行在主机硬件平台102上的主机OS 110,运行在VM 114上的OS可以经配置以管理虚拟化平台116,该虚拟化平台116再次经配置以虚拟化目标硬件平台。
由虚拟化平台116(包括其虚拟处理器118和定时器120)虚拟化的目标硬件平台(包括其处理器和定时器)可以与主机硬件平台102(包括其处理器104和定时器108)相同或不同。类似地,运行在VM 114上的OS 124可以与主机OS 110相同或不同。在目标硬件平台和主机硬件平台不同的实例中,虚拟化平台可以被配置为仿真目标硬件平台。更具体地,在这些实例中,虚拟化平台的虚拟处理器和定时器可以被配置为仿真目标硬件平台的那些。例如,虚拟处理器可以被配置为通过目标硬件平台的处理器的仿真来执行计算机程序122。
表观时间基准诸如虚拟定时器120可以被配置为虚拟化或另外仿真目标硬件平台的相应的时间基准(例如,定时器)。然而硬件平台的定时器诸如主机硬件平台的定时器108可跟踪真实(或挂钟)时间,尽管虚拟定时器可以跟踪表观时间(有时称为虚拟时间,但不应与逻辑时间混淆)。这种表观时间表示对VM 114可见的时间。虚拟定时器120类似于主机硬件平台的定时器可以跟踪表观时间,但虚拟定时器的频率不依赖于主机硬件平台的定时器的频率。因此,由虚拟定时器跟踪的表观时间不必精确地跟随实际时间。并且在一些示例中,表观时间可以被控制以促进向前或向后,更快或更慢,或甚至停止。
根据本发明的示例实施例,计算机程序122可以按照在由表观时间基准(例如,虚拟定时器120)跟踪的表观时间中的各个点处用于执行的调度的任务而由虚拟处理器118执行。在一些示例中,虚拟化平台116可以虚拟化基于帧的系统,在基于帧的系统中,任务可以在一个周期或者多个可重复的周期期间被执行,在该周期期间任务被调度以用于执行。如本文所述,“任务”通常指执行单元,并且可以包括任务、线程、进程、纤程等。
图2根据一些示例示出周期200。如图所示,周期可以被划分成多个通常被称为帧202(或有时称为小帧)的较小的周期。该帧可以具有在由虚拟平台116的表观时间基准(例如,虚拟定时器120)跟踪的表观时间中的相应点处限定的边界204。尽管本文在基于帧的系统的环境中被示出和描述,但应当理解的是,示例实施例可同样适用于非基于帧的系统,例如,纯粹由事件驱动的那些。
还如图2所示,计算机程序的任务206的至少一些中的每个可以在这些帧的一个或多个帧中被调度。示出的任务可以包括为以给定频率重复执行而调度的那些。这些任务有时被称为前台任务,并且通常包括高优先级任务。在复杂系统诸如飞行器的环境中,前台任务可以包括保证对飞行器的控制的那些。在任何特定帧期间的这些任务之间的时间有时被称为后台208。其他任务可以在后台中执行,或者有时虚拟处理器118可以是空闲的(有时由虚拟处理器的闲置状态或空闲任务表示)。在后台执行的任务(有时也被称为后台任务)通常包括低优先级的任务,例如,用于应用软件和OS家务(housekeeping)功能(例如,更新快闪存储器)的那些。在后台中执行的任务的一些更具体的示例可以是表示空闲虚拟处理器的上述的空闲任务或可用于简单地产生任意时间延迟的旋环。在复杂系统的环境中,这些后台任务通常不包括对复杂系统的控制至关重要的那些任务。
计算机程序122可针对可以或可以不包含多个核的给定目标硬件平台来设计。考虑例如针对具有单核处理器的目标硬件平台而设计的计算机程序。这些计算机程序仍然可以包括多个任务、进程、线程等。这些多个任务可以被使用,因为计算机程序当等待资源变得可用和/或等待人机交互发生时通常拖延(stall)。在单个线程的执行实例中,目标硬件平台可以拖延等待合适的事件,即使当其他有用的工作可以出现时。尽管计算机程序可作为多个任务来执行,但是单核处理器可仅能够一次执行一个任务。
在另一个示例中,计算机程序122可以被设计为完成具有任务优先权的多个任务,其中某些任务可以具有比其他任务更高的优先权。为了执行对目标硬件平台的成功操作至关重要的任务,这些较高优先级任务可以抢占较低优先级的任务。再一次地,即使存在多个任务,但是单核处理器可仅能够一次执行一个任务。因此,单核处理器可能无法实现在多个核中的并行执行。
现在考虑针对运行在VM 114上的单核处理器而设计的计算机程序122的情况。在其中VM复制目标硬件平台的实例中,VM也可以只具有虚拟单核处理器。然而,虚拟化不对物理硬件具有相同的限制。虚拟化带来实现一种新类型的并行化的可能性,这种并行化在非虚拟化目标硬件平台中是不可能的。如上所述和以下更全面描述的,随后本公开的示例实施例涉及在虚拟机操作中的并行化。
返回到图1,并附加参考图2,按照本公开的示例实施例,虚拟化层112可以识别可执行多个任务206的一个或多个计算机程序122,并且可以识别来自多个任务的一个或多个任务。对于此,虚拟化层可以分析一个或多个计算机程序中的一个或多个符号表,以识别可以被并行化的任务。随后,虚拟化层可以通过在计算机系统100的核104a上执行的VM 114中的虚拟核118a使得除识别出的任务以外的任务执行。在一些示例中,可被并行执行的那些任务的分析可由用户手动执行,并被确定虚拟化层。
至少部分地与在核104a上的任务执行并行,虚拟化层可使得已识别的任务在计算机系统100的附加核104b上执行。该并行化可实现运行在VM 144内的计算机程序122的性能提高。在一些示例中,已识别的任务可以由执行在计算机系统的附加核104b上的VM中的附加虚拟核118b来执行。在这些示例中,虽然附加虚拟核可对虚拟化层是已知的,但对运行在VM上的OS 124是隐藏的。
虚拟化层112在已识别的任务被执行所在的时间的相应点之前可使已识别的任务执行。在这方面,运行在VM 114上的OS 124或更特别是其调度器可通过虚拟核118a如其正常一样与执行的主线程一起调度任务的执行。并且当任务经历已在虚拟化层中被并行化时,该任务可已经与主线程的执行一起被并行执行,因此,不必在时间的其预定点处被执行。在一些示例中,方法存根可由虚拟核在已识别的任务被调度执行所在的时间处的相应点中的每个点处执行。或者在一些示例中,执行的任务可以立即移动到由虚拟核执行的下一个调度的任务。
可被并行化的任务可以通过多种不同的方式中的任何方式来识别。在一些示例中,其中计算机程序122的任务包括前台任务和后台任务,虚拟化层112可以识别用于执行在主机硬件平台102的附加核104b上的一个或多个后台任务,其至少部分并行于在主机硬件平台的核104a上的一个或多个前台任务。
在一些示例中,甚至在计算机程序122被设计以运行在具有单核处理器的目标硬件平台上的实例中,各种任务可以并行运行,例如,在将任务设计为具有任务优先权的实例中。在这些示例中,较低优先级的任务和后台任务可以在任何时间由具有较高优先级的任务抢占。因为是这样的话,将这些任务的一些或全部移动到主机硬件平台102的附加核104b下可是可能的。在这些示例中的虚拟化层112可以分析任务之间的依赖关系,以确定哪些任务可彼此并行运行,或者再一次这种分析可以由用户手动执行,和被识别到虚拟化层的任务。在基于设计的前台/后台中,后台任务可以经常与前台任务并行运行。
根据本公开的示例实施例的又一个方面,在虚拟处理器118的核118a对除已识别的任务之外的任务206的执行期间,VM 114的部件之一(例如,虚拟处理器)可以在被调度以给定频率(前台任务)重复执行的全部任务已经被执行所在的表观时间处在任何特定帧202期间检测当前点,或在虚拟处理器是空闲(例如,在后台208中)所在的表观时间处检测当前点。并且作为响应,可以使用大于虚拟定时器来跟踪表观时间所在的频率的频率将由虚拟定时器120跟踪的表观时间从当前点推进到随后的点。在一些示例中,虚拟定时器本身可以使表观时间前进。在其它示例中,VM或一个或多个的VM的其它部件可以使得虚拟定时器使表观时间前进。关于该进一步的方面的进一步的信息在以下并且在以上引用的和并入的'206申请案中来提供。
图3、4和5示出包括目标硬件平台302的目标系统300和用于对目标系统提供虚拟化服务的不具有和具有本公开的示例实施例的并行化的计算机系统400,500。如图3所示,目标硬件平台可以包括由单一核304组成的处理器,该处理器被配置成执行作为前台任务306a和后台任务306b的一个或多个计算机程序。该核可被配置为执行在OS中或在没有OS的所谓裸机的一些示例中的计算机程序。在目标系统中,前台任务可以在每一帧中执行,之后跟随后台任务,直到下一帧准备开始。
在图4和图5中,计算机系统400、500可以被配置以虚拟化目标系统300的目标硬件平台302,并在适当的VM中执行计算机程序和其前台任务306a和后台任务306b。如图4所示,单个虚拟核404可由VM 406提供以虚拟化目标硬件平台的单核304。VM可操作在主机硬件平台408上,主机硬件平台408包括由多个核组成的一个或多处理器,多个核中的两个被示出为核0 410a和核1 410b(虽然多于两个核是可能的)。VM可以被执行在主机硬件平台的任何核上,或者在一些示例中,VM可以被锁定到特定的核诸如以类似的方式。
图5的计算机系统500类似于图4的计算机系统400,但是根据本公开的示例实施例,在图5中的前台任务306a和后台任务306b可以至少部分并行地被执行。在图5中,单个虚拟核404(显示为虚拟核0)可与附加虚拟核504(显示为虚拟核1)一起由VM 506提供。
同样在图4中,如图所示,虚拟核0 404可以被提供以虚拟化目标硬件平台302的单核304,但也可以更具体地执行前台任务306a。另外,虚拟核1 504可以被提供以至少部分地与前台任务并行执行后台任务306b。虽然这种虚拟核1与虚拟核0可操作在相同VM 506中,但虚拟核1可对运行在VM上的OS是隐藏的。虚拟化层可以知道虚拟核1,并且虚拟核1可以被调度以运行在主机硬件平台408的附加下层核410a、410b中。
可以使用类似的将虚拟核1锁定到附加核也是可能的。
在一些示例中,并行化可以通过识别计算机程序的符号表中的背景任务306b来实现。前台任务306a的执行可以在虚拟核0 404上开始,并且后台任务的执行可在虚拟核心1504上开始。当虚拟核0在前台任务的执行完成时遇到后台任务的执行的开始时,虚拟核0可以执行方法存根或立即返回对前台任务的控制。这可以允许前台和后台进程并行运行。
图6根据本公开的示例方式示出提供虚拟化服务的方法600。如方框602所示,该方法可以包括识别作为多个任务可执行的一个或多个计算机程序,其包括从多个任务识别一个或多个任务。如604所示,该方法还可以包括由虚拟机中的一个或多个虚拟中央处理器(CPU)执行计算机程序,该虚拟机被执行在主机硬件平台上并被限定以提供用于虚拟化目标硬件平台的虚拟化平台。如方框604a所示,执行计算机程序可以包括执行除通过执行在主机硬件平台的一个或多个CPU上的虚拟机中的虚拟CPU(所识别的)任务以外的多个任务。并且执行计算机程序可以包括执行在主机硬件平台的一个或多个附加CPU上的任务,该多个任务至少部分与除方框604b所示的任务以外的多个任务并行执行。如上所述,目标硬件平台可以包括用于执行多个任务的一个或多个CPU,所述一个或多个CPU在数量上不大于主机硬件平台的CPU,除该任务以外的多个任务被执行在主机硬件平台上的CPU上。
为了进一步说明示例实施例如何可提供VM 114的性能提高,考虑图7-14所示的示例。在这些示例中,在VM中执行的计算机程序122可以包括被调度以执行多种速率的7个前台任务,以及一个或多个后台任务。这些前台任务按照调度优先级可以包括如下:Task64Hz(最高优先级),Task32Hz,Task16Hz,Task8Hz,Task4Hz,Task2Hz和Task1Hz(最低优先级)。在这个设计中,优先次序和OS任务抢占可用于实现程序的期望的活动顺序,并且定时器中断可以通过64Hz速率开始每一帧。
在这些示例中,所有的任务可以被调度以在第一帧(帧0)中执行。通过任务抢占,每帧可以包括最高优先级的任务(Task64Hz),单独或结合于低优先级的前台任务和/或后台任务。图7示出目标硬件平台上的任务的执行,该目标硬件平台可以由虚拟化平台116在VM 114上虚拟化。图7和图7-14的示例中的其他可示出前台任务,并示出后台,尽管没有单独示出在后台(背景任务)中所执行的任务-参见例如图2。
图8示出对应于图7的统一建模语言(UML)的序列图。在UML序列图中,Execute()和preempt()可以代表“调用”。OS或者更特别的是其调度器通常不使用Execute()和preempt()调用与其他任务通信。在典型的系统中,定时器108或其他合适的时间基准可以被用来引起中断发生。在本示例中,定时器可以被配置为每秒中断64次,以允许Task64Hz以64Hz的速率执行。在一些示例中,中断处理程序或中断服务例程(ISR)可用于释放OS对象诸如信号量(semaphore),以允许执行适当的任务。在其它示例中,ISR可释放信号量到在每帧中执行的最高优先级的任务(Task64Hz),并且该任务可确定适当的任务,从而释放OS对象以允许它们的执行。这些任务都可是有效的并在OS对象上挂起,并且直到任务收到OS对象,这些任务才执行。
因此,可以看出,虽然存在控制任务执行的OS调度器,但实际上其可以是释放执行任务的ISR或最高优先级的任务。当存在多个不同优先级的任务准备执行时,OS调度器不会产生影响。在这些实例中,较低优先级的任务直到所有较高优先级的任务已经完成其执行才可以执行,并且较低优先级的任务可能被抢占,以便使较高优先级的任务执行。还可注意的是,中断可停止当前任务的执行,并允许ISR执行,这可以是系统如何恢复控制以确定这些任务执行,即使在系统只包括单核处理器以执行指令的实例中。
用于确定将在中断处执行的任务的常用设计任务的一个示例包括使用使每一帧递增的帧计数,这在示出的示例中可以通过64Hz的速率发生。为了计算可要求OS对象被释放的任务,模数运算可以在帧计数上执行。在这个示例中,帧计数模64可以确定任务要执行。根据模数运算的结果,0可以指示Task1Hz已准备好执行;0,31可以指示Task2Hz已准备好执行;0,15,31,47可以指示Task4Hz已准备好执行;0,7,15,23,31,39,47,55可以指示Task8Hz已准备好执行等等。
上述讨论集中在针对包括单核处理器的目标系统所设计的计算机程序的情况。在目标系统包括多核处理器或另外包括多个核的实例中,当确定性的行为是期望的时任务的调度可变得更加复杂。对称多核处理器(SMP)的OS设计可以调度在任何可用的核上的任务,因此,在给定的任务应该总是先于其他任务来执行的实例中,OS对象可以再一次被用于控制任务之间的执行行为。在所有任务具有相同优先级的实例中,它们可最可能以任何顺序并彼此并行地来执行。
现在图9-14根据本公开的各种示例实施例示出示例实施例,在该示例实施例中,任务可由VM 114上的虚拟化平台116虚拟化。如上所述和以下所述,这些示例可用于针对包括单核处理器的目标系统而设计的计算机程序122的情况。然而,应当理解,这些示例可以被扩展到针对多核环境而设计的计算机程序。事实上,可以用于识别可被并行化的任务的分析可能已经针对多核环境完成。根据示例实施例的虚拟化层112中的并行化可以再以次为多核环境提供并行化,因为相比于在实际目标硬件平台上可用的核,主机硬件平台102的更多个核可以被使用。本文只为便于说明提供单核目标硬件平台的情况,并且不失本公开的示例实施例的一般性。
在一些示例中,一个或多个VM 114可以被创建,其匹配目标系统并执行在包括具有多个核(CPU)的处理器(一个或多个)的主机硬件平台上。VM中的虚拟处理器118可以被仿真或与主机硬件平台102的处理器104相同。目标硬件平台的一个或多个计算机程序122可在VM内执行。为了提高计算机程序在VM内执行的性能,可被识别出可并行运行并仍然获得系统的适当操作的任务。在一些示例中,后台任务可与前台任务并行执行。对于图7所示的多个前台任务,识别可并行运行的任务可能需要更多的努力。如果任务具有相同的优先级,可以是这样的情况:任务可以与仍然适当执行的系统并行运行。此外,在抢占式多任务系统诸如图7所示的,可以是这样的情况:较低优先级的任务与其他任务并行运行,因为这些较低优先级的任务可以在任何时间被更高优先级的任务抢占(并行执行的一种形式),并且较低优先级的任务可以容忍与较高优先级的任务并行运行。
在图9-14所示的示例中,任务Task32Hz、Task16Hz和Task1Hz可作为可并行运行的任务已经被识别出。一旦已经识别出并行执行的任务,对于每个已识别的任务,用于可执行的计算机程序122的一个或多个符号表可以针对任务的功能的入口点的符号名称来解析,并且该任务的指令指针可以被识别。根据任务功能的性质,附加存根代码可以被创建以处理任务的基本控制功能,但这在许多例子中不是必要的。
当系统在VM 114启动时,识别为并行执行的任务(Task32Hz、Task16Hz和Task1Hz)可以在主机硬件平台的处理器104的附加核104b上开始,与其他任务可在其上执行的核104a分离。在图9-14中,附加核中的单独一个核可执行每个已标识的任务,尽管在一些并行调度中,按并行运行的任务献出附加核可能不是必要的。在这些示例中,核0可用于除已识别的任务之外的任务,并且三个附加核1、2和3可被用于并行执行的已识别的任务。
在执行除已识别的任务以外的任务中,仍然可以遇到已识别的任务,如图10和图11所示的,图10和图11是关于图9的UML序列图。在一些示例中,当遇到并调度执行正在并行运行的任务时,方法存根可以反而被执行。这是可能发生的,因为并行运行的任务在实际的或仿真的处理器上运行之前,其指令指针可在虚拟化层112中被看到。如果方法存根没有要求控制功能,那么随后虚拟处理器118可简单地将控制返回到指示任务已完成的调度器。
在一些示例中,OS对象诸如信号量可以留在现在正执行在主机硬件平台102的处理器104的附加核104b上的任务中。这些OS对象可以保证这些任务以适当的频率执行并且可以未修正地被使用,因为在虚拟化层112中执行的所有任务可以共享相同的虚拟化平台116,该虚拟化平台116包括可以被用于实现OS对象的存储器。但是应当理解的是,控制并行任务的执行的其他方法也可以被使用。还应当注意的是,OS对象可以在虚拟化层中被拦截并被重定向或者被重新解释(如果有必要),以使用虚拟化层中的并行化创建运行系统。
图9示出虚拟化层112中的并行化的性能增益,其中可以看出,被调度在第一帧(帧0)中的所有任务现在在第三帧(帧2)中已完成执行。相比于图7中的计算机程序122的正常执行,这可以表示执行完成的性能提升,在图7中,被调度在第一帧中的所有任务未完成其执行,直到第六帧(帧5)为止。
在图10中,任务的执行顺序与图8相比已经显著地改变。尤其是,任务的抢占可在时间的不同点处发生,相比它们另外在实际目标系统中发生。图11示出具有在明显时间的合适点处发生的抢占的并行化。实现具有适当抢占的并行化可以包括对系统中的所有任务的附加时序分析,以了解最坏情况或平均执行时间,从而创建任务的适当的表观时间的调度。虚拟化层112还可以包括附加表观时间调度的计算机程序,其具有技术例如冻结虚拟处理器执行和可适合于实现调度的那些受限制的执行示例。
并行运行的任务在图11中可能不会遇到抢占,但系统的分析再次可被完成,以甚至造成抢占并行任务。用于系统中适当抢占的时序分析可以是复杂的,但不可能在许多系统都是感兴趣的。正常操作仍然可以在与物理目标系统相同的没有抢占的许多情况下实现。抢占时序通常在物理目标系统上不是相同的,因为在物理硬件中可存在时序变化,这种时序变化导致不同的抢占时间,使得相同计算机程序运行在不同的硬件上。计算机程序常常容忍不同的抢占时间。
如图12-14所示,在示例实施例的又一个方面,虚拟化层112中的任务并行化的可以利用从虚拟化系统的处理中移除空闲时间以甚至进一步提高系统的性能增益的技术来执行。这可能是在一些实例中考虑到的特别情况,并行化可以增加在系统中的可移除的空闲时间量。
在图12中示出通过这两种技术的组合的这些大的性能增益。当将图12中的执行与图9中的执行进行比较时,可以看出,几乎16帧在相同的时间量(例如,来自定时器108)中完成,而在图9中4帧完成。这可表示计算机程序122在VM 114中的执行具有几乎四倍的性能提高。并行任务的选择可以对利用该方法能够实现多少的性能提高具有很大的影响。
在图12中,空闲时间可以在核0(例如,核104a)上移除,而不考虑其如何影响并行运行在其他核1、2和3(附加核104b)上的已识别的任务的执行。根据系统的性质,忽略在核0移除空闲时间对现并行任务的影响可能不会出现任何问题。但是如图12所提到的,对核0上空闲时间的移除可使得Task16Hz被调度在以前的Task16Hz已完成之前在帧8中运行。Task16Hz的调度即使在以前的Task16Hz执行未完成时也不可能构成问题,虽然Task16Hz直到以前的执行完成才可执行。
图13和图14示出用于移除空闲时间的两个示例方法。在图13中,一种示例技术着眼于所有核的执行并等待每个核进入空闲状态,在这之后,表观时间可前进到下一帧中断以开始下一帧。但在一些示例中,在现有相同任务完成之前可不再可能调度任务来运行。这种方法在针对总是在空闲时间运行的任务的情况中可能面临困难,在这种情况下,系统不可能进入空闲时间。
但是,这些情况可以通过多种不同的方式来解决,例如,通过识别这些任务并限制它们的执行,以确保进入空闲时间状态。
在图14中,用于移除空闲时间的另一示例技术包括确定表观时间是否可以前进到下一个帧开始(移除空闲时间)。针对此的适当方法的一个示例可以是监视所有感兴趣的任务,尤其是现在并行运行的任务,并确保现有任务在允许下一帧开始之前完成。适当方法的另一个示例可以是对所有任务执行最坏情况的时序分析,分析的结果可用于将附件的调度逻辑添加到表观时间前进。根据时序分析,识别该Task16Hz以在以前的Task16Hz在帧8和其他未来帧中已完成之前被调度执行可以是可能的。附加逻辑可以在虚拟化层112中被添加,以寻找在系统的执行中的这种情况。
如上所示,程序代码指令可以被存储在存储器106(计算机可读存储介质),并且由处理器104执行,以实现本文描述的计算机系统100的功能。如将要认识的是,任何合适的程序代码指令可以从存储器被加载到计算机系统,以产生特定的机器,使得特定机器成为用于实现本文所指定的功能的装置。这些程序代码指令也可以被存储在存储器中,其可以指导计算机系统或处理器以特定的方式运行,从而产生特定的机器或制造的特定物品。存储在存储器中的指令可产生制造的物品,其中,该制造的物品成为用于实现在此描述的功能的装置。程序代码指令可以从存储器中检索且被加载到计算机系统或处理器,以配置计算机系统或处理器执行将在计算机系统或处理器上或由计算机系统或处理器执行的操作。
程序代码指令的检索、加载和执行可以被顺序执行,使得一次一个指令被检索、加载和执行。在一些示例实施例中,检索、装载和/或执行可以被并行执行,使得多个指令一起被检索、加载和/或执行。程序代码指令的执行可以产生计算机实现的过程,使得由计算机系统100或处理器104执行的指令提供用于实现在此描述的功能的操作。
处理器104对指令的执行或存储器106中指令的存储支持操作的组合以便执行特定功能。还应当理解的是,一个或多个功能和功能的组合可以由执行特定功能或专用硬件和程序代码指令的组合的专用的基于硬件的计算机系统和/或处理器来实现。
本领域技术人员将想到在此所阐述的许多修改和其它实施例,关于该修改和其它实施例的这些公开具有在前面描述和相关附图中所呈现的教导的益处。因此,应理解的是,本公开不限于所公开的具体实施例,并且修改和其他实施例旨在被包括在所附权利要求的范围之内。而且,尽管前述描述和相关附图在元件和/或功能的某些示例性组合的环境中描述示例实施例,应该认识到,在不偏离所附权利要求的范围的情况下,元件和/或功能的不同组合可以由替代实施例来提供。在这方面,例如,不同于以上明确描述的那些的元件和/或功能也被认为是可以在一些所附权利要求中阐述。尽管本文采用特定术语,但它们仅用于一般的和描述性的意义,而不是用于限制的目的。
Claims (8)
1.一种用于提供虚拟化服务的计算机系统(100),所述计算机系统(100)包括一个或多个中央处理器即CPU(104a)、一个或多个附加CPU(104b)以及存储计算机可读程序代码部分的存储器(106),所述计算机可读程序代码部分响应于通过所述一个或多个CPU(104a)和一个或多个附加CPU(104b)的执行,使得所述计算机系统(100)至少:
识别可执行为多个任务的一个或多个计算机程序(122),所述识别包括从所述多个任务中识别出一个或多个前台任务和不是所述前台任务的一个或多个后台任务,所述一个或多个后台任务能够与所述一个或多个前台任务并行;和
通过在虚拟机(114)中的一个或多个虚拟CPU(118a)执行所述一个或多个计算机程序(122),所述虚拟机(114)被限定以提供用于目标硬件平台的虚拟化的虚拟化平台(116),所述执行包括使得至少:
通过所述虚拟机(114)中的所述一个或多个虚拟CPU(118a)执行已识别的一个或多个前台任务,所述虚拟机(114)被执行在所述计算机系统(100)的所述一个或多个CPU(104a)上;和
在所述计算机系统(100)的所述一个或多个附加CPU(104b)上执行已识别的一个或多个后台任务,使得所述已识别的一个或多个后台任务由所述计算机系统(100)的所述一个或多个附加CPU(104b)执行,所述已识别的一个或多个后台任务的执行至少部分地并行于通过所述虚拟机(114)中的所述一个或多个虚拟CPU(118a)对所述一个或多个前台任务的执行,
其中所述目标硬件平台包括用于执行所述多个任务的多个CPU,所述多个CPU的数量不大于在其上执行所述一个或多个前台任务的所述计算机系统(100)的所述CPU(104a)的数量,并且其中
所述多个任务在由表观时间基准(120)跟踪的表观时间的相应点处被调度执行,并且其中在执行所述一个或多个前台任务期间,使得所述计算机系统(100)进一步至少:
在所述多个任务的所有前台任务已经被执行所在的表观时间处检测当前点,或在所述一个或多个虚拟CPU(118a)是空闲所在的表观时间处检测当前点;并响应于此,
使用大于所述表观时间基准(120)跟踪所述表观时间所在的频率的频率将所述表观时间从所述当前点推进到随后的点。
2.根据权利要求1所述的计算机系统(100),其中所述一个或多个前台任务是被调度用于以给定频率重复执行的任务,并且所述一个或多个后台任务是被调度以在处理器空闲时被执行的任务。
3.根据权利要求1所述的计算机系统(100),其中所述多个任务在时间的相应点处被调度执行,使得所述计算机系统(100)在所述已识别的一个或多个后台任务被调度执行所在的时间的所述相应点之前在所述一个或多个附加CPU(104b)上执行所述已识别的一个或多个后台任务。
4.根据权利要求3所述的计算机系统(100),其中使得所述计算机系统(100)执行所述一个或多个前台任务包括使得在所述已识别的一个或多个后台任务被调度执行所在的时间的所述相应点的每个点处,通过所述一个或多个虚拟CPU(118a)执行方法存根,或立即移动到由所述一个或多个虚拟CPU(118a)执行的所述多个任务的下一调度的任务。
5.一种提供虚拟化服务的方法,所述方法包括:
识别(602)可执行为多个任务的一个或多个计算机程序(122),识别所述一个或多个计算机程序(122)包括从所述多个任务识别出一个或多个前台任务和不是所述前台任务的一个或多个后台任务,所述一个或多个后台任务能够与所述一个或多个前台任务并行;和
通过在虚拟机(114)中的一个或多个虚拟中央处理器(CPU)执行(604)所述一个或多个计算机程序(122),所述虚拟机(114)被执行在主机硬件平台(102)上并且被限定以提供用于虚拟化目标硬件平台的虚拟化平台(116),执行所述一个或多个计算机程序(122)包括:
通过所述虚拟机(114)中的所述一个或多个虚拟CPU(118a)执行(604a)已识别的一个或多个前台任务,所述虚拟机(114)被执行在所述主机硬件平台(102)的一个或多个CPU(104a)上;和
在所述主机硬件平台(102)的一个或多个附加CPU(104b)上执行(604b)已识别的一个或多个后台任务,使得所述已识别的一个或多个后台任务由所述主机硬件平台(102)的所述一个或多个附加CPU(104b)来执行,所述已识别的一个或多个后台任务的执行至少部分地并行于通过所述虚拟机(114)中的所述一个或多个虚拟CPU(118a)对所述一个或多个前台任务的执行,
其中所述目标硬件平台包括用于执行所述多个任务的多个CPU,所述多个CPU的数量不大于在其上执行所述前台任务的所述主机硬件平台(102)上的所述CPU(104a)的数量,并且其中
所述多个任务在由表观时间基准(120)跟踪的表观时间的相应点处被调度执行,并且其中在执行所述一个或多个前台任务期间,所述方法进一步包括:
在所述多个任务的所有前台任务已经被执行所在的表观时间处检测当前点,或在所述一个或多个虚拟CPU(118a)是空闲的所在的表观时间处检测当前点;并响应于此,
使用大于所述表观时间基准(120)跟踪所述表观时间所在的频率的频率将所述表观时间从所述当前点推进到随后的点。
6.根据权利要求5所述的方法,其中所述一个或多个前台任务是被调度用于以给定频率重复执行的任务,并且所述一个或多个后台任务是被调度以在处理器空闲时被执行的任务。
7.根据权利要求5所述的方法,其中所述多个任务在时间的相应点处被调度执行,在所述已识别的一个或多个后台任务被调度执行所在的时间的相应点之前在所述一个或多个附加CPU(104b)上执行所述已识别的一个或多个后台任务。
8.根据权利要求7所述的方法,其中执行所述一个或多个前台任务包括在所述已识别的一个或多个后台任务被调度执行所在的时间的相应点的每个点处,通过所述一个或多个虚拟CPU(118a)执行方法存根,或立即移动到由所述一个或多个虚拟CPU(118a)执行的所述多个任务的下一调度的任务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/492,108 US10108445B2 (en) | 2014-09-22 | 2014-09-22 | Parallelization in virtual machine operation |
US14/492,108 | 2014-09-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105446795A CN105446795A (zh) | 2016-03-30 |
CN105446795B true CN105446795B (zh) | 2021-03-16 |
Family
ID=53879330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510606615.3A Active CN105446795B (zh) | 2014-09-22 | 2015-09-22 | 虚拟机操作中的并行化 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10108445B2 (zh) |
EP (1) | EP3007065B1 (zh) |
CN (1) | CN105446795B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6481585B2 (ja) * | 2015-10-20 | 2019-03-13 | 株式会社デンソー | 並列化方法、並列化ツール、車載装置 |
US10409632B2 (en) * | 2017-03-31 | 2019-09-10 | The Boeing Company | Emulation of hardware components based on interrupt design |
TWI627521B (zh) * | 2017-06-07 | 2018-06-21 | 財團法人工業技術研究院 | 時序估算方法與模擬裝置 |
US10372479B2 (en) * | 2017-08-09 | 2019-08-06 | International Business Machines Corporation | Scheduling framework for tightly coupled jobs |
US11029985B2 (en) * | 2018-01-19 | 2021-06-08 | Ge Aviation Systems Llc | Processor virtualization in unmanned vehicles |
US11227052B2 (en) | 2019-05-21 | 2022-01-18 | The Boeing Company | Malware detection with dynamic operating-system-level containerization |
US11010195B2 (en) | 2019-07-19 | 2021-05-18 | International Business Machines Corporation | K-tier architecture scheduling |
US11874761B2 (en) | 2019-12-17 | 2024-01-16 | The Boeing Company | Apparatus and method to assign threads to a plurality of processor cores for virtualization of a hardware configuration |
CA3146521A1 (en) * | 2021-02-02 | 2022-08-02 | The Boeing Company | System and method of timekeeping for a virtual machine having multiple virtual processing cores |
US11580060B2 (en) * | 2021-02-13 | 2023-02-14 | Drako Motors, Inc. | Policy driven latency control applied to a vehicular real time network apparatus |
CN114168271B (zh) * | 2021-12-29 | 2022-11-11 | 科东(广州)软件科技有限公司 | 一种任务调度方法、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617086A (zh) * | 2013-11-20 | 2014-03-05 | 东软集团股份有限公司 | 一种并行计算方法及系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7251815B2 (en) * | 2003-04-29 | 2007-07-31 | International Business Machines Corporation | Multiple virtual machines sharing processor and work queue in memory having program/dispatch functions for assigning and accessing work items while the virtual machine was not idle |
US7475002B1 (en) | 2004-02-18 | 2009-01-06 | Vmware, Inc. | Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system |
US7802073B1 (en) * | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US7941803B2 (en) * | 2007-01-15 | 2011-05-10 | International Business Machines Corporation | Controlling an operational mode for a logical partition on a computing system |
US8615384B2 (en) | 2007-10-31 | 2013-12-24 | The Boeing Company | Method and apparatus for simulating aircraft data processing systems |
US8230428B2 (en) * | 2008-02-20 | 2012-07-24 | International Business Machines Corporation | Data management job planning and scheduling with finish time guarantee |
US8522237B2 (en) | 2008-04-09 | 2013-08-27 | The Boeing Company | Virtualizing embedded systems |
US8650570B2 (en) | 2008-06-02 | 2014-02-11 | Microsoft Corporation | Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources |
US9244732B2 (en) * | 2009-08-28 | 2016-01-26 | Vmware, Inc. | Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution |
US8752058B1 (en) | 2010-05-11 | 2014-06-10 | Vmware, Inc. | Implicit co-scheduling of CPUs |
EP2402858B1 (en) * | 2010-06-29 | 2014-03-05 | Samsung SDS | Client Hypervisor-Based Terminal Device and Operating Method Thereof |
EP2721489B1 (en) | 2011-06-16 | 2015-09-23 | Argyle Data, Inc. | Software virtual machine for acceleration of transactional data processing |
US8966478B2 (en) | 2011-06-28 | 2015-02-24 | The Boeing Company | Methods and systems for executing software applications using hardware abstraction |
US8762990B2 (en) | 2011-07-25 | 2014-06-24 | The Boeing Company | Virtual machines for aircraft network data processing systems |
US9354934B2 (en) * | 2012-01-05 | 2016-05-31 | International Business Machines Corporation | Partitioned shared processor interrupt-intensive task segregator |
-
2014
- 2014-09-22 US US14/492,108 patent/US10108445B2/en active Active
-
2015
- 2015-07-31 EP EP15179411.2A patent/EP3007065B1/en active Active
- 2015-09-22 CN CN201510606615.3A patent/CN105446795B/zh active Active
-
2018
- 2018-09-19 US US16/135,155 patent/US10289442B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617086A (zh) * | 2013-11-20 | 2014-03-05 | 东软集团股份有限公司 | 一种并行计算方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US10289442B1 (en) | 2019-05-14 |
EP3007065A2 (en) | 2016-04-13 |
EP3007065B1 (en) | 2020-03-11 |
EP3007065A3 (en) | 2016-07-27 |
US10108445B2 (en) | 2018-10-23 |
US20160085572A1 (en) | 2016-03-24 |
CN105446795A (zh) | 2016-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105446795B (zh) | 虚拟机操作中的并行化 | |
EP3103014B1 (en) | Removal of idle time in virtual machine operation | |
US8843910B1 (en) | Identifying a set of functionally distinct reorderings in a multithreaded program | |
EP3866007B1 (en) | Intelligent gpu scheduling in a virtualization environment | |
US8170859B1 (en) | Methods, apparatuses and computer program products for simulating arbitrary unmodified code | |
EP3607441B1 (en) | Virtual machine execution tracing | |
US8612937B2 (en) | Synchronously debugging a software program using a plurality of virtual machines | |
US20120192147A1 (en) | Develop real time software without an RTOS | |
US20150212835A1 (en) | Automatic identification of interesting interleavings in a multithreaded program | |
CN106250217A (zh) | 一种多虚拟处理器间的同步调度方法及其调度系统 | |
CN107003828B (zh) | 图形指令的仪器化 | |
Razaghi et al. | Host-compiled multicore RTOS simulator for embedded real-time software development | |
Fournier et al. | Analyzing blocking to debug performance problems on multi-core systems | |
Murillo et al. | Synchronization for hybrid MPSoC full-system simulation | |
CN109840137B (zh) | 一种跨核调度方法和装置 | |
Rajotte et al. | Real‐Time Linux Analysis Using Low‐Impact Tracer | |
Ko et al. | Hardware-in-the-loop simulation for CPU/GPU heterogeneous platforms | |
KR20130048504A (ko) | 임계성에 기초한 파티션 스케쥴링 장치 및 방법 | |
US8893092B1 (en) | Using hints to direct the exploration of interleavings in a multithreaded program | |
US8914274B1 (en) | Method and system for instruction set simulation with concurrent attachment of multiple debuggers | |
Yoon et al. | Research trends of mixed-criticality system | |
Hayat | Evaluating Parallelization Potential for a SystemC/TLM-based Virtual Platform | |
Onarheim | Using the Linux Kernel PREEMPT_RT Patch in Mixed-Criticality Systems | |
Cunningham | Making a Real-Time Operating System for the Raspberry Pi 2B | |
Zhang et al. | Panappticon: Event-Based Tracing to Optimize Mobile Application and Platform Performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |