用于优化运行至少一个进程的虚拟机的配置的系统和方法

文档序号:6595839阅读:312来源:国知局
专利名称:用于优化运行至少一个进程的虚拟机的配置的系统和方法
技术领域
本发明总的涉及用于优化虚拟机的系统和方法。具体而言,本发明涉及用于优化运行至少一个进程的虚拟机的配置的系统和方法。
背景技术
在执行管理程序以便在宿主计算装置上执行虚拟机的传统计算环境中,管理程序通常向虚拟机提供对宿主计算装置所提供的硬件资源的访问。传统环境中,一旦管理程序已分配资源,这个进程就不会重新评估虚拟机的需求。例如,典型的管理程序通过给每个机器指派一个处理器来将多个可利用的物理处理器分配给多个虚拟机,而不考虑任何具体虚拟机的需求或任何具体物理处理器的可利用的功能。在这样的环境中,假设第一虚拟机开始执行要求物理处理器的额外功能的进程或者在所分配的物理处理器上施加了过多的负载的进程,传统的系统通常不包括用于评估第一虚拟机的需求并给第一虚拟机分配额外的物理处理器的功能。由于管理程序可能已将另外的物理处理器分配给其他虚拟机,而这些其他虚拟机可能不会充分地利用分配给它们的物理处理器,这些传统系统可能由计算装置上的一个或多个虚拟机造成分配低效以及性能低下。

发明内容
在一个方面,用于优化运行至少一个进程的虚拟机的配置的方法包括由在计算装置上执行的管理程序指定在计算装置上执行的虚拟机中至少一个虚拟资源的配置参数。该方法包括由在虚拟机上执行的代理识别当前在虚拟机上执行的至少一个进程的名称。该方法包括响应于所述名称的识别来改变所指定的配置参数的值。在一个实施例中,该方法包括由代理将所识别的名称传输给管理程序。在又一个实施例中,该方法包括由管理程序改变所指定的配置参数的值。仍在又一个实施例中,该方法包括由管理程序改变第二虚拟机中至少一个虚拟资源的配置参数的值。又一个实施例中,该方法包括由管理程序响应于所指定的配置参数的值来分配所述至少一个虚拟资源对计算装置所提供的至少一个物理资源的访问。在又一个方面,用于优化运行至少一个进程的虚拟机的配置的系统包括在计算装置上执行的虚拟机中的至少一个虚拟资源,在虚拟机内部执行的代理以及管理程序。所述至少一个虚拟资源具有配置参数。代理识别当前在虚拟机上执行的至少一个进程的名称。 管理程序响应于从所述代理接收所识别的名称来改变配置参数的值。在一个实施例中,所述至少一个虚拟资源是虚拟处理器。在又一个实施例中,所述至少一个虚拟资源是虚拟存储器。仍在又一个实施例中,代理将所识别的名称传输给管理
4程序。在又一个实施例中,管理程序改变第二虚拟机中虚拟资源的配置参数的值。在一些实施例中,管理程序执行虚拟机。在其他实施例中,管理程序响应于所指定的配置参数的值来分配所述至少一个虚拟资源对计算装置所提供的至少一个物理资源的访问。在一个实施例中,管理程序改变指定分配给虚拟机的物理处理器时间的值。在又一个实施例中,管理程序改变指定分配给与虚拟机关联的页表的随机存取存储器(RAM)的数量的值。仍在又一个实施例中,管理程序改变指定分配给虚拟机的物理随机存取存储器 (RAM)的数量的值。


