CN102272726B - 便于异构处理器池虚拟化的系统和方法 - Google Patents

便于异构处理器池虚拟化的系统和方法 Download PDF

Info

Publication number
CN102272726B
CN102272726B CN200980154163.2A CN200980154163A CN102272726B CN 102272726 B CN102272726 B CN 102272726B CN 200980154163 A CN200980154163 A CN 200980154163A CN 102272726 B CN102272726 B CN 102272726B
Authority
CN
China
Prior art keywords
processor
concurrent physical
function
virtual machine
calculation element
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
Application number
CN200980154163.2A
Other languages
English (en)
Other versions
CN102272726A (zh
Inventor
V·汉奎兹
J·J·鲁德拉姆
R·W·夏普
D·J·斯科特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102272726A publication Critical patent/CN102272726A/zh
Application granted granted Critical
Publication of CN102272726B publication Critical patent/CN102272726B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning 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)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种便于异构处理器池虚拟化的系统包括处理器分配组件和管理程序,各自在宿主计算机上执行。处理器分配组件识别可用于计算的多个物理处理器并确定标志集合,该标志集合的每一个标识多个物理处理器的子集的每一个所提供的功能的类型。与处理器分配组件通信的管理程序给至少一个虚拟机分配对所述多个物理处理器的子集的一个的访问。

Description

