CN101460923A - 用于在m核处理器上操作n核应用程序的虚拟机 - Google Patents
用于在m核处理器上操作n核应用程序的虚拟机 Download PDFInfo
- Publication number
- CN101460923A CN101460923A CNA2007800203146A CN200780020314A CN101460923A CN 101460923 A CN101460923 A CN 101460923A CN A2007800203146 A CNA2007800203146 A CN A2007800203146A CN 200780020314 A CN200780020314 A CN 200780020314A CN 101460923 A CN101460923 A CN 101460923A
- Authority
- CN
- China
- Prior art keywords
- nuclear
- processor
- virtual machine
- application program
- working portion
- 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
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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
-
- 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/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; 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)
- Multi Processors (AREA)
- Microcomputers (AREA)
Abstract
虚拟机在M核处理器上被实例化,并且N核应用程序在该虚拟机上被实例化,以使得该虚拟机对该N核应用程序仿真N核处理器。由此,该虚拟机隐藏了该应用程序所期望的N个核与可从该处理器获得的M个核之间的差别。
Description
技术领域
本发明涉及在计算设备的多核处理器上操作应用程序。具体而言,本发明涉及在具有M核处理器的计算设备上操作为N核处理器设计的应用程序。更具体而言,本发明设计在该计算设备上使用虚拟机以便在该M核处理器上操作该N核应用程序。
发明背景
如可以理解的,多核处理器是基于多核处理器体系结构来设计的,以便在单个计算设备中包括两个或多个基于处理器的计算引擎,即“核”。通常,但不必然地,这一多核处理器被安装到计算设备的单个处理器插槽中,但是在该计算设备上操作的操作系统将该多核处理器的每个执行核视为是具有所有相关联的执行资源的分立的逻辑处理器。
通常,多核处理器及其架构旨在实现提升性能的策略,该策略通过将由典型的单核处理器执行的工作分成各分立部分并在特定核上执行每个部分,由此在给定处理器时钟周期内执行更多的工作来实现。为了能够充分利用多核处理器,于是在该处理器上运行的特定应用程序必须被构造成在可用的核上分配应用程序工作部分,即“线程”。
值得注意的是,多核处理器能够执行来自一个应用程序或来自多个应用程序的完全分开的代码线程,且所有的执行都是并行的。例如,具有两个核的这一多核处理器能够并行地在第一核上执行来自应用程序的线程并且在第二核上执行来自操作系统的线程,或者在第一和第二核上执行来自该应用程序的并行线程。类似地,具有更多数量的核的这一多核处理器能够并行执行所有来自多个应用程序和操作系统的线程的多种变型。如现在应该理解的,有了多个核上的这样的并行处理,多核处理器在计算设备上提供真正的并行多任务处理,而非顺序的伪多任务处理。这一真正的并行多任务处理可包括例如家庭用户在录制视频源的同时编辑图片,或者办公室用户在运行环境监视应用程序的同时从服务器复制数据。
有了真正的并行多任务处理,多核处理器可用于改进其中用户活动地在两个或多应用程序中工作,或者后台应用程序相互之间并与用户应用程序竞争处理时间的任何计算设备环境中的响应性。由此,可在计算设备上执行多个处理器密集型任务,而具有更少的诸如冻结、过多时间滞后、自发停止、不规则性能、音频和/或视频失真等问题。
然而,注意,在特定应用程序被构造成使用计算设备上的多核处理器的一个数量N个核,而这一多核处理器实际上具有另一数量M个核的情况下出现了一个问题。在N比M大以使得M核处理器所具有的核比该N核应用程序被构造成使用的核少的一种情况下,该N核应用程序的工作极有可能必须以并非最初预期的方式被分配给该M核处理器的核。例如,如果应用程序是期望4个核的4核应用程序并且处理器实际上具有2个核,则最初由该应用程序分成4部分以便由4个核来处理的工作现在必须以某种方式由该计算设备的操作系统等,或许通过将这些部分重复,来分配给这两个可用的核。如可以理解的,这样的重新分配可能在特设的基础上,并且在不了解要采用的优选方法(如果的确存在这一方法)的情况下由该操作系统等来执行。因此,这样的重新非配可能导致低效并且可能在某些情况下甚至导致错误或甚至是致命错误。
在M比N大以使得该M核处理器所具有的核比该N核应用程序被构造成使用的核多的另一种情况下,该M核处理器,即该处理器的M个核中的至少某一些即使可能是可用的也不被使用。例如,如果该应用程序是期望4个核的4核应用程序并且该处理器实际上具有8个核,则最初由该应用程序分成4部分以便由4个核处理的工作本可进一步被分成8个部分,而现在只由该8核处理器中的4个核来处理,另外4个核至少对于该应用程序是空闲的。如可以理解的,这些空闲的核表示浪费的容量,并且更广泛而言浪费了更快地和/或更高效地操作该应用程序的机会。
因此,需要一种可以用于实际上在M核处理器上高效地操作被构造成在N核处理器上操作的N核应用程序的系统,其中M大于或小于N。具体而言,需要这样一种系统,其中该N核应用程序即使实际上在M核处理器上,也犹如在N核处理器上那样操作。更具体而言,需要这样一种系统,其中该N核应用程序在仿真N核处理器并且以高效的方式将该应用程序的工作重新分配给该M核处理器的虚拟机上操作。
发明概述
上述需求由其中计算设备具有多核处理器、多核应用程序和虚拟机的本发明来满足。该多核处理器具有一特定数量M个执行核,其中每一个核都是能够被单独分配工作的分立的逻辑处理实体,并且该多核应用程序在该计算设备上被实例化并且期望该M核处理器上存在一特定数量N个执行核以使该N核应用程序分配一特定数量N个应用程序工作部分。该虚拟机在该M核处理器上被实例化,并且该N核应用程序在该虚拟机上被实例化以使该虚拟机对该N核应用程序仿真N核处理器。由此,该虚拟机隐藏了该应用程序所期望的N个核与可从该处理器获得的M个核之间的差别。
附图简述
以上概述以及以下本发明实施例的详细描述在结合附图阅读时能够被更好地理解。出于说明本发明的目的,在附图中示出目前优选的实施例。然而,如应理解的,本发明不限于所示的精确安排和手段。在附图中:
图1是表示其中可结合本发明和/或其各部分的各方面的通用计算机系统的框图;
图2和3是示出在具有4核处理器的计算设备上操作的8核应用程序(图2)和2核应用程序(图3)的框图;
图4是示出根据本发明的一个实施例的通过仿真N核应用程序的虚拟机在具有M核处理器的计算设备上操作的N核应用程序的框图;以及
图5、6和7是示出根据本发明的一个实施例的图4的基于交互(图5)、工作负载(图6)和功能(图7)来将各工作部分分配给处理器的各核的虚拟机的框图。
发明详述
计算机环境
图1及以下讨论旨在提供对适于在其中实现本发明的合适的计算环境的简要概括描述。尽管并非所需,但本发明在诸如程序模块等由诸如客户机工作站或服务器等计算机执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。此外,应该理解,本发明和/或其各部分可用其它计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、网络PC、小型机、大型计算机等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。
如图1所示,示例性通用计算系统包括常规个人计算机120等,该计算机包括处理单元121、系统存储器122和将包括系统存储器的各种系统组件耦合到处理单元121的系统总线123。系统总线123可以是几种类型的总线结构中的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。系统存储器包括只读存储器(ROM)124和随机存取存储器(RAM)125。基本输入/输出系统126(BIOS)包含有助于诸如启动时在个人计算机120中的元件之间传递信息的基本例程,它被存储在ROM124中。
个人计算机120还包括对硬盘(未示出)读写的硬盘驱动器127、对可移动磁盘129读写的磁盘驱动器128、以及对诸如CD-ROM或其它光学介质等可移动光盘131读写的光盘驱动器130。硬盘驱动器127、磁盘驱动器128和光盘驱动器130分别通过硬盘驱动器接口132、磁盘驱动器接口133和光盘驱动器接口134连接到系统总线123。驱动器及其相关联的计算机可读介质为个人计算机120提供了对计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。
尽管此处所述的示例性环境使用硬盘、可移动磁盘129和可移动光盘131,但是应该理解,在示例性操作环境中也可使用能够存储可由计算机访问的数据的其它类型的计算机可读介质。这样的其它类型介质包括磁带盒、闪存卡、数字视频盘、贝努利盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等。
可在硬盘、磁盘129、光盘131、ROM 124或RAM 125上存储多个程序模块,包括操作系统135、一个或多个应用程序136、其它程序模块137和程序数据138。用户可通过诸如键盘140和定点设备142等输入设备向个人计算机120中输入命令和信息。其它输入设备(未示出)可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线的串行端口接口146连接至处理单元121,但也可以由其它接口,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器147或其它类型的显示设备也经由接口,诸如视频适配器148连接至系统总线123。除了监视器147之外,个人计算机通常包括诸如扬声器和打印机等其它外围输出设备(未示出)。图1的示例性系统还包括主机适配器155、小型计算机系统接口(SCSI)总线156以及连接到SCSI总线156的外置存储设备162。
个人计算机120可使用至一个或多个远程计算机,诸如远程计算机149的逻辑连接在网络化环境中操作。远程计算机149可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,且通常包括上文相对于个人计算机120描述的许多或所有元件,尽管在图1中只示出存储器存储设备150。图1中所示逻辑连接包括局域网(LAN)151和广域网(WAN)152。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,个人计算机120通过网络接口或适配器153连接至LAN 151。当在WAN联网环境中使用时,个人计算机120通常包括调制解调器154或用于通过诸如因特网等广域网152建立通信的其它装置。或为内置或为外置的调制解调器154经由串行端口接口146连接到系统总线123。在网络化环境中,相对于个人计算机120所描述的程序模块或其部分可以存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
多核处理器
如上所述,本发明关于诸如图2和3所示的多核处理器10来执行。多核处理器10是基于多核处理器架构来设计的,以便在单个处理器10中包括两个或更多基于处理器的计算引擎,即“核”12。如所见,图2和3的处理器10包括4个核12,但是可在处理器10中使用任何数量的核12而不背离本发明的精神和范围。具有多个核12的处理器10被安装到计算设备14的单个处理器插槽等中,但是计算设备14的操作系统16将处理器10的每个执行核12视为能够单独地被分配工作并且可访问所有相关联的执行资源的分立的逻辑处理器。这样的多核处理器10、计算设备14和操作系统16是已知的或应该对相关公众是显而易见的,并因而除所提供的之外,无需在此详细阐明。因此,这样的多核处理器10、计算设备14和操作系统16可以是任何合适的多核处理器、计算设备和操作系统而不背离本发明的精神和范围。
假定任何特定计算设备14上的多核处理器10可具有不同数量的核12,并且还假定任何特定处理器10上的不同的核12可提供不同的功能或甚至采用不同的指令集。因此,如可以理解的,难以开发能够处理这样的多样性的多核应用程序18。举一个例子,经常难以编写能够处理处理器10中变化数量的核12的多核应用程序18,因为这些核12之中的数据和计算的划分可能与独立控制线程的数量紧密相联系。举另一个例子,经常难以为具有不同功能单元的机器编写编译器,因为该编译器将对于每个这样的不同的功能单元采用不同的优化策略和代码生成技术。
从图2和3可以看出,特定应用程序18在计算设备14的操作系统16中或由其来实例化,并且已被构造成跨处理器10的期望数量的的核12来分配特定数量的应用程序工作部分19。例如,如从图2中可以看到,应用程序18是期望跨处理器10的8个核12分配应用程序工作部分19的8核应用程序18。同样,如从图3中可以看到,应用程序18是期望跨处理器10的2个核12分配应用程序工作部分19的2核应用程序18。如图2和3所示的这样的多核应用程序18是已知的或应该对相关公众是显而易见的,并因而除所提供的之外,无需在此详细阐明。因此,这样的多核应用程序18可以是任何合适的多核应用程序而不背离本发明的精神和范围。
如应该理解的,如由图2和图3中的应用程序10来分配的每个工作部分19可以在任何合适的基础上定义而不背离本发明的精神和范围。例如,每个工作部分19都可包括一个或多个线程等等,并且可被选择为要求大致相同数量的处理容量或“带宽”。有了这些工作部分19,并且如也应该理解的,多核处理器10通过在特定核上执行每个部分,由此在给定的处理器时钟周期内执行更多的工作来提升性能。
如从图2可以看出,因为应用程序18期望从所示的处理器10获得8个核12,而这一处理器10实际上具有4个核12,所以应用程序18正为操作系统16生成8个工作部分19以便进行处理。因此,操作系统16必须以某种方式将这8个工作部分19引导到处理器10的4个核12。例如,如图所示,操作系统16可简单地选择将两个工作部分19重新分配到每个核12。如上所述,这样的重新分配可能在特设的基础上、且在不具有来自应用程序18的协助或关于要采用的优选方法(如果的确存在这一方法)的任何知识的情况下由该操作系统等来执行。因此,这样的重新分配可能导致低效率,例如,如果第一核12最终被分配到需要相对较大量带宽的工作,而第二核12最终被分配到需要相对较少量带宽的工作,则该应用程序就必须持续地等待该第一核12。类似地,这样的分配在某些情况下甚至可能导致错误或甚至致命错误,诸如在等待应用程序18时由于某种原因错过了来自某一源的关键数据。
如从图3可以看出,与图2相反,因为应用程序期望从所示的处理器10获得2个核12,而这一处理器10实际上具有4个核12,所以应用程序18正为操作系统16生成2个工作部分19以便进行处理。因此,操作系统16同样将这2个工作部分19引导到处理器10的4个核12。结果,另两个核12至少对于该应用程序而言是空闲的。如可以理解的,这些空闲的核12表示浪费的容量,并且更广泛而言浪费了更快地和/或更高效地操作该应用程序18的机会。
一般而言,因而,当应用程序18被构造成利用该计算设备14上的处理器10的一个数量N个核12,且这一处理器10实际上具有另一数量M个核12时,可能引发低效率和/或其他问题。由此,本发明解决了这些低效率和/或其他问题,这通过如图4所示将虚拟机20插入到应用程序18与处理器10之间以便实际上对N核应用程序18仿真N核处理器10来实现。
虚拟机20
如应该理解的,诸如图4的虚拟机20等虚拟机是出于仿真硬件系统的目的在计算设备14上操作的软件构造等。具体而言,在本发明中,虚拟机20对N核应用程序18仿真N核处理器10。通常,但不必然地,虚拟机20本身是应用程序等,并在计算设备14上用于主存N核应用程序18。如应该理解的,这一虚拟机20可表示计算设备14的划分,并由此可将应用程序18与在这一计算设备上的其他应用程序隔离开。
此处注意,虚拟机20可被构造成仿真具有特定数量的核12的处理器10,或可被构造成仿真具有任何所需数量的核12的处理器10。在前一情况下,图2的8核应用程序18将需要仿真8核处理器10的第一虚拟机20,而图3的2核应用程序18将需要仿真2核处理器10的第二虚拟机20。在后一情况下,同一虚拟机能够为图2的8核应用程序18仿真8核处理器10,并且也能够为图3的2核应用程序18仿真2核处理器10。
构造虚拟机20并在具有M核处理器10的计算设备14上将其实例化一般是已知的或应该对相关公众是显而易见的,并因而除所提供的之外,无需在此详细阐明。因此,可以使用任何合适的虚拟机20来为N核应用程序18仿真具有特定数量N个核12的处理器10而不背离本发明的精神和范围,当然假定虚拟机20执行本发明所需的功能。
此处注意,对这一虚拟机20的使用总体而言可能不是特别高效,尤其在该虚拟机20正在仿真比处理器10的M个核12多的一数量N个核12的情况下。然而,为N核应用程序18仿真特定数量N个核12的这一虚拟机20通过实际上向这一N核应用程序表示这样的N个核12来至少允许该应用程序18在M核处理器10上执行。即,为N核应用程序18仿真N个核12的虚拟机20实际上在这一应用程序18本来不能在该M核处理器10上操作时允许该应用程序18在该M核处理器10上操作。
虚拟机20实际上操作以便隐藏应用程序18所期望的N个核12与可从处理器10获得的M个核12之间的差别。由此,虚拟机20提供一机器的单个的、统一的抽象,该机器具有一给定数量的处理器核12以及一给定的功能单元的集合,且该抽象独立于底层处理器10实际上所提供的。结果,开发者可基于采取N核处理器10的单个底层框架来开发N核应用程序18,即使处理器10实际上有M个核12。
注意,虽然可以使用虚拟机20来基于处理器10的M个核12尽可能高效地操作应用程序18,但是在某些情况下可能更期望改为强调这样做会牺牲效率的其他操作方面。例如,对于2核应用程序18和4核处理器10,该虚拟机对于应用程序18所期望的每个核12使用处理器10的2个核12可能是更加高效的。然而,这样做在某些情况下可能是不明智的,也许在应用程序18的每个工作部分19不能够在处理器10的2个核12之间划分的情况下。在这一情况下,于是,该虚拟机可改为对于应用程序18所期望的每个核12使用处理器10的1个核12,即使这样做将导致该处理器10的2个核12被留为空闲。
使用虚拟机20作为应用程序18与处理器10之间的中介能够在至少某些情况下提供附属但显著的优点。例如,如果应用程序18包括频繁地进行通信和/或共享相对较大量数据的一对工作部分19,则这些工作部分19应该有利地共享存储器、缓冲区等以使得这样的通信或共享涉及一个工作部分19将数据放置在共享空间中并且另一个工作部分19检索该数据。
值得注意的是,如从图5可以看出,一典型的多核处理器10组织核12以便以分层的方式共享高速缓存22。具体而言,每个核12本身具有一级(L1)高速缓存22,各对核12共享二级(L2)高速缓存22,四个核12的组共享三级(L3)高速缓存22等。因此,共享一特定L2高速缓存22的一对核12可通过相应的一对L1高速缓存22和共享的L2高速缓存22以相对更高效的方式相互之间进行通信或共享。相反,不共享一特定L2高速缓存22但共享一特定L3高速缓存22的一对核12可通过相应的一对L1高速缓存22、相应的一对L2高速缓存22和共享的L3高速缓存22以相对较不高效的方式相互之间进行通信或共享。
由此,在这一典型的多核处理器10中,如果应用程序18包括频繁地进行通信和/或共享相对较大量数据的一对工作部分19,则这些工作部分19应该被分配给共享L2高速缓存22的一对核12。因此,在本发明的一个实施例中,作为应用程序18与处理器10之间的中介的虚拟机20根据对该工作部分19具有多少与任何其他工作部分的交互的评估来将应用程序18的每个工作部分19分配给处理器10的相应核12。
由此,如从图5可以看出,相对较大量地交互的一对工作部分19可被分配给处理器10的共享L2高速缓存22的一对核12,而相对较少量地交互的一对工作部分19可被分配给处理器10的共享L3高速缓存22的一对核12,以及即使不是没有交互也是最少量地交互的一对工作部分19可被分配给处理器10的共享L4、L5、L6等高速缓存22(假设这一高速缓存22存在)的一对核12。在任何这样的情况下,是虚拟机20而不是应用程序18执行这样的分配,并且因此应用程序18不需要被开发成具有这一分配功能。当然,根据交互来分配工作部分19的实际方法可以是任何合适的方法而不背离本发明的精神和范围。
使用虚拟机20作为应用程序18与处理器10之间的中介还可提供附属但显著的优点,这表现在虚拟机20可以在处理器10的核12之间执行动态负载平衡。具体而言,如果应用程序18将其工作分成多个工作部分19,则虚拟机20可基于对一特定核12的工作负载的评估来决定将一特定工作部分19分配给这一特定核12。
由此,如从图6可以看出,虚拟机20可将该特定工作部分19分配给具有相对较小工作负载的核12,诸如最左边的具有20%工作负载(20%WL)的核12,而不是具有相对较大工作负载的核12,诸如最右边的具有80%工作负载(80%WL)的核12。此外,虚拟机20可将一特定工作部分19从具有相对较大工作负载的核,诸如中间靠右的具有100%工作负载(100%WL)的核12,重新分配给具有相对较小工作负载的核12,诸如中间靠左的具有35%工作负载(35%WL)的核12。在任何这样的情况下,是虚拟机20而不是应用程序18执行这样的负载平衡,并且因此应用程序18不需要被开发成具有这一负载平衡功能。当然,根据工作负载来分配工作部分19的实际方法可以是任何合适的方法而不背离本发明的精神和范围。
值得注意的是,一特定多核处理器10不必具有相同的核12。相反,每个核12都可以是一特定的专用类型。例如,情况可以是在8核处理器10中,核12中的6个执行通用处理,而核中的一个执行视频图形处理且核中的一个执行密码处理。类似地,如可以从图7中看出,4核处理器10可包括音频核12、视频核12、安全核12和通用核12。
在这些专用类型的核12的情况下,于是,使用虚拟机20作为应用程序18与处理器10之间的中介可另外提供附属但显著的优点,这表现在虚拟机20可根据工作部分19的类型以及可从处理器10获得的核12的类型来执行工作部分19的分配。具体而言,如果应用程序18具有需要密码处理的工作部分19,则虚拟机20将基于处理器10是否具有密码处理核12,并且还基于这一密码核12的工作负载来分配这一工作部分19。如可以理解的,如果这一密码核12存在并且可用,则虚拟机20会将这一工作部分19分配给该密码核12而不会有进一步的忙乱。然而,如果这一密码核12存在但是忙碌,则该虚拟机20可将这一工作部分19分配给该密码核12、或另一个密码核12、或具有其上运行的密码软件的通用核12,所有都取决于各种情况。当然,如果密码核12不存在,则虚拟机20将必须将这一工作部分19分配给具有其上运行的密码软件的通用核12等。在任何这样的情况下,并且再一次,是虚拟机20而不是应用程序18执行这样的基于功能的分配,并且因此应用程序18不需要被开发成具有这些基于功能的分配的能力。当然,根据功能来分配工作部分19的实际方法可以是任何合适的方法而不背离本发明的精神和范围。
结论
实现结合本发明执行的过程所需的编程相当直接,且应对相关编程公众是显而易见的。因而,这样的编程不附在此。因此,可采用任何特定的编程来实现本发明,而不背离其精神和范围。
在前述描述中,可以看到本发明包括可以用于实际上在M核处理器10上高效地操作被构造成在N核处理器10上操作的N核应用程序18的新颖且有用的方法,其中M大于或小于N。该N核应用程序18即使实际上在M核处理器10上,也犹如在N核处理器10上那样操作。具体而言,N核应用程序18在仿真N核处理器10并且以高效的方式将该应用程序18的工作重新分配给该M核处理器10的虚拟机上操作。这样的分配可基于应用程序18的工作部分19之间的交互、基于负载平衡考虑、和/或基于应用程序18的每个工作部分19所需的功能等来执行。
应当理解,可对上述实施例作出改变而不脱离其发明概念。从而应理解,本发明不限于所公开的具体实施例,而是旨在覆盖落入如由所附权利要求书定义的本发明的精神和范围内的修改。
Claims (16)
1.一种计算设备,具有:
具有特定数量M个执行核的多核处理器,每一个核都是能够单独被分配工作的分立的逻辑处理实体;
在所述计算设备上被实例化并且期望在所述M核处理器上存在特定数量N个执行核的多核应用程序,所述N核应用程序由此分配特定数量N个应用程序工作部分;以及
在所述M核处理器上被实例化的虚拟机,所述N核应用程序在所述虚拟机上被实例化,所述虚拟机对所述N核应用程序仿真N核处理器,并且由此隐藏所述应用程序所期望的N个核与可从所述处理器获得M个核之间的差别。
2.如权利要求1所述的计算设备,其特征在于,由所述应用程序分配的每个工作部分都包括至少一个线程。
3.如权利要求1所述的计算设备,其特征在于,所述虚拟机表示将所述应用程序与所述计算设备上的其他应用程序隔离开的这一计算设备的划分。
4.如权利要求1所述的计算设备,其特征在于,所述虚拟机为应用程序仿真所述处理器的多个不同数量N个核,并且其中所述虚拟机可以在各自具有不同数量M个核的多个处理器中的任一个上被实例化。
5.如权利要求1所述的计算设备,其特征在于,所述虚拟机为应用程序仿真所述处理器的多个不同数量N个核,并且其中所述虚拟机可以在各自具有不同数量M个核的多个处理器中的任一个上被实例化。
6.如权利要求1所述的计算设备,其特征在于,所述处理器的核被组织成对,每对核中的每个核都耦合至一级(L1)高速缓存,并且每对核的L1高速缓存耦合至共享的二级(L2)高速缓存,以使得所述一对核能够通过所述共享的L2高速缓存在其间直接传送数据,并且其中,所述虚拟机在将所述应用程序的一对工作部分分配给所述处理器的相应核时评估在所述一对工作部分之间存在多少交互,并且基于这一评估分配所述一对工作部分,所述虚拟机将相对较大量地交互的一对工作部分分配给所述处理器的共享L2高速缓存的一对核,而将相对较少量地交互的一对工作部分分配给所述处理器的不共享L2高速缓存的核。
7.如权利要求1所述的计算设备,其特征在于,所述虚拟机在将所述应用程序的工作部分分配给所述处理器的核时在所述处理器的核之间执行动态负载平衡,所述虚拟机基于对一特定核的工作负载的评估来将每个工作部分分配给这一特定核。
8.如权利要求1所述的计算设备,其特征在于,所述多核处理器的每个核都具有选自多个核类型的特定类型,其中所述应用程序的每个工作部分都具有选自多个工作部分类型的特定类型,并且其中,所述虚拟机根据所述工作部分的类型以及可从所述处理器获得的每个核的类型来将所述应用程序的每个工作部分分配给所述处理器的核。
9.如权利要求7所述的计算设备,其特征在于,所述处理器的第一核是执行相应的专门任务的专门类型的核,并且第二核是执行通用任务的通用类型的核,其中如果所述第一核是可用的,则所述虚拟机将对应于所述专门任务的工作部分分配给这一第一核,并且其中如果这一第一核是不可用的,则所述虚拟机将所述对应于所述专门任务的工作部分分配给所述第二核,所述第二核运行仿真以便执行所述专门任务。
10.一种其上存储有用于在计算设备上实现虚拟机的计算机可执行指令的计算机可读介质,所述计算设备具有:
具有特定数量M个执行核的多核处理器,每一个核都是能够单独被分配工作的分立的逻辑处理实体;以及
在所述计算设备上被实例化并且期望在所述M核处理器上存在特定数量N个执行核的多核应用程序,所述N核应用程序由此分配特定数量N个应用程序工作部分,
用于在所述M核处理器上被实例化的虚拟机,所述N核应用程序在所述虚拟机上被实例化,所述虚拟机对所述N核应用程序仿真N核处理器,并且由此隐藏所述应用程序所期望的N个核与可从所述处理器获得M个核之间的差别。
11.如权利要求9所述的介质,其特征在于,所述虚拟机表示将所述应用程序与所述计算设备上的其他应用程序隔离开的这一计算设备的划分。
12.如权利要求9所述的介质,其特征在于,所述虚拟机为应用程序仿真所述处理器的多个不同数量N个核,并且其中,所述虚拟机可以在各自具有不同数量M个核的多个处理器中的任一个上被实例化。
13.如权利要求9所述的介质,其特征在于,所述处理器的核被组织成对,每对核中的每个核都耦合至一级(L1)高速缓存,并且每对核的L1高速缓存耦合至共享的二级(L2)高速缓存,以使得所述一对核能够通过所述共享的L2高速缓存在其间直接传送数据,并且其中,所述虚拟机在将所述应用程序的一对工作部分分配给所述处理器的相应核时评估在所述一对工作部分之间存在多少交互,并且基于这一评估分配所述一对工作部分,所述虚拟机将相对较大量地交互的一对工作部分分配给所述处理器的共享L2高速缓存的一对核,而将相对较少量地交互的一对工作部分分配给所述处理器的不共享L2高速缓存的核。
14.如权利要求9所述的介质,其特征在于,所述虚拟机在将所述应用程序的工作部分分配给所述处理器的核时在所述处理器的核之间执行动态负载平衡,所述虚拟机基于对一特定核的工作负载的评估来将每个工作部分分配给这一特定核。
15.如权利要求9所述的介质,其特征在于,所述多核处理器的每个核都具有选自多个核类型的特定类型,其中所述应用程序的每个工作部分都具有选自多个工作部分类型的特定类型,并且其中所述虚拟机根据所述工作部分的类型以及可从所述处理器获得的每个核的类型来将所述应用程序的每个工作部分分配给所述处理器的核。
16.如权利要求14所述的介质,其特征在于,所述处理器的第一核是执行相应的专门任务的专门类型的核,并且第二核是执行通用任务的通用类型的核,其中如果所述第一核是可用的,则所述虚拟机将对应于所述专门任务的工作部分分配给这一第一核,并且其中如果这一第一核是不可用的,则所述虚拟机将所述对应于所述专门任务的工作部分分配给所述第二核,所述第二核运行仿真以便执行所述专门任务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/445,980 US7406407B2 (en) | 2006-06-01 | 2006-06-01 | Virtual machine for operating N-core application on M-core processor |
US11/445,980 | 2006-06-01 | ||
PCT/US2007/012990 WO2007143122A1 (en) | 2006-06-01 | 2007-06-01 | Virtual machine for operating n-core application on m-core processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101460923A true CN101460923A (zh) | 2009-06-17 |
CN101460923B CN101460923B (zh) | 2012-07-18 |
Family
ID=38791387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800203146A Active CN101460923B (zh) | 2006-06-01 | 2007-06-01 | 用于在m核处理器上操作n核应用程序的虚拟机 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7406407B2 (zh) |
KR (1) | KR101422861B1 (zh) |
CN (1) | CN101460923B (zh) |
WO (1) | WO2007143122A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788920A (zh) * | 2010-02-05 | 2010-07-28 | 北京航空航天大学 | 一种基于处理器分区技术的cpu虚拟化方法 |
CN104049906A (zh) * | 2013-03-11 | 2014-09-17 | Lsi公司 | 用于动态高速缓存共享的系统、方法和计算机可读介质 |
CN104272296A (zh) * | 2012-04-30 | 2015-01-07 | 惠普发展公司,有限责任合伙企业 | 提供多重系统镜像的处理器 |
CN108170534A (zh) * | 2017-12-29 | 2018-06-15 | 贵阳动视云科技有限公司 | 一种提高应用程序执行效率的方法及装置 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9116734B1 (en) * | 2011-01-14 | 2015-08-25 | Dispersive Networks Inc. | Dispersive storage area networks |
US9250973B2 (en) * | 2009-03-12 | 2016-02-02 | Polycore Software, Inc. | Apparatus and associated methodology of generating a multi-core communications topology |
US8489744B2 (en) * | 2009-06-29 | 2013-07-16 | Red Hat Israel, Ltd. | Selecting a host from a host cluster for live migration of a virtual machine |
US8694638B2 (en) * | 2009-06-29 | 2014-04-08 | Red Hat Israel | Selecting a host from a host cluster to run a virtual machine |
US8819686B2 (en) * | 2009-07-23 | 2014-08-26 | Empire Technology Development Llc | Scheduling threads on different processor cores based on memory temperature |
US8924975B2 (en) * | 2009-07-23 | 2014-12-30 | Empire Technology Development Llc | Core selection for applications running on multiprocessor systems based on core and application characteristics |
US9135079B2 (en) * | 2009-10-21 | 2015-09-15 | International Business Machines Corporation | Dynamically assigning a portion of physical computing resource to logical partitions based on characteristics of executing logical partitions |
US9268611B2 (en) | 2010-09-25 | 2016-02-23 | Intel Corporation | Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores |
US8484642B2 (en) * | 2010-11-17 | 2013-07-09 | Intel Corporation | Processor core selection based at least in part upon at least one inter-dependency |
EP2659620B1 (en) * | 2010-12-29 | 2018-10-17 | Citrix Systems Inc. | Systems and methods for scalable n-core statistics aggregation |
US8490111B2 (en) * | 2011-04-16 | 2013-07-16 | Throughputer, Inc. | Efficient network and memory architecture for multi-core data processing system |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
EP2798491B1 (en) * | 2011-12-30 | 2017-02-01 | Intel Corporation | Method and device for managing hardware errors in a multi-core environment |
US9720766B2 (en) * | 2012-04-19 | 2017-08-01 | Industry-Academic Cooperation Foundation Chosun University | Self-healing, fault-tolerant FPGA computation and architecture |
WO2015030717A1 (en) * | 2013-08-27 | 2015-03-05 | Empire Technology Development Llc | Consolidating operations associated with a plurality of host devices |
US9686240B1 (en) | 2015-07-07 | 2017-06-20 | Sprint Communications Company L.P. | IPv6 to IPv4 data packet migration in a trusted security zone |
US9749294B1 (en) | 2015-09-08 | 2017-08-29 | Sprint Communications Company L.P. | System and method of establishing trusted operability between networks in a network functions virtualization environment |
US10542115B1 (en) | 2015-10-01 | 2020-01-21 | Sprint Communications Company L.P. | Securing communications in a network function virtualization (NFV) core network |
US20170102957A1 (en) * | 2015-10-09 | 2017-04-13 | Sprint Communications Company L.P. | System and Method for Trusted Operability When Moving Between Network Functions Virtualization States |
US9781016B1 (en) | 2015-11-02 | 2017-10-03 | Sprint Communications Company L.P. | Dynamic addition of network function services |
US10250498B1 (en) | 2016-10-03 | 2019-04-02 | Sprint Communications Company L.P. | Session aggregator brokering of data stream communication |
US10740167B2 (en) * | 2016-12-07 | 2020-08-11 | Electronics And Telecommunications Research Institute | Multi-core processor and cache management method thereof |
US10348488B1 (en) | 2017-08-25 | 2019-07-09 | Sprint Communications Company L.P. | Tiered distributed ledger technology (DLT) in a network function virtualization (NFV) core network |
US10466937B2 (en) * | 2017-11-28 | 2019-11-05 | BAE Systems Information and Electronic Sustems Integration Inc. | Method of implementing a high reliability flash memory recorder |
CN111258732B (zh) * | 2020-01-13 | 2023-07-04 | 中科寒武纪科技股份有限公司 | 一种数据处理的方法、数据处理装置和电子设备 |
US11281607B2 (en) * | 2020-01-30 | 2022-03-22 | Red Hat, Inc. | Paravirtualized cluster mode for legacy APICs |
US11915026B1 (en) * | 2020-09-14 | 2024-02-27 | Amazon Technologies, Inc. | Software containers with user-selectable security levels |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7103881B2 (en) | 2002-12-10 | 2006-09-05 | Intel Corporation | Virtual machine to provide compiled code to processing elements embodied on a processor device |
US7290260B2 (en) * | 2003-02-20 | 2007-10-30 | International Business Machines Corporation | Dynamic processor redistribution between partitions in a computing system |
US20050132363A1 (en) | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US9189230B2 (en) * | 2004-03-31 | 2015-11-17 | Intel Corporation | Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution |
US7580826B2 (en) * | 2004-06-30 | 2009-08-25 | Microsoft Corporation | Systems and methods for development of emulated devices in a virtual machine environment |
US7788670B2 (en) | 2004-10-26 | 2010-08-31 | Intel Corporation | Performance-based workload scheduling in multi-core architectures |
US8621458B2 (en) * | 2004-12-21 | 2013-12-31 | Microsoft Corporation | Systems and methods for exposing processor topology for virtual machines |
US7512826B2 (en) | 2005-04-20 | 2009-03-31 | International Business Machines Corporation | Method, apparatus, and product for an efficient virtualized time base in a scaleable multi-processor computer |
US8249853B2 (en) * | 2006-03-31 | 2012-08-21 | Intel Corporation | Exposing device features in partitioned environment |
-
2006
- 2006-06-01 US US11/445,980 patent/US7406407B2/en active Active
-
2007
- 2007-06-01 CN CN2007800203146A patent/CN101460923B/zh active Active
- 2007-06-01 KR KR1020087028924A patent/KR101422861B1/ko active IP Right Grant
- 2007-06-01 WO PCT/US2007/012990 patent/WO2007143122A1/en active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788920A (zh) * | 2010-02-05 | 2010-07-28 | 北京航空航天大学 | 一种基于处理器分区技术的cpu虚拟化方法 |
CN104272296A (zh) * | 2012-04-30 | 2015-01-07 | 惠普发展公司,有限责任合伙企业 | 提供多重系统镜像的处理器 |
CN104049906A (zh) * | 2013-03-11 | 2014-09-17 | Lsi公司 | 用于动态高速缓存共享的系统、方法和计算机可读介质 |
CN108170534A (zh) * | 2017-12-29 | 2018-06-15 | 贵阳动视云科技有限公司 | 一种提高应用程序执行效率的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20070282572A1 (en) | 2007-12-06 |
KR20090018068A (ko) | 2009-02-19 |
US7406407B2 (en) | 2008-07-29 |
WO2007143122A1 (en) | 2007-12-13 |
KR101422861B1 (ko) | 2014-07-23 |
CN101460923B (zh) | 2012-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101460923B (zh) | 用于在m核处理器上操作n核应用程序的虚拟机 | |
Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
Wang et al. | Smart: A mapreduce-like framework for in-situ scientific analytics | |
US7647590B2 (en) | Parallel computing system using coordinator and master nodes for load balancing and distributing work | |
US10379883B2 (en) | Simulation of high performance computing (HPC) application environment using virtual nodes | |
Czarnul et al. | Survey of methodologies, approaches, and challenges in parallel programming using high‐performance computing systems | |
Kress et al. | Comparing the efficiency of in situ visualization paradigms at scale | |
Bosilca et al. | Online dynamic monitoring of MPI communications | |
Shan et al. | KubeAdaptor: A docking framework for workflow containerization on Kubernetes | |
Nowicki et al. | PCJ Java library as a solution to integrate HPC, Big Data and Artificial Intelligence workloads | |
Wrede et al. | Simultaneous CPU–GPU execution of data parallel algorithmic skeletons | |
Nowicki et al. | Performance evaluation of parallel computing and Big Data processing with Java and PCJ library | |
US7114040B2 (en) | Default locality selection for memory objects based on determining the type of a particular memory object | |
HPE et al. | Heterogeneous high performance computing | |
CN103631648A (zh) | 一种任务处理方法及系统 | |
US9235445B2 (en) | Process mapping parallel computing | |
Jeannot et al. | An introspection monitoring library to improve MPI communication time | |
Al-Khazraji et al. | Building High Performance Computing Using Beowulf Linux Cluster | |
Samanta et al. | Persistent memory-aware scheduling for serverless workloads | |
Belikov et al. | Architecture-aware cost modelling for parallel performance portability | |
Berthold et al. | Scheduling Light-Weight Parallelism in A rTCoP | |
Chiu et al. | Massage-Passing Interface Cluster Bulid upon System Kernel Environment | |
Mei | Message-driven parallel language runtime design and optimizations for multicore-based massively parallel machines | |
Nguyen et al. | Performance tuning for actor programs through decoupled concurrency | |
Wang et al. | Disaggregating Applications Using Uniservices |
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 | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150507 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150507 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |