虚拟机操作中的并行化的制作方法_3

文档序号:9672968阅读:来源:国知局
程序122可针对可以或可以不包含多个核的给定目标硬件平台来设计。考虑例如针对具有单核处理器的目标硬件平台而设计的计算机程序。这些计算机程序仍然可以包括多个任务、进程、线程等。这些多个任务可以被使用,因为计算机程序当等待资源变得可用和/或等待人机交互发生时通常拖延(stall)。在单个线程的执行实例中,目标硬件平台可以拖延等待合适的事件,即使当其他有用的工作可以出现时。尽管计算机程序可作为多个任务来执行,但是单核处理器可仅能够一次执行一个任务。
[0044]在另一个示例中,计算机程序122可以被设计为完成具有任务优先权的多个任务,其中某些任务可以具有比其他任务更高的优先权。为了执行对目标硬件平台的成功操作至关重要的任务,这些较高优先级任务可以抢占较低优先级的任务。再一次地,即使存在多个任务,但是单核处理器可仅能够一次执行一个任务。因此,单核处理器可能无法实现在多个核中的并行执行。
[0045]现在考虑针对运行在VM 114上的单核处理器而设计的计算机程序122的情况。在其中VM复制目标硬件平台的实例中,VM也可以只具有虚拟单核处理器。然而,虚拟化不对物理硬件具有相同的限制。虚拟化带来实现一种新类型的并行化的可能性,这种并行化在非虚拟化目标硬件平台中是不可能的。如上所述和以下更全面描述的,随后本公开的示例实施例涉及在虚拟机操作中的并行化。
[0046]返回到图1,并附加参考图2,按照本公开的示例实施例,虚拟化层112可以识别可执行多个任务206的一个或多个计算机程序122,并且可以识别来自多个任务的一个或多个任务。对于此,虚拟化层可以分析一个或多个计算机程序中的一个或多个符号表,以识别可以被并行化的任务。随后,虚拟化层可以通过在计算机系统100的核104a上执行的VM114中的虚拟核118a使得除识别出的任务以外的任务执行。在一些示例中,可被并行执行的那些任务的分析可由用户手动执行,并被确定虚拟化层。
[0047]至少部分地与在核104a上的任务执行并行,虚拟化层可使得已识别的任务在计算机系统100的附加核104b上执行。该并行化可实现运行在VM 144内的计算机程序122的性能提高。在一些示例中,已识别的任务可以由执行在计算机系统的附加核104b上的VM中的附加虚拟核118b来执行。在这些示例中,虽然附加虚拟核可对虚拟化层是已知的,但对运行在VM上的0S 124是隐藏的。
[0048]虚拟化层112在已识别的任务被执行所在的时间的相应点之前可使已识别的任务执行。在这方面,运行在VM 114上的0S 124或更特别是其调度器可通过虚拟核118a如其正常一样与执行的主线程一起调度任务的执行。并且当任务经历已在虚拟化层中被并行化时,该任务可已经与主线程的执行一起被并行执行,因此,不必在时间的其预定点处被执行。在一些示例中,方法存根可由虚拟核在已识别的任务被调度执行所在的时间处的相应点中的每个点处执行。或者在一些示例中,执行的任务可以立即移动到由虚拟核执行的下一个调度的任务。
[0049]可被并行化的任务可以通过多种不同的方式中的任何方式来识别。在一些示例中,其中计算机程序122的任务包括前台任务和后台任务,虚拟化层112可以识别用于执行在主机硬件平台102的附加核104b上的一个或多个后台任务,其至少部分并行于在主机硬件平台的核104a上的一个或多个前台任务。
[0050]在一些示例中,甚至在计算机程序122被设计以运行在具有单核处理器的目标硬件平台上的实例中,各种任务可以并行运行,例如,在将任务设计为具有任务优先权的实例中。在这些示例中,较低优先级的任务和后台任务可以在任何时间由具有较高优先级的任务抢占。因为是这样的话,将这些任务的一些或全部移动到主机硬件平台102的附加核104b下可是可能的。在这些示例中的虚拟化层112可以分析任务之间的依赖关系,以确定哪些任务可彼此并行运行,或者再一次这种分析可以由用户手动执行,和被识别到虚拟化层的任务。在基于设计的前台/后台中,后台任务可以经常与前台任务并行运行。
[0051]根据本公开的示例实施例的又一个方面,在虚拟处理器118的核118a对除已识别的任务之外的任务206的执行期间,VM 114的部件之一(例如,虚拟处理器)可以在被调度以给定频率(前台任务)重复执行的全部任务已经被执行所在的表观时间处在任何特定帧202期间检测当前点,或在虚拟处理器是空闲(例如,在后台208中)所在的表观时间处检测当前点。并且作为响应,可以使用大于虚拟定时器来跟踪表观时间所在的频率的频率将由虚拟定时器120跟踪的表观时间从当前点推进到随后的点。在一些示例中,虚拟定时器本身可以使表观时间前进。在其它示例中,VM或一个或多个的VM的其它部件可以使得虚拟定时器使表观时间前进。关于该进一步的方面的进一步的信息在以下并且在以上引用的和并入的’ 206申请案中来提供。
[0052]图3、4和5示出包括目标硬件平台302的目标系统300和用于对目标系统提供虚拟化服务的不具有和具有本公开的示例实施例的并行化的计算机系统400,500。如图3所示,目标硬件平台可以包括由单一核304组成的处理器,该处理器被配置成执行作为前台任务306a和后台任务306b的一个或多个计算机程序。该核可被配置为执行在0S中或在没有0S的所谓裸机的一些示例中的计算机程序。在目标系统中,前台任务可以在每一帧中执行,之后跟随后台任务,直到下一帧准备开始。
[0053]在图4和图5中,计算机系统400、500可以被配置以虚拟化目标系统300的目标硬件平台302,并在适当的VM中执行计算机程序和其前台任务306a和后台任务306b。如图4所示,单个虚拟核404可由VM 406提供以虚拟化目标硬件平台的单核304。VM可操作在主机硬件平台408上,主机硬件平台408包括由多个核组成的一个或多处理器,多个核中的两个被示出为核0 410a和核1 410b (虽然多于两个核是可能的)。VM可以被执行在主机硬件平台的任何核上,或者在一些示例中,VM可以被锁定到特定的核诸如以类似的方式。
[0054]图5的计算机系统500类似于图4的计算机系统400,但是根据本公开的示例实施例,在图5中的前台任务306a和后台任务306b可以至少部分并行地被执行。在图5中,单个虚拟核404(显示为虚拟核0)可与附加虚拟核504(显示为虚拟核1) 一起由VM 506提供。
[0055]同样在图4中,如图所示,虚拟核0 404可以被提供以虚拟化目标硬件平台302的单核304,但也可以更具体地执行前台任务306a。另外,虚拟核1 504可以被提供以至少部分地与前台任务并行执行后台任务306b。虽然这种虚拟核1与虚拟核0可操作在相同VM506中,但虚拟核1可对运行在VM上的0S是隐藏的。虚拟化层可以知道虚拟核1,并且虚拟核1可以被调度以运行在主机硬件平台408的附加下层核410a、410b中。
[0056]可以使用类似的将虚拟核1锁定到附加核也是可能的。
[0057]在一些示例中,并行化可以通过识别计算机程序的符号表中的背景任务306b来实现。前台任务306a的执行可以在虚拟核Ο 404上开始,并且后台任务的执行可在虚拟核心1 504上开始。当虚拟核0在前台任务的执行完成时遇到后台任务的执行的开始时,虚拟核0可以执行方法存根或立即返回对前台任务的控制。这可以允许前台和后台进程并行运行。
[0058]图6根据本公开的示例方式示出提供虚拟化服务的方法600。如方框602所示,该方法可以包括识别作为多个任务可执行的一个或多个计算机程序,其包括从多个任务识别一个或多个任务。如604所示,该方法还可以包括由虚拟机中的一个或多个虚拟中央处理器(CPU)执行计算机程序,该虚拟机被执行在主机硬件平台上并被限定以提供用于虚拟化目标硬件平台的虚拟化平台。如方框604a所示,执行计算机程序可以包括执行除通过执行在主机硬件平台的一个或多个CPU上的虚拟机中的虚拟CPU(所识别的)任务以外的多个任务。并且执行计算机程序可以包括执行在主机硬件平台的一个或多个附加CPU上的任务,该多个任务至少部分与除方框604b所示的任务以外的多个任务并行执行。如上所述,目标硬件平台可以包括用于执行多个任务的一个或多个CPU,所述一个或多个CPU在数量上不大于主机硬件平台的CPU,除该任务以外的多个任务被执行在主机硬件平台上的CPU上。
[0059]为了进一步说明不例实施例如何可提供VM 114的性能提尚,考虑图7_14所不的示例。在这些示例中,在VM中执行的计算机程序122可以包括被调度以执行多种速率的7个前台任务,以及一个或多个后台任务。这些前台任务按照调度优先级可以包括如下:Task64Hz (最高优先级),Task32Hz,Taskl6Hz,Task8Hz,Task4Hz,Task2Hz 和 TasklHz (最低优先级)。在这个设计中,优先次序和OS任务抢占可用于实现程序的期望的活动顺序,并且定时器中断可以通过64Hz速率开始每一帧。
[0060]在这些示例中,所有的任务可以被调度以在第一帧(帧0)中执行。通过任务抢占,每帧可以包括最高优先级的任务(Task64Hz),单独或结合于低优先级的前台任务和/或后台任务。图7示出目标硬件平台上的任务的执行,该目标硬件平台可以由虚拟化平台116在VM 114上虚拟化。图7和图7-14的示例中的其他可示出前台任务,并示出后台,尽管没有单独示出在后台(背景任务)中所执行的任务-参见例如图2。
[0061]图8示出对应于图7的统一建模语言(UML)的序列图。在UML序列图中,Execute ()和preemptO可以代表“调用”。0S或者更特别的是其调度器通常不使用Execute ()和preempt ()调用与其他任务通信。在典型的系统中,定时器108或其他合适的时间基准可以被用来引起中断发生。在本示例中,定时器可以被配置为每秒中断64次,以允许Task64Hz以64Hz的速率执行。在一些示例中,中断处理程序或中断服务例程(ISR)可用于释放0S对象诸如信号量(semaphore),以允许执行适当的任务。在其它示例中,ISR可释放信号量到在每帧中执行的最高优先级的任务(Task64Hz),并且该任务可确定适当的任务,从而释放0S对象以允许它们的执行。这些任务都可是有效的并在0S对象上挂起,并且直到任务收到0
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1