便于异构处理器池虚拟化的系统和方法
相关申请
本申请要求2008年12月1日提交的美国专利申请序列号12/325,710的优先权,将其公开内容视为本申请公开的一部分并且通过引用将其整体包含于此。
技术领域
本发明总的涉及用于虚拟化由计算装置提供的物理资源的系统和方法。本发明尤其涉及便于异构处理器池虚拟化的系统和方法。
背景技术
在实现管理程序以在宿主计算装置上执行虚拟机的传统计算环境中,管理程序通常向虚拟机提供对由至少一个物理计算装置提供的硬件资源的访问。管理程序可分配物理计算装置的池中的物理资源,其可包括提供不同层次的功能的异构处理器。在一些环境中,例如在当第一物理计算装置需要维护或者不再具有给虚拟机提供所分配的硬件资源的能力时,管理程序可能需要将虚拟机从一个物理计算装置迁移到第二物理计算装置。如果两个物理计算装置提供不同的功能(例如,异构的处理器功能),那么从第一物理计算装置向第二物理计算装置迁移虚拟机可能会失败。例如,虚拟机可能执行要求访问由第一物理计算装置而不是第二物理计算装置提供的功能的进程,那么虚拟机的迁移将导致难以预料的执行错误或者不希望的虚拟机的终止。
对这个问题的常规解决方案通常涉及到在物理计算装置池中提供同构的功能。然而,这个方法通常限制了管理员为用户提供各种范围的功能的能力。而且,当物理资源老化以及要求更换时,管理员可能找不到提供相同功能的替代装置。
发明内容
在一个方面,一种便于异构处理器池虚拟化的方法包括识别可用于计算的多个物理处理器。该方法包括确定标志集合,该标志集合的每一个标识多个物理处理器的子集的每一个所提供的功能的类型。该方法包括由管理程序给至少一个虚拟机分配对所述多个物理处理器的子集的一个的访问。一个实施例中,该方法包括由管理程序提供所述至少一个虚拟机中的虚拟处理器,所述虚拟处理器仅实现由所述标志集合所标识的功能。又一个实施例中,该方法包括响应于从用户所接收的命令来确定标志集合。
在又一个方面,一种便于异构处理器池虚拟化的系统包括处理器分配组件和管理程序,各自在宿主计算机上执行。处理器分配组件识别可用于计算的多个物理处理器并确定标志集合,所述标志集合的每一个标识多个物理处理器的子集的每一个所提供的功能的类型,所述处理器分配组件在宿主计算机上执行。在宿主计算机上执行的,与处理器分配组件通信的管理程序给至少一个虚拟机分配对所述多个物理处理器的子集的一个的访问。在一个实施例中,多个物理处理器分布在多个物理机器上。又一个实施例中,该系统包括在所述至少一个虚拟机中的虚拟处理器,所述虚拟处理器仅实现由所述标志集合所标识的功能。
附图说明
本发明的前述和其它目的、方面、特征和优点通过参考下述结合附图的描述将会更加明显并更易于理解,其中:
图1A是描述包括管理程序层、虚拟化层和硬件层的计算环境的实施例的框图;
图1B和1C是描述连同此处所描述的方法和系统有用的计算装置的实施例的框图;
图2A是描述便于异构处理器池虚拟化的系统的实施例的框图;
图2B是描述便于由多个物理计算装置提供的异构处理器池虚拟化的系统的实施例的框图;
图2C是描述便于由包括一个主计算装置的多个物理计算装置提供的异构处理器池虚拟化的系统的实施例的框图;以及
图3是描述便于异构处理器池虚拟化的方法的实施例的流程图。
具体实施方式
现参考图1A,框图描述了虚拟化环境的一个实施例。简而言之,计算装置100包括管理程序层、虚拟化层和硬件层。管理程序层包括管理程序101(也称为虚拟化管理器),其通过在虚拟化层中执行的至少一个虚拟机来分配和管理对硬件层中的多个物理资源的访问(例如处理器221和磁盘228)。虚拟化层包括至少一个操作系统110和分配给至少一个操作系统110的多个虚拟资源,虚拟资源可包括而不限于多个虚拟处理器132a、132b、132c(总称为132),和/或虚拟盘142a、142b、142c(总称为142)。可将多个虚拟资源和操作系统110称为虚拟机106。虚拟机106可包括控制操作系统105,该控制操作系统105与管理程序101通信,并用于执行应用以管理并配置计算装置100上的其他虚拟机。
现参考图1A,具体而言,管理程序101可以以模拟可访问物理设备的操作系统的任何方式向操作系统提供虚拟资源。管理程序101可以向任一数量的客户操作系统110a、110b(总称为110)提供虚拟资源。一些实施例中,计算装置100执行一种或多种管理程序。这些实施例中,管理程序可用于模拟虚拟硬件、划分物理硬件、虚拟化物理硬件并执行提供对计算环境的访问的虚拟机。管理程序可包括由加利福尼亚州Palo Alto的VMWare公司制造的这些程序、XEN管理程序(一种开源产品,其开发由开源Xen.org协会监管)、由Microsoft公司提供的HyperV、Virtual Server或虚拟PC管理程序,或其他。一些实施例中,计算装置100执行创建客户操作系统可在其上执行的虚拟机平台的管理程序,该计算装置100被称为宿主服务器。在这些实施例的一个中,例如,计算装置100是由位于佛罗里达州Fort Lauderdale的Citrix Systems公司提供的XEN SERVER。
一些实施例中,管理程序101在计算装置上执行的操作系统之内执行。在这些实施例的一个中,执行操作系统和管理程序101的计算装置可被视为具有宿主操作系统(在计算装置上执行的操作系统)和客户操作系统(在由管理程序101提供的计算资源分区内执行的操作系统)。其他实施例中,管理程序101和计算装置上的硬件直接交互而不是在宿主操作系统上执行。在这些实施例的一个中,管理程序101可被视为是在“裸金属(bare metal)”上执行,所述“裸金属”指包括计算装置的硬件。
一些实施例中,管理程序101可以创建操作系统在其中执行的虚拟机106a-c(总称为106)。在这些实施例的一个中,管理程序101加载虚拟机映像以创建虚拟机106。在这些实施例的另一个中,管理程序101在虚拟机106内执行操作系统110。在这些实施例的另一个中,虚拟机106执行操作系统110。
一些实施例中,管理程序101控制在计算装置100上执行的虚拟机106的处理器调度和内存划分。在这些实施例的一个中,管理程序101控制至少一个虚拟机106的执行。在这些实施例的另一个中,管理程序101向至少一个虚拟机106呈现由计算装置100提供的至少一个硬件资源的抽象。其他实施例中,管理程序101控制是否以及如何把物理处理器能力呈现给虚拟机106。
控制操作系统105可以执行用于管理和配置客户操作系统的至少一个应用。一个实施例中,控制操作系统105可以执行管理应用,如包括如下用户接口的应用,该用户接口为管理员提供对用于管理虚拟机执行的功能的访问,这些功能包括用于执行虚拟机、终止虚拟机执行或者识别要分配给虚拟机的物理资源类型的功能。另一个实施例中,管理程序101在由管理程序101创建的虚拟机106内执行控制操作系统105。仍在另一个实施例中,控制操作系统105在被授权直接访问计算装置100上的物理资源的虚拟机106上执行。
一个实施例中,控制操作系统105在被授权与至少一个客户操作系统110交互的虚拟机106上执行。另一个实施例中,客户操作系统110通过管理程序101与控制操作系统105通信,以请求访问盘或网络。仍在另一个实施例中,客户操作系统110和控制操作系统105可通过由管理程序101建立的通信信道通信,例如,通过由管理程序101提供的多个共享存储器页面。
一些实施例中,控制操作系统105包括用于直接与由计算装置100提供的网络硬件通信的网络后端驱动器。在这些实施例的一个中,网络后端驱动器处理来自至少一个客户操作系统110的至少一个虚拟机请求。其他实施例中,控制操作系统105包括用于与计算装置100上的存储单元通信的块后端驱动器。在这些实施例的一个中,块后端驱动器根据从客户操作系统110接收的至少一个请求从存储单元读写数据。
一个实施例,控制操作系统105包括工具堆栈104。其他实施例中,工具堆栈104提供如下功能:和管理程序101交互、和其他控制操作系统105(例如位于第二计算装置100b上)通信,或者管理计算装置100上的虚拟机106b、106c。另一个实施例中,工具堆栈104包括自定义应用,其用于向虚拟机群的管理员提供改进的管理功能。一些实施例中,工具堆栈104和控制操作系统105中的至少一个包括管理API,其提供用于远程配置并控制计算装置100上运行的虚拟机106的接口。其他实施例中,控制操作系统105通过工具堆栈104和管理程序101通信。
一个实施例中,管理程序101在由管理程序101创建的虚拟机106内执行客户操作系统110。另一个实施例中,客户操作系统110为计算装置100的用户提供对计算环境中的资源的访问。另一个实施例中,资源包括程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境或对计算装置100的用户可用的其他资源。另一个实施例中,可通过多个访问方法将资源传送给计算装置100,这些方法包括但不限于:常规的直接安装在计算装置100上、通过应用流的方法传送给计算装置100、将由在第二计算装置100′上执行资源产生的并通过表示层协议传送给计算装置100的输出数据传送给计算装置100、将由在第二计算装置100′上执行的虚拟机执行资源所产生的输出数据传送给计算装置100、或者从连接到计算装置100的移动存储装置(例如USB设备)执行,或者通过在计算装置100上执行的虚拟机执行并且产生输出数据。一些实施例中,计算装置100把执行资源产生的输出数据传输给另一个计算装置100′。
一个实施例中,客户操作系统110和该客户操作系统110在其上执行的虚拟机结合形成完全虚拟化虚拟机,该完全虚拟化虚拟机并不知道自己是虚拟机,这样的机器可称为“Domain U HVM(硬件虚拟机)虚拟机”。另一个实施例中,完全虚拟化机包括模拟基本输入/输出系统(BIOS)的软件以便在完全虚拟化机中执行操作系统。仍在另一个实施例中,完全虚拟化机可包括驱动器,其通过和管理程序101通信提供功能。这样的实施例中,驱动器通常意识到自己在虚拟化环境中执行。
另一个实施例中,客户操作系统110和该客户操作系统110在其上执行的虚拟机结合形成超虚拟化虚拟机(paravirtualized),该超虚拟化虚拟机意识到自己是虚拟机,这样的机器可称为“Domain U PV虚拟机”。另一个实施例中,超虚拟化机包括完全虚拟化机不包括的额外驱动器。另一个实施例中,超虚拟化机包括如上所述的被包含在控制操作系统105中的网络后端驱动器和块后端驱动器。
计算装置100可以被部署为任何类型和形式的计算装置和/或在其上执行,例如能够与任何类型和形式的网络通信并且执行此处所描述的操作的计算机、网络装置或设备。图1B和1C描述了用于实施此处所描述的方法和系统的实施例的计算装置100的框图。如图1B和1C所示,计算装置100包括中央处理单元121和主存储器单元122。如图1B所示,计算装置100可包括存储装置128、安装装置116、网络接口118、I/O控制器123、显示装置124a-124n、键盘126和诸如鼠标的指示装置127。存储装置128可包括但不限于操作系统、软件和客户机代理120。如图1C所示,每个计算装置100也可包括另外的可选部件,例如存储器端口103、桥170、一个或多个输入/输出装置130a-130n(总的使用标号130表示),以及与中央处理单元121通信的高速缓存存储器140。
中央处理单元121是响应并处理从主存储器单元122取出的指令的任何逻辑电路。在一些实施例中,中央处理单元121由微处理器单元提供,例如:由加利福尼亚州Mountain View的Intel公司制造的微处理器单元;由伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;RS/6000处理器,由纽约州White Plains的International Business Machines(国际商业机器)公司制造的微处理器单元;或者由加利福尼亚州Sunnyvale的AdvancedMicro Devices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任何一种,或者能够按照这里所说明的那样运行的任何其它处理器。
主存储器单元122可以是能够存储数据并允许微处理器121直接访问任何存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、Burst(突发)SRAM或SynchBurst SRAM(BSRAM)、动态随机存取存储器DRAM、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDORAM)、扩展数据输出DRAM(EDO DRAM)、突发扩展数据输出DRAM(BEDO DRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100 SDRAM、双数据传输率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于上述存储芯片的任何一种,或者能够像这里所说明的那样运行的任何其它可用存储芯片。在图1B中所示的实施例中处理器121通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1C中主存储器122可以是DRDRAM。
图1C描述在其中主处理器121通过有时被称为背侧总线的次级总线直接与高速缓存存储器140通信的实施例。其他实施例中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1C中所示的实施例中,处理器121通过本地系统总线150与各种I/O装置130进行通信。可以使用各种不同的总线将中央处理单元121连接到任何I/O装置130,包括VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)与显示装置124通信。图1C描述了在其中主处理器121通过HYPERTRANSPORT,RAPIDIO,或INFINIBAND通信技术直接与I/O装置130b通信的计算机100的实施例。图1C也描述了在其中本地总线和直接通信相混合的实施例:处理器121使用本地互连总线与I/O装置130a通信同时直接与I/O装置130b通信。
计算装置100中可以有多种I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、话筒、拨号盘和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图1B所示,I/O装置可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和指示装置127(如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储和/或安装介质116。仍在其它实施例中,计算装置100可以提供USB连接(未示出)以接收手持USB存储装置,例如由位于加利福尼亚州Los Alamitos的Twintech Industry公司生产的设备的USB闪存驱动器线。
再次参考图1B,计算装置100可以支持任何适当的安装装置116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、闪速存储驱动器、多种格式的磁带驱动器、USB设备、硬盘驱动器或适于安装软件和程序的任何其它设备。计算装置100还可以包括存储装置,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任何程序的应用软件程序。可选地,也可以使用安装装置116的任何一种作为存储装置。此外,操作系统和软件可从例如可引导CD的可引导介质运行,诸如KNOPPIX,一种用于GNU/Linux的可引导CD,该可引导CD可自knoppix.net作为GNU/Linux分发获得。
此外,计算装置100可以包括网络接口118以通过多种连接来与网络104对接,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、SONET上以太网(Ethernet-over-SONET))、无线连接、或上述任何或全部的某种组合。也可使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SIDH、光纤分布数据接口(FDDI)、RS232、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。在一个实施例中,计算装置100可以通过任何类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或佛罗里达州Ft.Lauderdale的Citrix Systems公司制造的Citrix网关协议的隧道协议来与其他计算装置100’通信。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100对接到能够通信并执行这里所说明的操作的任何类型的网络的任何其它设备。
在一些实施例中,计算装置100可以包括多个显示装置124a-124n或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任何一种I/O装置130a-130n和/或I/O控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任何类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n对接、通信、连接或以其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n对接。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置124a-124n中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器124a-124n。在其它实施例中,显示装置124a-124n中的一个或多个可以由一个或多个其它计算装置提供,诸如(例如通过网络)与计算装置100连接的计算装置100a和100b。这些实施例可以包括被设计和构造来使用另一个计算机的显示装置作为计算装置100的第二显示装置124a的任何类型的软件。本领域的普通技术人员会认识和意识到可以将计算装置100配置成拥有多个显示装置124a-124n的各种方式和实施例。
在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线、串行SCSI总线或HDMI总线。
图1B和1C中所描述的类型的计算装置100通常地在操作系统的控制下运行,操作系统控制任务的调度和对系统资源的访问。计算装置100可运行任一操作系统,诸如任一版本的MICROSOFT WINDOWS的操作系统;不同发行版本的Unix和Linux操作系统;用于Macintoch计算机的MAC OS的任何版本;任何嵌入式操作系统;任何实时操作系统;任何开源操作系统;任何专有操作系统;任何用于移动计算装置的操作系统,或者能够在计算装置上运行且执行此处所描述的操作的任何其它操作系统。典型的操作系统包括,但不限于:WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWSNT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS MOBILE、WINDOWS XP和WINDOWS VISTA,所有这些均由位于华盛顿Redmond的微软公司出品;由位于加利福尼亚州Cupertino的苹果计算机公司出品的Mac OS;由位于纽约州Armonk的国际商业机器公司出品的OS/2;以及由位于犹他州Salt Lake City的Caldera公司发布的可自由使用的Linux操作系统或者任何类型和/或形式的Unix操作系统,以及其它。
计算机系统100可以是任何工作站、电话、台式计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话或其他便携电信通信设备、媒体播放设备、游戏系统、移动计算装置,或能够通信的任何其它类型和/或形式的计算、电信或者媒体装置。计算机系统100有足够的处理器能力和存储容量以执行此处所述的操作。例如,计算机系统100可包括由位于加利福尼亚州Cupertino的Apple Computer(苹果计算机)公司出品的IPOD系列设备、由位于日本Tokyo的索尼公司出品的PLAYSTATION2、PLAYSTATION3或PERSONAL PLAYSTATION PORTABLE(PSP)设备,由位于日本Kyoto的Nintendo有限公司出品的NINTENDO DS、NINTENDO GAMEBOY、NINTENDO GAMEBOYADVANCED或NINTENDO REVOLUTION设备,或者由位于华盛顿Redmond的微软公司出品的XBOX或XBOX 360设备。
在一些实施例中,计算装置100可以有不同的处理器、操作系统以及与该装置一致的输入设备。例如,在一个实施例中,计算装置100是由Palm公司出品的Treo180、270、600、650、680、700p、700w或750智能电话。在这些实施例的一些中,TREO智能电话是在PalmOS操作系统的控制下操作并且包括笔输入设备以及五向导航设备。
在其他实施例中,计算装置100是移动设备,例如,JAVA使能蜂窝电话或个人数字助理(PDA),诸如i55sr,i58sr,i85s,i88s,i90c,i95c1或im1100,以上这些均由位于伊利诺伊州Schaumburg的摩托罗拉公司制造;由位于日本Kyoto的Kyocera公司制造的6035或7135;或者由位于韩国首尔的Samsung电子有限公司制造的i300或i330。在一些实施例中,计算装置100是由位于芬兰的诺基亚公司制造或由位于瑞典Lund的Sony EricssonMobile Communications AB公司制造的移动设备。
仍在其他实施例中,计算装置100是黑莓(Blackberry)手持或智能电话,诸如由Research In Motion有限公司制造的设备,包括黑莓7100系列、8700系列、7700系列、7200系列、黑莓7520或黑莓PERAL 8100。仍在其他实施例中,计算装置100是智能电话、PocketPC、PocketPC电话,或支持Microsft Windows Mobile Software的其它手持移动设备。此外,计算装置100可以是任何工作站、台式计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、任何其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信设备。
在一些实施例中,计算装置100是数字音频播放器。在这些实施例的一个中,计算装置100是诸如由位于加利福尼亚州Cupertino的苹果计算机公司制造的Apple IPOD、IPOD Touch、IPOD NANO和IPOD SHUFFLE系列设备的数字音频播放器。在这些实施例的又一个中,数字音频播放器可作为便携媒体播放器和作为大容量存储装置来工作。在其他实施例中,计算装置100是诸如由位于新泽西州Ridgefield Park的Samsung Electronics America公司制造的DigitalAudio Player SelectMP3播放器,或由位于伊利诺伊州Schaumburg的Motorola公司制造的Motorola m500或m25数字音频播放器。仍在其他实施例中,计算装置100是便携媒体播放器,诸如ZEN VISION W、ZEN VISION系列、ZEN PORTABLE MEDIA CENTER设备或由CreativeTechnologies有限公司制造的MP3播放器的Digital MP3系列。仍在其他实施例中,计算装置100是支持以下文件格式的便携媒体播放器或数字音频播放器,这些文件格式包括,但不限于MP3、WAV、M4A/AAC、WMA Protected AAC、AIFF、Audible音频书、Apple Lossless音频文件格式和.mov、.m4v以及.mp4MPEG-4(H.264/MPEG-4AVC)视频文件格式。
在一些实施例中,计算装置100包括设备的组合,例如与数字音频播放器或便携媒体播放器相组合的移动电话。在这些实施例的一个中,计算装置100是智能电话,例如由苹果计算机公司制造的iPhone,或由Research InMotion有限公司制造的黑莓设备。又一个实施例中,计算装置100是装有web浏览器和麦克风与扬声器的系统(如电话耳机)的笔记本电脑或台式计算机。在这样的实施例中,计算装置100是web使能(web-enabled)的并且能接听和启动电话呼叫。在其他实施例中,通信装置100是组合数字音频播放器和移动电话的Motorola RAZR或Motorola ROKR系列。
计算装置100可以是文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器或防火墙。在一些实施例中,计算装置100提供远程认证拨入用户服务,并被称为RADIUS服务器。在其他实施例中,计算装置100可以有作为应用服务器或者作为主应用服务器工作的能力。仍在其他实施例中,计算装置100是刀片服务器。
在一个实施例中,计算装置100可包括活动目录。计算装置100可以是应用加速设备。对于其中计算装置100是应用加速设备的实施例,计算装置100可提供包括防火墙功能、应用防火墙功能,或负载平衡功能的功能。在一些实施例中,计算装置100包括诸如由位于加利福尼亚州San Jose的Citrix Application Networking Group或位于加利福尼亚州Mountain View的Silver Peak Systems公司或位于加利福尼亚州San Francisco的Riverbed Technology公司或位于华盛顿Seattle的F5Networks或位于加利福尼亚州Sunnyvale的Juniper Networks公司制造的设备系列中的一个的设备。
在其他实施例中,计算装置100可被称为客户机节点、客户机器、端节点或端点。在一些实施例中,客户机100具有作为客户机节点寻求访问服务器所提供的资源的能力以及作为服务器节点为其它客户机提供对所寄载的资源访问的能力。
在一些实施例中,第一客户机计算装置100a与第二服务器计算装置100b通信。在一个实施例中,客户机与群38中的计算装置100之一进行通信。例如,通过网络,客户机可以请求执行群38中的计算装置100所寄载的各种应用以及接收应用执行的结果的输出数据以用于显示。在一个实施例中,客户机执行程序邻近应用(program neighborhood application)以与群38中的计算装置100通信。
计算装置100可以执行、操作或者以其它方式提供应用,该应用可为任何类型和/或形式的软件、程序或可执行指令,诸如任何类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或Java小程序,或者能够在计算装置100上执行的任何其他类型和/或形式的可执行指令。在一些实施例中,应用可以是由第二计算装置代表第一计算装置的用户执行的基于服务器的或者基于远程的应用。在其他实施例中,第二计算装置可使用任何瘦客户端或远程显示协议向第一客户机计算装置显示输出的数据,所述协议如:由位于佛罗里达州Ft.Lauderdale的Citrix Systems公司制造的独立计算架构(ICA)协议;或由位于华盛顿Redmond的Microsoft公司制造的远程桌面协议(RDP);X11协议;由At&T贝尔实验室制造的虚拟网络计算(VNC)协议;由位于美国加利福尼亚州Sunnyvale和以色列Raanana的Qumranet公司制造的SPICE协议;由位于加利福尼亚州Milpitas的VESA公司制造的Net2Display协议;由位于B.C.Burnaby的Teradici公司制造的PC-over-IP协议;由位于加利福尼亚州San Jose的Wyse Technology公司制造的TCX协议;由位于纽约州NewYork的纽约市哥伦比亚大学开发的THINC协议;或者由位于马萨诸塞州Chelmsford的Desktone公司制造的Virtual-D协议。应用可以使用任何类型的协议,并且其可以是,例如,HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其他实施例中,应用包括与诸如软IP电话的网络电话(VoIP)通信有关的任何类型的软件。在进一步的实施例中,应用包括与实时数据通信有关的任何应用,例如用于流式传输视频和/或音频的应用。
一些实施例中,第一计算装置100a代表客户机计算装置100b的用户执行应用。其他实施例中,计算装置100a执行虚拟机,其提供执行会话,在该会话中,代表客户机计算装置100b的用户执行应用。这些实施例的一个中,执行会话是寄载的桌面会话。另一个这样的实施例中,计算装置100执行终端服务会话。终端服务会话可以提供寄载的桌面环境。仍在另一个这样的实施例中,执行会话提供对计算环境的访问,计算环境可包括以下的一个或多个:应用、多个应用、桌面应用以及在其中可执行一个或多个应用的桌面会话。
现参考图2A,框图描述便于异构处理器池虚拟化的系统的一个实施例。概括来讲,该系统包括在虚拟机106a内执行的控制操作系统105、在虚拟机106b内执行的客户操作系统110、虚拟CPU132、管理程序101、处理器分配组件210以及多个物理处理器221a,221b(统称为221)。处理器分配组件210识别可用于计算的多个物理处理器并确定标志集合,所述标志集合的每一个标识所述多个物理处理器的子集的每一个所提供的功能的类型,处理器分配组件210在宿主计算机上执行。在宿主计算机上执行的且与处理器分配组件210通信的管理程序101给至少一个虚拟机分配对多个物理处理器的子集的一个的访问。管理程序101在计算装置100的管理程序层中执行。一些实施例中,处理器分配组件210在计算装置100的管理程序层中执行。其他实施例中,处理器分配组件210在计算装置100的虚拟化层中的控制操作系统105上执行。在进一步的实施例中,提供计算机可读的介质,其包括便于异构处理器池虚拟化的可执行代码。
一些实施例中,控制操作系统105识别多个物理处理器221的每一个的可用的功能的子集。在这些实施例的一个中,子集小于物理处理器的至少一个的可用的功能的完全集。在这些实施例的又一个中,通过给虚拟机提供功能列表,该功能列表是所有物理处理器可用的公共子集,该方法确保所分配的物理处理器能提供虚拟机所请求的功能,而不管是哪个物理处理器被指派给虚拟机。在一些实施例中,资源包括可由虚拟机106使用的物理处理器221。然而,在其他实施例中,资源包括计算装置100可用的任何资源,物理的或逻辑的资源,处理器或其他。
现参考图2A,更具体地,处理器分配组件210识别可用于计算的多个物理处理器并确定标志集合,该标志集合的每一个标识多个物理处理器的子集的每一个提供的功能的类型。一个实施例中,处理器分配组件210是在管理程序101内部执行的组件。又一个实施例中,处理器分配组件210是在管理程序层中执行的组件并且与管理程序101通信。仍在又一个实施例中,处理器分配组件210是在控制操作系统105内执行的组件,所述控制操作系统105在虚拟机106内执行。又一个实施例中,处理器分配组件210作为企业管理应用编程接口的一部分;例如,XEN API作为与XEN管理程序通信的控制操作系统105的一部分,或者作为由位于佛罗里达州Fort Lauderdale的Citrix Systems公司提供的XEN SERVER产品线的一部分。一些实施例中,处理器分配组件210包括接收器,所述接收器用于从控制操作系统105接收数据。在这些实施例的一个中,控制操作系统105识别可用于计算的多个物理处理器并且将该识别传输到处理器分配组件210。在其他实施例中,控制操作系统105中的工具堆栈104识别可用于计算的多个物理处理器并且将该识别传输到处理器分配组件210。仍在其他实施例中,如下面结合图2B和2C更详细地描述,处理器分配组件210通过控制操作系统105和管理程序101与计算装置100b通信以便检索对计算装置100b所提供的可用的多个物理处理器的识别。
在一个实施例中,多个物理处理器包括物理处理器221。在又一个实施例中,多个物理处理器包括如与图1B-1C有关的上文所描述的物理处理器121。仍在又一个实施例中,多个物理处理器包括至少一个微处理器。仍在又一个实施例中,多个物理处理器分布在多个物理机器上。又一个实施例中,多个物理处理器的一个物理处理器支持所确定的标志集合的超集。
多个物理处理器中的一个物理处理器维护存储至少一个处理器标志的寄存器;该寄存器可被称为标志寄存器或状态寄存器。处理器标志可存储处理器所提供的功能的标识。一个实施例中,例如,但不限于,标志可标识一类处理器所提供的支持多媒体的功能的扩展,例如“3DNOW”或“3DNOWEXT”标志,其标识处理器包括由位于加利福尼亚州Sunnyvale的Advance MicroDevice(AMD)公司所创建的多媒体扩展。又一个实施例中,例如,但不限于,标志可标识处理器提供并行执行功能,例如HTT/HT超线程标志,其表明由位于加利福尼亚州Santa Clara的Intel公司提供的处理器提供允许在单一处理器上准并行(quasi-parallel)执行不同指令的技术。
在宿主计算机上执行的且与处理器分配组件210通信的管理程序101给至少一个虚拟机分配对多个物理处理器的子集的一个的访问。一些实施例中,管理程序101所提供的虚拟机在初始化进程期间查询管理程序101以识别所分配的物理资源。在这些实施例的一个中,虚拟机在初始化进程之后通常不向管理程序101查询所分配的物理资源的识别。在这些实施例的又一个中,在虚拟机内部执行的资源(例如操作系统或应用)在初始化进程之后开始执行并且请求访问虚拟资源所提供的功能。仍在这些实施例的又一个中,虚拟机访问所分配的物理资源以便给执行的资源提供对所请求的功能的访问,并且使用所分配资源的识别来确定所请求的功能是否是可用的。仍在这些实施例的又一个中,如果虚拟机在初始化进程之后已迁移到第二计算装置,由于虚拟机还未向管理程序查询对所分配的物理资源的识别的更新,假设第二计算装置不提供最初识别的资源,那么虚拟机可能试图提供对不再可用的功能的访问。因此,在一些实施例中,此处所描述的方法和系统允许管理程序101向虚拟机提供对所分配的将会是可用的功能的标识而不考虑虚拟机是否之后会从第一计算装置迁移到第二计算装置,这是因为管理程序101仅识别多个计算装置的每一个上的共同的功能。
现参考图2B,框图描述了便于由多个物理计算装置提供的异构处理器池虚拟化的系统的实施例。如图2B所示,该系统包括多个计算装置100,每个计算装置使至少一个物理处理器221可用于计算。计算装置100a上的控制操作系统105a可通过管理程序101a和管理程序101b之间的通信来与计算装置100b上的控制操作系统105b交换数据。一个实施例中,控制操作系统105a可向控制操作系统105b提供计算装置100a所提供的至少一个物理处理器的识别,所述至少一个物理处理器可由在计算装置100b上执行的虚拟机106使用。在一些实施例中,控制操作系统105a不通过管理程序101与控制操作系统105b通信,而是可以在存储元件250中存储可用的物理处理器的识别,所述存储元件250可由控制操作系统105b访问。尽管如2B只描述了两台计算装置100a和100b以及一个存储元件250,但应该理解该系统可提供多个任何上述组件或上述组件的每一个。
如图2B所描述的,计算装置100a上的控制操作系统105a可通过管理程序101a和管理程序101b之间的通信来与计算装置100b上的控制操作系统105b交换数据。这样,一个或多个计算装置100可以与一个或多个其他计算装置100交换关于资源池中可用的处理器和其他物理资源的数据。在一个这样的实施例中,每个计算装置100维护与其他计算装置100的每一个相关联的数据,所述数据包括每个计算装置100所提供的至少一个物理处理器的识别,所述物理处理器可由在另一个计算装置100上执行的虚拟机106使用。在又一个实施例中,该系统识别分布在多个物理机器100上的多个物理处理器。
现参考图2C,框图描述了便于由包括一个主计算装置的多个物理计算装置提供的异构处理器池虚拟化的系统的实施例。
在一些实施例中,多个物理计算装置100可通过网络通信,例如局域网(LAN)例如公司内网,城域网(MAN),或者广域网(WAN)例如因特网或万维网。在一些实施例中,在计算装置100之间有多个网络。网络可以是任何类型和/或形式的网络,并且可包括任何下述网络:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络可以包括无线链路,诸如红外信道或者卫星频带。网络的拓扑可为总线型、星型或环型网络拓扑。网络和网络拓扑可以是对于本领域普通技术人员所熟知的、可以支持此处描述的操作的任何这样的网络或网络拓扑。网络可包括利用用于移动设备间通信的任一或一些协议的移动电话网络,这些协议包括:AMPS、TDMA、CDMA、GSM、GPRS或UMTS。在一些实施例中,不同类型的数据可以通过不同协议传输。在其他实施例中,同一类型的数据可通过不同协议传输。
在一个实施例中,系统可包括多个逻辑分组的计算装置100。在这些实施例中,服务器的逻辑分组可以被称为群38或者计算装置100的池。在其中一些实施例中,计算装置100可为地理上分散的。在一些情况下,群38可以作为单个实体被管理。在其他实施例中,服务器群38包括多个服务器群38。在一个实施例中,服务器群代表一个或多个客户计算装置执行一个或多个应用。
每个群38中的计算装置100可以是异构的。一个或多个计算装置100可根据一种类型的操作系统平台(例如,由位于华盛顿Redmond的Microsoft公司制造的WINDOWS NT)操作,而一个或多个其它计算装置100可根据另一类型的操作系统平台(例如,Unix或Linux)操作。
每个群38中的计算装置100不必与同一群38中的另一个服务器106在物理上接近。因而,逻辑上分组为群38的服务器106组可以是使用广域网(WAN)或城域网(MAN)连接来互联的。例如,群38可包括物理上位于不同大陆或某个大陆、国家、州、城市、校园或房间的不同区域的服务器106。如果服务器106使用局域网(LAN)连接或一些直连形式进行连接,则可增加群38中的服务器106间的数据传输速度。
如图2C所示,该系统包括多个计算装置100,每个计算装置使至少一个物理处理器221可用于计算并且其中一个计算装置已经被指定为主计算装置。与图2B所描述的实施例不同,在图2B中,每个计算装置100a上的每个控制操作系统105b将数据传输到每个控制操作系统105b,图2C描述的实施例中,控制操作系统105a和105b与主计算装置100c及其控制操作系统105c通信。在这个实施例中,主计算装置100c维护可由计算装置池中每个计算装置100使用的资源的统一视图。在一些实施例中,主计算装置100c汇集整个计算装置池的可利用资源的列举,并确定池中可利用资源的公共子集。在其他实施例中,主计算装置100c汇集计算装置池中每个计算装置提供的资源类型所提供的功能的列举(例如,通过列举每个计算装置提供的每个物理处理器所提供的功能),并且确定池中资源提供的功能的公共子集。在一些实施例中,多个计算装置100中的计算装置100选出计算装置中的一个来提供主计算装置100c的功能。在其他实施例中,多个计算装置100中的计算装置100选出计算装置中的子集来提供主计算装置的功能。仍在其他实施例中,计算装置100与主计算装置100c交换状态数据以便给每个计算装置100提供该主计算装置100c所存储的数据快照;在这个实施例中,如果主计算装置100c失效同时另一个计算装置100n被选出作为新的主计算装置,那么新选出的计算装置100n可访问数据快照以便减少故障切换过程的影响。
现参考图3,流程图描述便于异构处理器池虚拟化的方法的一个实施例。概括而言,该方法包括识别可用于计算的多个物理处理器(302)。该方法包括确定标志集合,该标志集合的每一个标识多个物理处理器的子集的每一个所提供的功能的类型(304)。该方法包括由管理程序给至少一个虚拟机分配对所述多个物理处理器的子集的一个的访问(306)。
现参考图3,更具体地,识别可用于计算的多个物理处理器(302)。一个实施例中,处理器分配组件210识别可用于计算的多个物理处理器。又一个实施例中,管理程序101识别可用于计算的多个物理处理器。仍在又一个实施例中,控制操作系统105查询管理程序以识别由计算装置100提供的任何物理资源,并且控制操作系统105将所识别的物理资源传输到处理器分配组件210。又一个实施例中,工具堆栈104提供用于查询管理程序的功能并且向处理器分配组件210传输所识别的物理资源。一些实施例中,工具堆栈104查询计算装置100的内核以识别可用于计算的多个物理处理器。
确定标志集合,该标志集合的每一个标识多个物理处理器的子集的每一个所提供的功能的类型(304)。在一个实施例中,该标志集合是标志集合的子集;例如标志的超集可包括标识仅由一个物理处理221a所提供的功能的标志以及标识由物理处理器221a和第二物理处理器221d所提供的功能的标志,而且该集合可以只包括标识物理处理器221a和221d所提供的功能的标志。又一个实施例中,标志的整个超集标识多个物理微处理器的每一个所提供的功能;在这样的实施例中,该集合可包括所有标志。
在一些实施例中,主计算装置100c上的控制操作系统105c从控制操作系统105a接收标识计算装置100a上可用的物理处理器221a所提供的功能的标志集合,同时主计算装置100c从控制操作系统105b接收标识计算装置100b上可用的物理处理器221b所提供的功能的标志集合。在控制操作系统100c中执行的组件(例如处理器分配组件210c)可确定物理处理器221a和221b所提供的功能的公共集;该公共集可以是标志的整体组合集或者标志的整体组合集的子集。例如,控制操作系105c可将所确定的标志的公共集传输到计算装置100b的控制操作系统105b以用于将资源分配给可能最终会从计算装置100b迁移到计算装置100a的虚拟机106b。在一些实施例中,当在计算装置池中加入或从其中删除新的计算装置100d时,或者新的物理处理器221变为可利用的或者不再可用时,控制操作系统105c确定更新的标志集合并且将所更新的标志集合传输到计算装置池中的每个计算装置100。
其他实施例中,计算装置100a的控制操作系统105a和计算装置100b的控制操作系统105b互相之间直接通信,而不是通过主计算装置100c通信。例如,如与图2B有关的上文所描述的,控制操作系统105a和105b可通过管理程序101a、101b通信,或者通过使用存储元件250来交换数据。一个这样的实施例中,每个控制操作系统105确定标志集合。
管理程序给至少一个虚拟机分配对所述多个物理处理器的子集的一个的访问(306)。在一个实施例中,管理程序101从控制操作系统105接收对所确定的标志集合的识别。又一个实施例中,管理程序101接收对所确定的标志集合的识别以及执行虚拟机106的指令。仍在又一个实施例中,管理程序101接收对所确定的标志集合的识别,以及给虚拟机106中的虚拟处理器分配对物理处理器子集中的一个物理处理器221的访问的指令。又一个实施例中,管理程序101提供所述至少一个虚拟机中的虚拟处理器,所述虚拟处理器仅实现由标志集合所标识的功能。例如,管理程序101可产生虚拟处理器132,其能给在虚拟机106中执行的资源(例如客户操作系统110)仅提供所标识的功能。
在一些实施例中,管理程序101拦截虚拟机106内组件(例如虚拟处理器132或客户操作系统110)对所确定的标志集合未标识的功能访问的请求,然后管理程序101用所分配的物理处理器的该功能不可用的指示来响应该请求。在这些实施例的一个中,多个物理处理器的子集中所分配的物理处理器提供所请求的功能(例如,该物理处理器可能实现所确定的标志集合的超集所标识的功能)而不是子集中所有物理处理器都提供该功能。因此,防止虚拟机106访问非所有物理处理器提供的功能致使可在计算装置之间迁移的虚拟机106的执行,其提供对异构物理处理器的访问。
在一些实施例中,所述识别和确定作为用于执行虚拟机106的进程的一部分而发生。在这些实施例的一个中,例如,计算装置100上的控制操作系统105可从一个或多个计算装置100检索可利用的多个物理处理器的识别,确定标识多个物理处理器的每一个所提供的功能的标志集合,以及指示计算装置100上的管理程序101执行虚拟机106并给虚拟机106分配虚拟资源,所述虚拟机资源仅实现标志的子集所标识的功能。在其他实施例中,通过确定标识多个物理处理器公共功能的标志集合,以及通过给虚拟机106分配仅对所标识的功能的访问,虚拟机106将不会试图访问由第一计算装置的第一物理处理器而不是由第二计算装置的第二物理处理器所提供的功能;在这样的实施例中,虚拟机106可能在两个计算装置之间迁移而没有由于试图访问不支持的功能所引起的错误。
一些实施例中,多个物理处理器的至少一个提供未被所确定的标志集合中的标志所标识的额外的功能。这些实施例的一个中,通过仅提供对多个物理处理器的每一个所提供的功能的公共子集的访问(或包括提供额外的功能的至少一个物理处理器的物理处理器子集的每一个),被分配访问至少一个物理处理器的虚拟机106可以不接收额外功能的标识而且也不使用额外的功能。因此,这些实施例的又一个中,该系统可提供机制,通过该机制用户可选择虚拟机106是否应该被分配访问功能的公共子集,从而使在虚拟机106可能从一个计算装置迁移到另一个的环境中的迁移更容易,或者可选择虚拟机106是否应该被分配访问特定物理处理器所提供的所有功能,从而由于虚拟机106使用额外的功能引起性能的提高。在这样的实施例中,系统响应于从用户接收的命令来确定标志集合。仍在这些实施例的又一个中,用户(例如管理员)可以为第一虚拟机106a选择更容易的迁移,同时为第二虚拟机106b选择提高性能。仍在又一个实施例中,允许用户有选择地应用此处所描述的机制给用户在多个虚拟机的管理中提供了更好的控制和灵活性。又一个实施例中,系统包括允许用户为每个虚拟机指定自定义的选项的用户接口,例如,控制操作系统可提供该用户接口。
应该理解,此处描述的系统可提供多个任何上述组件或上述组件的每一个并且这些组件可以在单独机器上提供,或者在一些实施例中,可在分布式系统的多个机器上提供。此外,上述系统和方法可作为一件或多件产品上所体现的或在其中的一个或多个计算机可读程序而被提供。所述产品可以是软盘、硬盘、CD-ROM,闪存卡、PROM、RAM、ROM或磁带。通常,计算机可读程序可以任何编程语言来实现,如LISP、PERL、C、C++、C#、PROLOG,或者诸如JAVA的任何字节码语言。软件程序可以作为目标代码被存储在一件或多件产品上或其中。
已经描述了用于便于异构处理器池虚拟化的方法和系统的某些实施例,对本领域技术人员而言,显而易见可以使用包含所述实施例的概念的其他实施例。因此本发明应该不限于某些实施例,而是应由下列权利要求的主旨和范围进行限制。