本发明的前述和其它目的、方面、特征和优点通过参考下述结合附图的描述将会更加明显并更易于理解,其中图IA是描述包括管理程序层、虚拟化层和硬件层的计算环境的实施例的框图;图IB和IC是描述用于与此处所描述的方法和系统有关的计算装置的实施例的框图;图2A是描述用于优化运行至少一个进程的虚拟机的配置的系统的实施例的框图;图2B是描述用于优化多个虚拟机的配置的系统的实施例的框图;以及图3是描述用于优化运行至少一个进程的虚拟机的配置的方法的实施例的流程图。
具体实施例方式现参考图1A,框图描述了虚拟化环境的一个实施例。简而言之,计算装置100包括管理程序层、虚拟化层和硬件层。管理程序层包括管理程序101 (也称为虚拟化管理器),其通过在虚拟化层中执行的至少一个操作系统来分配和管理对硬件层中的多个物理资源的访问(例如处理器221和磁盘228)。虚拟化层包括至少一个操作系统和分配给至少一个操作系统的多个虚拟资源。虚拟资源可包括而不限于多个虚拟处理器132a、132b、132c (总称为132),和/或虚拟盘142a、142b、142c (总称为142)。可将多个虚拟资源和操作系统110 称为虚拟机106。虚拟机106可包括控制操作系统105,该控制操作系统105与管理程序 101通信,并用于执行应用以管理并配置计算装置100上的其他虚拟机。现参考图1A,具体而言,管理程序101可以以模拟可访问物理设备的操作系统的任何方式向操作系统提供虚拟资源。管理程序101可以向任一数量的客户操作系统110a、 110b(总称为110)提供虚拟资源。一些实施例中,计算装置100执行一种或多种管理程序, 而不是操作系统。这些实施例中,管理程序可用于模拟虚拟硬件、划分物理硬件、虚拟化物理硬件并执行提供对计算环境的访问的虚拟机。管理程序可包括由I^alo Alto, California 的VMWare制造的这些程序、XEN管理程序(一种开源产品,其开发由开源Xen. org协会监管)、由微软公司提供的HyperVJirtualkrver或虚拟PC管理程序,或其他。一些实施例中,计算装置100执行创建客户操作系统可在其上执行的虚拟机平台的管理程序,该计算装置100被称为宿主服务器。在一个这样的实施例中,例如,计算装置100是由位于 Lauderdale FL 的 Citrix Systems 公司提供的 XEN SERVER。
一些实施例中,管理程序101在计算装置上执行的操作系统之内执行。一个这样的实施例中,执行操作系统和管理程序101的计算装置可被视为具有宿主操作系统(在计算装置上执行的操作系统)和客户操作系统(在由管理程序101提供的计算资源分区内执行的操作系统)。其他实施例中,管理程序101和计算装置上的硬件直接交互而不是在宿主操作系统上执行。一个这样的实施例中,管理程序101可被视为是在“裸机(bare metal)“ 上执行,所述“裸机”指包括计算装置的硬件。一些实施例中,管理程序101可以创建操作系统在其中执行的虚拟机106a_c(总称为106)。在一个这样的实施例中,管理程序101加载虚拟机映像以创建虚拟机。另一个这样的实施例中,管理程序101在虚拟机内执行操作系统。仍在另一个这样的实施例中,虚拟机执行操作系统。一些实施例中,管理程序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(例如位于第二计算装置IOOb 上)通信,或者管理计算装置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),该超虚拟化虚拟机意识到自己是虚拟机,这样的机器可称为“Doma in U PV虚拟机”。另一个实施例中,超虚拟化机包括完全虚拟化机不包括的额外驱动器。另一个实施例中,超虚拟化机包括如上所述的被包含在控制操作系统105中的网络后端驱动器和块后端驱动器。计算装置100可以被部署为任意类型和形式的计算装置和/或在其上执行,例如能够与任意类型和形式的网络通信并且执行此处所描述的操作的计算机、网络装置或设备。图IB和IC描述了用于实施此处所描述的方法和系统的实施例的计算装置100的框图。 如图IB和IC所示,计算装置100包括中央处理单元121和主存储器单元122。如图IB所示,计算装置100可包括存储装置128、安装装置116、网络接口 118、I/O控制器123、显示装置12如-1对11、键盘1 和诸如鼠标的指示装置127。存储装置1 可包括但不限于操作系统、软件和客户机代理120。如图IC所示,每个计算装置100也可包括其它可选的部件, 例如存储器端口 103、桥170、一个或多个输入/输出设备130a-130n(总的使用标号130表示),以及与中央处理单元121通信的高速缓存存储器140。中央处理单元121是响应并处理从主存储器单元122取出的指令的任意逻辑电路。在许多实施例中,中央处理单元121由微处理器单元提供,例如由California, Mountain View 的 htel 公司制造的微处理器单元;由 Illinois,Schaumburg 的 Motorola 公司制造的微处理器单元;由Califirnia,Santa Clara的Transmeta公司制造的微处理 ^# 71 ; New York, White Plains ^ International Business Machines ^wJfj^JitW RS/6000 处理器;或者由 California,Sunnyvale 的 Advanced Micro Devices 公司制造的微处理器单元。计算装置100可以基于这些处理器中的任意一种,或者能够按照这里所说明的那样运行的任意其它处理器。主存储器单元122可以是能够存储数据并允许微处理器121直接访问任意存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发(Burst)SRAM或同步突发SRAM (BSRAM)、动态随机存取存储器DRAM、快速页模式DRAM (FPM DRAM)、增强 DRAM (EDRAM)、扩展数据输出RAM (EDO RAM)、扩展数据输出DRAM (EDO DRAM)、突发扩展数据输出 DRAM(BED0 DRAM)、增强型 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PC100 SDRAM、 双倍数据传输率SDRAM (DDR SDRAM)、增强SRAM (ESDRAM)、同步链路DRAM (SLDRAM)、直接 Rambus DRAM (DRDRAM)或铁电RAM (FRAM)。主存储器122可以基于上述存储器芯片的任意一种,或者能够像这里所说明的那样运行的任意其它可用存储器芯片。在图IB中所示的实施例中处理器121通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图IC描述了在其中处理器通过存储器端口 103直接与主存储器122通信的计算装置 100的实施例。例如,在图IC中主存储器122可以是DRDRAM。图IC描述在其中主处理器121通过有时被称为背侧总线的次级总线直接与高速缓存存储器140通信的实施例。其他实施例中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图IC中所示的实施例中,处理器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)与显示装置IM通信。图IC描述了在其中主处理器121通过HYPERTRANSPORT,RAPIDI0,或INFINIBAND通信技术直接与I/O装置130b 通信的计算机100的实施例。图IC也描述了在其中本地总线和直接通信相混合的实施例 处理器121使用本地互连总线与I/O装置130a通信同时直接与I/O装置130b通信。各式各样的I/O装置130a-130n可以存在于计算装置100中。输入设备包括键盘、 鼠标、触控板、轨迹球、话筒、拨号盘和绘图板。输出设备包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图IB所示,I/O装置可以由I/O控制器123控制。I/O 控制器可以控制一个或多个I/O装置,例如键盘1 和指示装置127(如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储和/或安装介质116。仍在其它实施例中,计算装置100可以提供USB连接(未示出)以接收手持USB存储装置,例如由位于California, Los Alamitos的Twintech Industry公司生产的设备的USB闪存驱动线。再次参考图1B,计算装置100可以支持任意适当的安装装置116,例如用于接收像 3. 5英寸、5. 25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、⑶-ROM驱动器、⑶-R/RW驱动器、DVD-ROM驱动器、闪存驱动器、多种格式的磁带驱动器、USB设备、硬盘驱动器或适于安装软件和程序的任意其它设备。计算装置100还可以包括存储装置,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任意程序的应用软件程序。或者,可以使用安装装置116的任意一种作为存储装置。此外,操作系统和软件可从可引导介质运行,可引导介质例如是可引导 CD,诸如ΚΝ0ΡΡΙΧ,其为一种用于GNU/Linux的可引导CD,可自knoppix. net作为GNU/Linux 分发获得。此外,计算装置100可以包括网络接口 118以通过多种连接来与网络104对接,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802. 11,Tl,Τ3、561Λ、X. 25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、SONET上以太网 (Ethernet-over-SONET))、无线连接、或上述任意或全部的某种组合。使用多种通信协议(例如 TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口 (FDDI)、RS232、RS485、IEEE802. 11、IEEE802. Ila IEEE802. lib、IEEE802. llg、CDMA、GSM、 WiMax和直接异步连接)可建立连接。在一个实施例中,计算装置100可以通过任意类型和 /或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS)协议,或由位于Flordia, FT. Lauderdale的Citrix Systems公司制造的Citrix网关协议的隧道协议来与其他计算装置100’通信。网络接口 118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100对接到能够通信并执行这里所说明的操作的任意类型的网络的任意其它设备。在一些实施例中,计算装置100可以包括多个显示装置1对『12如或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任意一种1/0装置130a-130n 和/或1/0控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置12如-1对11。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置1^8-12 对接、通信、连接或以其他方式使用显示装置12如-1对11。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置1对『12如对接。在其它实施例中, 计算装置100可以包括多个视频适配器,每个视频适配器与显示装置中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器12如-1对11。在其它实施例中,显示装置12如-12如中的一个或多个可以由一个或多个其它计算装置提供,诸如(例如通过网络)与计算装置100连接的计算装置100a 和100b。这些实施例可以包括被设计和构造的任一类型的软件,以使用另一个计算机的显示装置作为计算装置100的第二显示装置IMa。本领域的普通技术人员会认识和意识到可以将计算装置100配置成拥有多个显示装置的各种方式和实施例。在进一步的实施例中,1/0装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire 总线、FireffireSOO总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、krialPlus总线、SCI/LAMP总线、光纤信道总线、串行 SCSI总线或HDMI总线。图IB和IC中所描述类型的计算装置100通常地在操作系统的控制下运行,操作系统控制任务的调度和对系统资源的访问。计算装置100可运行任一操作系统,诸如任一版本的MICROSOFT WINDOWS的操作系统;不同发行版本的Unix和Linux操作系统;用于Macintosh计算机的MACOS的任意版本;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算装置的操作系统,或者能够在计算装置上运行且执行此处所描述的操作的任意其它操作系统。典型的操作系统包括,但不限于WINDOWS 3· χ、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3. 51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS MOBILE, WINDOWS XP 禾口 WINDOWS VISTA,所有这些均由位于 Washington, Redmond的微软公司出品;由位于California,Cupertino的苹果计算机出品的Mac OS ;由位于New York, Armonk的国际商业机器公司出品的OS/2 ;以及由位于Utah,
9Salt Lake City的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统,以及其它。计算机系统100可以是任意工作站、电话、桌面计算机、膝上型或笔记本计算机、 服务器、手持计算机、移动电话或其他便携电信通信设备、媒体播放设备、游戏系统、移动计算装置,或能够通信的任意其它类型和/或形式的计算、电信或者媒体装置。计算机系统 100有足够的处理器能力和存储容量以执行此处所述的操作。例如,计算机系统100可包括由位于California,Cupertino的苹果计算机公司出品的IPOD系列设备、由位于日本东京的索尼公司出品的 PLAYSTATI0N2、PLAYSTATI0N3 或PERSONAL PLAYSTATION PORTABLE (PSP) 设备,由位于日本Kyoto的Nintendo有限公司出品的NINTENDO DS、NINTENDO GAMEB0Y、 NINTENDO GAMEB0Y ADVANCED 或 NINTENDO REVOLUTION 设备,或者由位于 Washington, Redmond的微软公司出品的XBOX或XBOX 360设备。在一些实施例中,计算装置100可以有不同的处理器、操作系统以及与该装置一致的输入设备。例如,在一个实施例中,计算装置100是由I^lm公司出品的Treol80、270、 600、650、680、700p、700w或750智能电话。在这些实施例的一些中,TERO智能电话是在 I5aImOS操作系统的控制下操作并且包括笔输入设备以及五向导航设备。在其他实施例中,计算装置100是移动设备,例如,JAVA使能蜂窝电话(JAVA enabled cellular telephone)或个人数字助理(PDA),诸如 i55sr,i58sr, i85s, i88s, i90c, i95cl或imllOO,以上这些均由位于Illinois, Schaumburg的摩托罗拉公司制造;由位于日本Kyoto的Kyocera公司制造的6035或7135 ;或者由位于韩国首尔的Samsung电子有限公司制造的i300或i330。在一些实施例中,计算装置100是由位于芬兰的诺基亚公司制造或由位于瑞典Lund的Sony Ericsson Mobile Communications AB公司制造的移动设备。仍在其他实施例中,计算装置100是黑莓(Bladcberry)手持或智能电话,诸如由Research In Motion有限公司制造的设备,包括黑莓7100系列、8700系列、7700系列、 7200系列、黑莓7520或黑莓PERAL 8100。仍在其他实施例中,计算装置100是智能电话、 PocketPC,PocketPC 电话,或支持 Microsft Windows Mobile Software 的其它手持移动设备。此外,计算装置100可以是任意工作站、桌面计算机、膝上型或笔记本计算机、服务器、 手持计算机、移动电话、任意其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信设备。在一些实施例中,计算装置100是数字音频播放器。在这些实施例的一个中,计算装置100是诸如由位于California Cupertino的苹果计算机公司制造的Apple IPOD,IPOD Touch, IPOD ΝΑΝΟ和IPOD SHUFFLE系列设备的数字音频播放器。在这些实施例的又一个中,数字音频播放器可作为便携媒体播放器和作为大容量存储装置来工作。在其他实施例中,计算装置 100 是诸如由位于 NJ,Ridgefield Park 的 Samsung Electronics America 公司制造的 DigitalAudioPlayer klectMP3 播放器,或由位于 IL. khaumburg 的Motorola 公司制造的Motorola m500或m25 Digital Audio Players的数字音频播放器。仍在其他实施例中,计算装置100是便携媒体播放器,诸如由Creative Technologies有限公司制造的 ZEN VISION W,ZEN VISION系列、ZEN PORTABLE MEDIA CENTER设备或MP3播放器的Digital MP3系列。仍在其他实施例中,计算装置100是支持以下文件格式的便携媒体播放器或数字音频播放器,这些文件格式包括,但不限于MP3、WAV、M4A/AAC、WMAProtected 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包括诸如由位于 CA, San Jose 的 Citrix 应用网络组、位于 CA, Mountain View,的 Silver Peak Systems 公司、位于 CA, San Francisco 的 Riverbed Technology 公司、位于 WA, Seattle 的 F5Networks公司或位于CA,Sunnyvale的Juniper Networks公司制造的设备线中的一个设备。在其他实施例中,计算装置100可被称为客户机节点、客户机器、端节点或端点。 在一些实施例中,客户机100具有作为客户机节点寻求访问服务器所提供的资源的能力以及作为服务器节点为其它客户机提供对所寄载的资源访问的能力。在一些实施例中,第一客户机计算装置100a与第二服务器计算装置100b通信。 在一个实施例中,客户机与群38中的计算装置100之一进行通信。例如,通过网络,客户机可以请求执行群38中的计算装置100所寄载的各种应用以及接收应用执行的结果的输出数据以用于显示。在一个实施例中,客户机执行程序邻近应用(program neighborhood application)以与群38中的计算装置100通信。计算装置100可以执行、操作或者以其它方式提供应用,该应用可以是任何类型和/或形式的软件、程序或可执行指令,诸如任何类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或Java小程序,或者能够在计算装置100上执行的任何其他类型和/或形式的可执行指令。在一些实施例中,应用可以是由第二计算装置代表第一计算装置的用户执行的基于服务器的或者基于远程的应用。在其他实施例中,第二计算装置可使用任何瘦客户端或远程显示协议向第一计算装置显示输出的数据,所述协议如由位于Ft. Lauderdale Florida的Citrix Systems公司制造的独立计算架构(ICA)协议;或由位于Washington,Redmond的Microsoft公司制造的远程桌面协议(RDP) ;Xll协议;由AT&T贝尔实验室制造的虚拟网络计算(VNC)协议;由位于 USA,CA, Sunnyvale 和 IsraelJaanana 的 Qumranet 公司制造的 SPICE 协议;由位于 CA, Milpitas的VESA公司制造的Net2Display协议;由位于B. C. Burnaby的Teradici公司制造的PC-over-IP协议;由位于CA,San Jose的Wyse Technology公司制造的TCX协议;由位于NY,NewYork的纽约哥伦比亚大学开发的THINC协议;或者由位于MA,Chelmsford的 Desktone公司制造的Virtual-D协议。应用可以使用任何类型的协议,并且其可以是,例如,HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其他实施例中,应用包括与诸如软IP电话的网络电话(VoIP)通信有关的任意类型的软件。在进一步的实施例中, 应用包括与实时数据通信有关的任何应用例如用于流式传输视频和/或音频的应用。一些实施例中,第一计算装置IOOa代表客户机计算装置IOOb的用户执行应用。 其他实施例中,计算装置IOOa执行虚拟机,其提供执行会话,在该会话中,代表用户或客户机计算装置IOOb执行应用。一个这样的实施例中,执行会话是寄载的桌面会话。另一个这样的实施例中,计算装置100执行终端服务会话。终端服务会话可以提供寄载的桌面环境。 仍在另一个这样的实施例中,执行会话提供对计算环境的访问,计算环境可包括以下的一个或多个应用、多个应用、桌面应用以及在其中可执行一个或多个应用的桌面会话。现参考图2A,框图描述用于优化运行至少一个进程的虚拟机的配置的系统的一个实施例的框图。概括而言,该系统包括计算装置100、虚拟机250、管理程序101和进程识别代理210。计算装置100包括至少一个物理硬件资源,例如,物理处理器221。管理程序101 在计算装置100上执行。虚拟机250在计算装置100上执行并且包括至少一个客户操作系统110和至少一个虚拟资源212。所述至少一个虚拟资源212具有配置参数。在虚拟机250 内执行的进程识别代理210识别当前在虚拟机上执行的至少一个进程214的名称。管理程序101响应于从进程识别代理210接收所识别的名称来改变配置参数的至少一个值。现参考图2A,更具体地,虚拟机250包括至少一个虚拟资源212。在一个实施例中, 至少一个虚拟资源212是如与图IA有关的上文所描述的虚拟处理器132。在又一个实施例中,至少一个虚拟资源212是如与图IA有关的上文所描述的虚拟盘142。仍在又一个实施例中,虚拟资源是虚拟网络装置。在又一个实施例中,虚拟资源是虚拟存储器。仍在又一个实施例中,管理程序101创建至少一个虚拟资源212。在又一个实施例中,管理程序加载虚拟机映像以执行虚拟机250,同时该虚拟机映像定义至少一个虚拟资源,管理程序101实例化所述虚拟资源。至少一个虚拟资源212具有配置参数。在一个实施例中,例如,配置参数识别虚拟资源212所访问的物理资源而且该配置参数的值指定已给虚拟资源212分配多少对物理资源的访问。在虚拟机250内执行的进程识别代理210识别当前在虚拟机250上执行的至少一个进程的名称。又一个实施例中,进程识别代理210在计算装置100的虚拟化层中执行。仍在又一个实施例中,进程识别代理210在计算装置100的管理程序层中执行。在一些实施例中,进程识别代理210包括收发器。在这些实施例的一个中,进程识别代理210中的收发器将所识别的名称传输给管理程序101。其他实施例中,进程识别代理210包括用于查询客户操作系统110以识别当前在虚拟机250上执行的至少一个进程的功能。在这些实施例的一个中,例如,进程识别代理210访问应用编程接口以查询客户操作系统110的壳组件。在一个实施例中,进程识别代理210是客户操作系统110内的组件。又一个实施例中,在客户操作系统110的初始执行时的安装或者初始化进程期间,用户将进程识别代理210安装到客户操作系统110中;例如,当用户初始执行客户操作系统110时,用户可接收到安装包括进程识别代理210的多个管理工具的选项。仍在又一个实施例中,进程识别代理210称为“客户代理”。管理程序101响应于从进程识别代理210接收所识别的名称来改变配置参数的值。一个实施例中,管理程序101通过与进程识别代理210和管理程序101通信的控制操作系统105直接接收所识别的名称。在又一个实施例中,所改变的值指定分配给虚拟机的物理处理器时间的值。仍在又一个实施例中,所改变的值指定分配给与虚拟机关联的页表的随机存取存储器(RAM)的数量的值。又一个实施例中,所改变的值指定分配给虚拟机的物理随机存取存储器(RAM)的数量的值。在一些实施例中,管理程序响应于所指定的配置参数的值来分配所述至少一个虚拟资源对计算装置100所提供的至少一个物理资源的访问。 其他实施例中,管理程序101响应于从进程识别代理210和控制操作系统105的至少一个接收做出更改的指令来改变配置参数的值。现参考图2B,框图描述用于优化多个虚拟机的配置的系统的一个实施例。简言之, 该系统包括计算装置100、第一虚拟机250、第二虚拟机沈0、管理程序101和进程识别代理 210。正如图2B所描述的,在第一虚拟机250上执行的进程识别代理210与控制操作系统 105通信,所述控制操作系统105与管理程序101通信。进程识别代理210识别当前在虚拟机250上执行的至少一个进程的名称。进程识别代理210包括收发器,所述收发器向控制操作系统105传输所识别的名称。控制操作系统105识别对第二虚拟机260中至少一个虚拟资源的配置参数的值将要做出的改变。控制操作系统105包括发送器,所述发送器向管理程序101发送改变第二虚拟机沈0中至少一个资源的所识别的值的指令。一个实施例中,管理程序响应于从进程识别代理210和控制操作系统105的至少一个接收变更值的指令来改变第二虚拟机中至少一个虚拟资源的配置参数的值。又一个实施例中,管理程序响应于从进程识别代理210和控制操作系统105的至少一个接收所识别的名称来改变第二虚拟机中至少一个虚拟资源的配置参数的值。现参考图3,流程图描述用于优化运行至少一个进程的虚拟机的配置的方法的一个实施例。概括来讲,该方法包括由在计算装置上执行的管理程序指定在计算装置上执行的虚拟机中至少一个虚拟资源的配置参数(302)。该方法包括由在虚拟机内执行的代理识别当前在虚拟机上执行的至少一个进程的名称(304)。该方法包括响应于所述名称的识别来改变所指定的配置参数的值(306)。在一些实施例中,提供在其上具有指令的计算机可读介质,当执行指令时,提供对运行至少一个进程的虚拟机的配置的优化。现参考图3,更具体地,管理程序指定在计算装置上执行的虚拟机中至少一个虚拟资源的配置参数(30 。在一个实施例中,管理程序101指定至少一个虚拟资源212的配置参数的值。一些实施例中,管理程序101在虚拟机初始化进程中指定虚拟机250中至少一个虚拟资源212的配置参数。在这些实施例的一个中,例如,管理程序101可通过创建虚拟机映像的实例来产生虚拟机250,所述虚拟机映像识别将要被包括在虚拟机250中的至少一个虚拟资源212并且指定所述至少一个虚拟资源212的配置参数。在这些实施例的又一个中,管理程序101可访问配置说明以确定配置参数的值。其他实施例中,管理程序101 访问配置映射,所述配置映射将至少一个资源的标识与所述至少一个资源的配置参数的值相关联。在这些实施例的一个中,例如,管理程序101可访问配置映射,所述配置映射指示虚拟机应包括虚拟处理器132,所述虚拟处理器132可访问物理处理器221的一定量的时间 (配置参数),并且指定所述物理处理器221的时间量(配置参数的值)。进一步的实施例中,管理程序101响应于所指定的配置参数的值来分配至少一个虚拟资源212对计算装置 100所提供的至少一个物理资源的访问。在虚拟机上执行的代理识别当前在虚拟机上执行的至少一个进程的名称(304)。 在一个实施例中,代理将所识别的名称传输到控制操作系统105。进程识别代理210识别当前在虚拟机250上执行的至少一个进程的名称。在这些实施例的一个中,进程识别代理210 查询客户操作系统110的壳组件以确定在虚拟机250内的客户操作系统上执行的进程214 的名称。在这些实施例的又一个中,进程识别代理210将所识别的进程名称传输到控制操作系统105。仍在这些实施例的又一个中,进程识别代理210将所识别的进程名称传输到工具堆栈104。在其他实施例中,进程识别代理210访问客户操作系统110所提供的应用编程接口以便检索在虚拟机250上执行的进程的列举。在进一步的实施例中,进程识别代理 210将所识别的名称传输给管理程序101。在一些实施例中,进程识别代理210通过管理程序101所建立的共享内存页通信信道来与控制操作系统105通信。在其他实施例中,进程识别代理210通过计算装置100 上的网络堆栈来与控制操作系统105通信。仍在其他实施例中,进程识别代理210通过对计算装置100上所存储的共享环形缓冲区或其他数据结构的修改来与控制操作系统105通在一个实施例中,根据所识别的当前在虚拟机上执行的至少一个进程的名称,控制操作系统105确定所指定的配置参数的值应改变。又一个实施例中,例如, 控制操作系统105确定进程识别代理210已识别虚拟机250已开始执行的计算密集 (computationally-intense)的进程214的名称并且确定虚拟机250的虚拟处理器132当前被分配的对物理处理器221的访问不足以执行该进程214 ;控制操作系统105确定应该改变所指定的配置参数的值(例如,分配给该虚拟处理器的物理处理器的时间数量)。仍在又一个实施例中,控制操作系统105通过增大所指定的配置参数的值,可改善虚拟机250中进程214的性能。又一个实施例中,控制操作系统105向管理程序101传输改变所指定的配置参数的值的指令。一个实施例中,控制操作系统105访问配置文件以确定是否指示管理程序响应于所识别的进程214的名称来改变所指定的配置参数的值。又一个实施例中,控制操作系统 105访问至少一个进程和至少一个指定的配置参数的值之间的映射。仍在又一个实施例中, 例如,所述映射可以为虚拟机的虚拟资源的多个配置参数的每一个识别多个已知进程和推荐值;所述推荐值可被指定来优化虚拟机的具体特性,例如,移动性、性能或可靠性。例如, 配置文件可识别如下映射
权利要求
1.一种用于优化运行至少一个进程的虚拟机的配置的方法,所述方法包括由在计算装置上执行的管理程序指定在计算装置上执行的虚拟机中的至少一个虚拟资源的配置参数;由在虚拟机内执行的代理识别当前在虚拟机上执行的至少一个进程的名称;以及响应于所述名称的识别来改变所指定的配置参数的值。
2.根据权利要求1所述的方法,还包括由管理程序响应于所指定的配置参数的值来分配所述至少一个虚拟资源对计算装置所提供的至少一个物理资源的访问。
3.根据权利要求1所述的方法,还包括由所述代理向管理程序传输所识别的名称。
4.根据权利要求1所述的方法,还包括由管理程序响应于从所述代理接收所识别的名称来改变第二虚拟机中至少一个虚拟资源的配置参数的值。
5.根据权利要求1所述的方法,其中改变还包括改变指定分配给虚拟机的物理处理器时间的值。
6.根据权利要求1所述的方法,其中改变还包括改变指定分配给与虚拟机关联的页表的随机存取存储器(RAM)的数量的值。
7.根据权利要求1所述的方法,其中改变还包括改变指定分配给虚拟机的物理随机存取存储器(RAM)的数量的值。
8.一种在其上具有指令的计算机可读介质,当执行所述指令时提供用于优化运行至少一个进程的虚拟机的配置的方法,所述计算机可读介质包括用于由在计算装置上执行的管理程序指定在计算装置上执行的虚拟机中至少一个虚拟资源的配置参数的指令;用于由在虚拟机内执行的代理识别当前在虚拟机上执行的至少一个进程的名称的指令;以及用于响应于所述名称的识别来改变所指定的配置参数的值的指令。
9.根据权利要求8所述的计算机可读介质,还包括用于由管理程序响应于所指定的配置参数的值来分配所述至少一个虚拟资源对计算装置所提供的至少一个物理资源的访问的指令。
10.根据权利要求8所述的计算机可读介质,还包括用于由所述代理向管理程序传输所识别的名称的指令。
11.根据权利要求8所述的计算机可读介质,还包括用于由管理程序响应于从代理接收所识别的名称来改变第二虚拟机中至少一个虚拟资源的配置参数的值的指令。
12.根据权利要求8所述的计算机可读介质,还包括用于改变指定分配给虚拟机的物理处理器时间的值的指令。
13.根据权利要求8所述的计算机可读介质,还包括用于改变指定分配给与虚拟机关联的页表的随机存取存储器(RAM)的数量的值的指令。
14.根据权利要求8所述的计算机可读介质,还包括用于改变指定分配给虚拟机的物理随机存取存储器(RAM)的数量的值的指令。
15.一种用于优化运行至少一个进程的虚拟机的配置的系统,所述系统包括在计算装置上执行的虚拟机中至少一个虚拟资源,所述至少一个虚拟资源具有配置参在虚拟机内执行的代理,其识别当前在虚拟机上执行的至少一个进程的名称;管理程序,其响应于从所述代理接收所识别的名称来改变配置参数的值。
16.根据权利要求15所述的系统,其中所述至少一个虚拟资源还包括虚拟处理器。
17.根据权利要求15所述的系统,其中所述至少一个虚拟资源还包括虚拟存储器。
18.根据权利要求15所述的系统,其中所述代理还包括收发器,其用于向管理程序传输所识别的名称。
19.根据权利要求15所述的系统,其中管理程序还包括用于响应于所指定的配置参数的值来分配所述至少一个虚拟资源对计算装置所提供的至少一个物理资源的访问的装置。
20.根据权利要求15所述的系统,其中管理程序还包括用于响应于从代理接收所识别的名称来改变第二虚拟机中至少一个虚拟资源的配置参数的值的装置。
21.根据权利要求15所述的系统,其中管理程序还包括用于改变指定分配给虚拟机的物理处理器时间的值的装置。
22.根据权利要求15所述的系统,其中管理程序还包括用于改变指定分配给与虚拟机关联的页表的随机存取存储器(RAM)的数量的值的装置。
23.根据权利要求15所述的系统,其中管理程序还包括用于改变指定分配给虚拟机的物理随机存取存储器(RAM)的数量的值的装置。
全文摘要
用于优化运行至少一个进程的虚拟机的配置的系统,其包括在计算装置上执行的虚拟机中至少一个虚拟资源,在虚拟机内执行的代理和管理程序。所述至少一个虚拟资源具有配置参数。所述代理识别当前在虚拟机上执行的至少一个进程的名称。管理程序响应于从所述代理接收所识别的名称来改变配置参数的值。
文档编号G06F9/455GK102257479SQ200980151449
公开日2011年11月23日 申请日期2009年11月19日 优先权日2008年12月1日
发明者D·J·斯科特, J·J·鲁德拉姆, R·W·夏普, V·汉奎兹 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1