Claims (13)

1.一种便于异构处理器池虚拟化的方法,所述方法包括:
识别可用于计算的异构的多个物理处理器;
确定标志集合,所述标志集合的每一个标志标识所述多个物理处理器的至少子集所提供的功能的类型;
根据所述标志集合确定由所有的所述多个物理处理器所提供的功能的公共子集,所述功能的公共子集少于可从至少一个所述物理处理器获得的功能的完整集合;
由管理程序给至少一个虚拟机分配对所述多个物理处理器的子集的一个物理处理器的访问;以及
由所述管理程序提供所述至少一个虚拟机中的虚拟处理器,所述虚拟处理器仅实现所述功能的公共子集。
2.根据权利要求1所述的方法,其中识别还包括识别分布在多个物理机器上的多个物理处理器。
3.根据权利要求1所述的方法,其中确定标志集合包括响应于从用户所接收的命令来确定所述标志集合。
4.根据权利要求1所述的方法,其中分配包括由管理程序给所述至少一个虚拟机分配对所述多个物理处理器的子集中一个物理处理器的访问,该物理处理器实现所确定的标志集合的超集所标识的功能。
5.一种便于异构处理器池虚拟化的设备,所述设备包括:
用于识别可用于计算的异构的多个物理处理器的装置;
用于确定标志集合的装置,所述标志集合的每一个标志标识所述多个物理处理器的至少子集所提供的功能的类型;
用于根据所述标志集合确定由所有的所述多个物理处理器所提供的功能的公共子集的装置,所述功能的公共子集少于可从至少一个所述物理处理器获得的功能的完整集合;
用于由管理程序给至少一个虚拟机分配对所述多个物理处理器的子集的一个物理处理器的访问的装置;以及
用于由所述管理程序提供所述至少一个虚拟机中的虚拟处理器的装置,所述虚拟处理器仅实现所述功能的公共子集。
6.根据权利要求5所述的设备,还包括用于识别分布在多个物理机器上的多个物理处理器的装置。
7.根据权利要求5所述的设备,包括用于响应于从用户所接收的命令来确定所述标志集合的装置。
8.根据权利要求5所述的设备,包括用于由管理程序给所述至少一个虚拟机分配对所述多个物理处理器的子集中一个物理处理器的访问的装置,所述物理处理器实现由所确定的标志集合的超集所标识的功能。
9.一种便于异构处理器池虚拟化的系统,所述系统包括:
处理器分配组件,其识别可用于计算的异构的多个物理处理器,确定标志集合,所述标志集合的每一个标识所述多个物理处理器的子集的每一个所提供的功能的类型,根据所述标志集合确定由所有的所述多个物理处理器所提供的功能的公共子集,所述功能的公共子集少于可从至少一个所述物理处理器获得的功能的完整集合,所述处理器分配组件在宿主计算机上执行;以及
管理程序,其在所述宿主计算机上执行并与所述处理器分配组件通信,给至少一个虚拟机分配对所述多个物理处理器的子集的一个的访问,并提供所述至少一个虚拟机中的虚拟处理器,所述虚拟处理器仅实现所述功能的公共子集。
10.根据权利要求9所述的系统,其中处理器分配组件在宿主计算机上的虚拟机内执行。
11.根据权利要求9所述的系统,其中处理器分配组件还包括用于从在所述宿主计算机上的虚拟机内执行的控制操作系统接收所述多个物理处理器的标识的装置。
12.根据权利要求9所述的系统,还包括第二宿主计算机,其向所述处理器分配组件传输所确定的标志集合的标识。
13.根据权利要求9所述的系统,其中处理器分配组件还包括用于识别分布在多个物理机器上的多个物理处理器的装置。
CN200980154163.2A 2008-12-01 2009-11-19 便于异构处理器池虚拟化的系统和方法 Active CN102272726B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/325710 2008-12-01
US12/325,710 US8352952B2 (en) 2008-12-01 2008-12-01 Systems and methods for facilitating virtualization of a heterogeneous processor pool
PCT/US2009/065105 WO2010065325A1 (en) 2008-12-01 2009-11-19 Systems and methods for facilitating virtualization of a heterogeneous processor pool

Publications (2)

Publication Number Publication Date
CN102272726A CN102272726A (zh) 2011-12-07
CN102272726B true CN102272726B (zh) 2014-07-02

Family

ID=41663306

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980154163.2A Active CN102272726B (zh) 2008-12-01 2009-11-19 便于异构处理器池虚拟化的系统和方法

Country Status (4)

Country Link
US (2) US8352952B2 (zh)
EP (1) EP2353086A1 (zh)
CN (1) CN102272726B (zh)
WO (1) WO2010065325A1 (zh)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8374929B1 (en) 2007-08-06 2013-02-12 Gogrid, LLC System and method for billing for hosted services
KR100936239B1 (ko) * 2007-12-18 2010-01-12 한국전자통신연구원 스트리밍 기반 이동형 소프트웨어 제공 시스템 및 방법
KR20090108868A (ko) * 2008-04-14 2009-10-19 삼성전자주식회사 가상 머신 관리 시스템 및 그의 프로세서 자원 관리방법
JP5047870B2 (ja) * 2008-04-17 2012-10-10 株式会社日立製作所 マスタ管理システム、マスタ管理方法、およびマスタ管理プログラム
US8656018B1 (en) 2008-09-23 2014-02-18 Gogrid, LLC System and method for automated allocation of hosting resources controlled by different hypervisors
US8327169B2 (en) * 2009-02-26 2012-12-04 International Business Machines Corporation Power management to maximize reduced power state for virtual machine platforms
US20110093902A1 (en) * 2009-10-16 2011-04-21 At&T Intellectual Property I, L.P. System and Method to Process a Data Stream Having Different Content Types
US20110113426A1 (en) * 2009-11-09 2011-05-12 Hsiang-Tsung Kung Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
US8601226B1 (en) * 2010-05-20 2013-12-03 Gogrid, LLC System and method for storing server images in a hosting system
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
US8707083B2 (en) * 2010-12-03 2014-04-22 Lsi Corporation Virtualized cluster communication system
KR101738527B1 (ko) * 2010-12-07 2017-05-22 삼성전자 주식회사 모바일기기 및 그 제어방법
US8689039B1 (en) * 2011-01-28 2014-04-01 Bank Of America Corporation Method and apparatus for redundancy in an ATM using hot swap hardware underlying a virtual machine
US9288117B1 (en) 2011-02-08 2016-03-15 Gogrid, LLC System and method for managing virtual and dedicated servers
US8533714B2 (en) 2011-05-03 2013-09-10 International Business Machines Corporation Dynamic virtual machine domain configuration and virtual machine relocation management
GB2491666A (en) 2011-06-08 2012-12-12 Inst Information Industry Green computing heterogeneous computer system
US8880657B1 (en) 2011-06-28 2014-11-04 Gogrid, LLC System and method for configuring and managing virtual grids
KR101894752B1 (ko) * 2011-10-27 2018-09-05 삼성전자주식회사 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법
US20130152076A1 (en) * 2011-12-07 2013-06-13 Cisco Technology, Inc. Network Access Control Policy for Virtual Machine Migration
US20130238785A1 (en) * 2012-03-06 2013-09-12 Rackspace Us, Inc. System and Method for Metadata Discovery and Metadata-Aware Scheduling
JP6094259B2 (ja) * 2012-05-23 2017-03-15 株式会社デンソー 管理サーバ
US10255089B2 (en) * 2012-07-31 2019-04-09 Ca, Inc. Self-deleting virtual machines
US9075789B2 (en) * 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US10425481B2 (en) * 2013-05-13 2019-09-24 Telefonaktiebolaget Lm Ericsson (Publ) Node in a telecommunications network, a virtual network element and methods for retrieving resource identification information
US9710291B2 (en) 2013-06-19 2017-07-18 Empire Technology Development Llc Processor-optimized library loading for virtual machines
WO2015009288A1 (en) * 2013-07-16 2015-01-22 Empire Technology Development, Llc Processor identification for virtual machines
CN103617070B (zh) * 2013-11-27 2017-01-04 华为技术有限公司 虚拟机迁移方法及装置
KR101884549B1 (ko) * 2014-06-06 2018-08-29 인터내셔널 비지네스 머신즈 코포레이션 하드웨어 멀티스레딩 파라미터를 사용한 가상 머신을 위한 호스트의 선택
US9400672B2 (en) * 2014-06-06 2016-07-26 International Business Machines Corporation Placement of virtual CPUS using a hardware multithreading parameter
US9304805B2 (en) * 2014-06-06 2016-04-05 Interinational Business Machines Corporation Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US9384027B2 (en) * 2014-06-06 2016-07-05 International Business Machines Corporation Selecting a host for a virtual machine using a hardware multithreading parameter
US9588795B2 (en) * 2014-11-24 2017-03-07 Aspen Timber LLC Monitoring and reporting resource allocation and usage in a virtualized environment
CN105988874B (zh) 2015-02-10 2020-08-28 阿里巴巴集团控股有限公司 资源处理方法及装置
CN112181585A (zh) * 2015-03-03 2021-01-05 华为技术有限公司 虚拟机的资源分配方法及装置
US9851933B2 (en) 2015-03-25 2017-12-26 International Business Machines Corporation Capability-based abstraction of software-defined infrastructure
US9529620B1 (en) * 2015-12-17 2016-12-27 International Business Machines Corporation Transparent virtual machine offloading in a heterogeneous processor
US11221875B2 (en) * 2016-03-31 2022-01-11 Intel Corporation Cooperative scheduling of virtual machines
US10152341B2 (en) 2016-08-30 2018-12-11 Red Hat Israel, Ltd. Hyper-threading based host-guest communication
US10521273B2 (en) * 2017-06-08 2019-12-31 Cisco Technology, Inc. Physical partitioning of computing resources for server virtualization
EP3704575A4 (en) * 2017-10-31 2021-08-25 Nokia Solutions and Networks Oy REAL-TIME VIRTUAL NETWORK FUNCTIONAL ORCHESTRATION METHOD, APPARATUS AND SYSTEM
US11029985B2 (en) * 2018-01-19 2021-06-08 Ge Aviation Systems Llc Processor virtualization in unmanned vehicles
US10942509B2 (en) 2018-01-19 2021-03-09 Ge Aviation Systems Llc Heterogeneous processing in unmanned vehicles
CN108989102A (zh) * 2018-07-05 2018-12-11 广州禹龙信息科技有限公司 双协议桌面云的配置方法及系统
KR102465953B1 (ko) * 2022-05-30 2022-11-11 쿤텍 주식회사 하이퍼바이저 시스템 및 하이퍼바이저 동작 방법
CN117724796A (zh) * 2024-02-07 2024-03-19 国家超级计算天津中心 基于工具栈的超级计算机控制方法、装置、设备和介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3643227A (en) * 1969-09-15 1972-02-15 Fairchild Camera Instr Co Job flow and multiprocessor operation control system
US4873626A (en) * 1986-12-17 1989-10-10 Massachusetts Institute Of Technology Parallel processing system with processor array having memory system included in system memory
EP0272836B1 (en) * 1986-12-22 1994-03-02 AT&T Corp. Controlled dynamic load balancing for a multiprocessor system
JPH02228761A (ja) * 1989-03-02 1990-09-11 Mitsubishi Electric Corp メモリ制御装置
US5317568A (en) * 1991-04-11 1994-05-31 Galileo International Partnership Method and apparatus for managing and facilitating communications in a distributed hetergeneous network
US5925125A (en) * 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
US6240521B1 (en) * 1998-09-10 2001-05-29 International Business Machines Corp. Sleep mode transition between processors sharing an instruction set and an address space
KR100322277B1 (ko) * 1998-11-20 2002-03-08 권 기 홍 확장 명령어를 가진 중앙처리장치
US20030046516A1 (en) * 1999-01-27 2003-03-06 Cho Kyung Youn Method and apparatus for extending instructions with extension data of an extension register
JP2002202959A (ja) * 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
US7007183B2 (en) * 2002-12-09 2006-02-28 International Business Machines Corporation Power conservation by turning off power supply to unallocated resources in partitioned data processing systems
US7146439B1 (en) * 2003-06-27 2006-12-05 Emc Corporation Management of background copy task for point-in-time copies
US7508806B1 (en) * 2003-08-29 2009-03-24 National Semiconductor Corporation Communication signal processor architecture
US7194641B2 (en) * 2004-01-22 2007-03-20 International Business Machines Corporation Method and apparatus for managing power and thermal alerts transparently to an operating system in a data processing system with increased granularity in reducing power usage and thermal generation
US20080004012A1 (en) * 2006-06-30 2008-01-03 Advanced Micro Devices, Inc. Portable computing platform including wireless communication functionality
US7717350B2 (en) * 2006-06-30 2010-05-18 Advanced Micro Devices, Inc. Portable computing platform having multiple operating modes and heterogeneous processors
US7987464B2 (en) * 2006-07-25 2011-07-26 International Business Machines Corporation Logical partitioning and virtualization in a heterogeneous architecture
US8296775B2 (en) * 2007-01-31 2012-10-23 Microsoft Corporation Efficient context switching of virtual processors by managing physical register states in a virtualized environment
US7698531B2 (en) * 2007-03-28 2010-04-13 International Business Machines Corporation Workload management in virtualized data processing environment
US7698530B2 (en) * 2007-03-28 2010-04-13 International Business Machines Corporation Workload management in virtualized data processing environment
US7617375B2 (en) * 2007-03-28 2009-11-10 International Business Machines Corporation Workload management in virtualized data processing environment
JP2008257572A (ja) * 2007-04-06 2008-10-23 Hitachi Ltd 論理区画に動的に資源割り当てを行うストレージシステム及びストレージシステムの論理分割方法
US7979674B2 (en) * 2007-05-16 2011-07-12 International Business Machines Corporation Re-executing launcher program upon termination of launched programs in MIMD mode booted SIMD partitions
US8127296B2 (en) * 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration

Also Published As

Publication number Publication date
CN102272726A (zh) 2011-12-07
US20100138828A1 (en) 2010-06-03
US20130097602A1 (en) 2013-04-18
WO2010065325A1 (en) 2010-06-10
US8943512B2 (en) 2015-01-27
EP2353086A1 (en) 2011-08-10
US8352952B2 (en) 2013-01-08

Similar Documents

Publication Publication Date Title
CN102272726B (zh) 便于异构处理器池虚拟化的系统和方法
CN102257481B (zh) 用于由管理程序控制对物理资源的访问的系统和方法
CN102804140B (zh) 用于将设备驱动程序导入到客户计算环境中的方法和系统
CN102317909A (zh) 便于在多个物理机器间迁移虚拟机的系统和方法
CN102334114B (zh) 用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法
CN102257479A (zh) 用于优化运行至少一个进程的虚拟机的配置的系统和方法
CN102656578B (zh) 用于在第一机器上显示与第二机器的驱动器关联的数据而不必映射该驱动器的方法和系统
CN104981783B (zh) 在云计算环境中的动态配置
CN104246703B (zh) 为云资源指定状态
CN104067231B (zh) 使用虚拟交换代理控制网络接口
CN104956329B (zh) 在云计算环境中的网络方案
CN102971706A (zh) 将信息从安全虚拟机重定向到不安全虚拟机
CN102292698A (zh) 用于在云计算环境中自动管理虚拟资源的系统和方法
CN102202049B (zh) 用于多虚拟机设备的网络策略实现
CN100380353C (zh) 在计算节点的热插拔期间枚举处理器的装置和方法
CN104106051A (zh) 标记云计算环境中的物理资源
CN104487943A (zh) 受信文件间接操作
CN104981776A (zh) 对个人虚拟磁盘的系统更新
CN102037444A (zh) 用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和系统
CN104115471A (zh) 托管的服务中的客户端带宽模拟
CN109656646B (zh) 一种远程桌面控制方法、装置、设备及虚拟化芯片
CN105074665A (zh) 用于实现桌面虚拟化的迁移工具
JP7358005B2 (ja) クラウド・サービスのためのネイティブ・コード生成
WO2017045272A1 (zh) 虚拟机迁移方法和装置
CN109656675A (zh) 总线设备、计算机设备及实现物理主机云存储的方法

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