首页> 中国专利> 使用硬件多线程参数来为虚拟机选择主机

使用硬件多线程参数来为虚拟机选择主机

摘要

云管理器监视主机计算机系统上的可用资源,包括主机计算机系统上的CPU支持的硬件线程数量。云管理器接收供应虚拟机(VM)的请求,该请求包括指定主机计算机系统上所需的硬件多线程的数量的硬件多线程参数。然后云管理器通过考虑硬件多线程参数,为VM选择主机计算机系统。

著录项

  • 公开/公告号CN106462446A

    专利类型发明专利

  • 公开/公告日2017-02-22

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201580024412.1

  • 申请日2015-06-04

  • 分类号G06F9/46;G06F9/50;

  • 代理机构北京市金杜律师事务所;

  • 代理人酆迅

  • 地址 美国纽约阿芒克

  • 入库时间 2023-06-19 01:44:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-08

    授权

    授权

  • 2017-03-22

    实质审查的生效 IPC(主分类):G06F9/46 申请日:20150604

    实质审查的生效

  • 2017-02-22

    公开

    公开

说明书

技术领域

本公开概括地涉及向主机计算机系统部署虚拟机,并且更具体地,涉及通过使用硬件多线程参数来为虚拟机选择主机。

背景技术

在云环境中,云管理器向主机计算机系统部署虚拟机以创建虚拟服务器。典型地,云管理器接收请求,该请求指定虚拟机映像对于系统资源(诸如,存储器、盘和CPU)的要求。云管理器继而确定具有所需系统资源的可用主机计算机系统,选择可用主机计算机系统中的一个,并且将虚拟机部署至该选择的主机计算机系统。

OpenStack是用于建立私有和公共云的开源软件。在OpenStack中,被称为“flavor(风格)”的虚拟硬件模板为虚拟机指定所需的系统资源。例如,在OpenStack中的flavor可以指定用于虚拟机的存储器大小、根盘大小、以及虚拟CPU的数量。当虚拟机需要被部署时,利用针对虚拟机指定所需资源的flavor来对云管理器执行调用。云管理器继而找到具有在flavor中指定的资源的一个或者多个主机计算机系统,并且将虚拟机部署在满足flavor的主机计算机系统中一个主机计算机系统之上。

在主机中的硬件多线程可以将虚拟机的提供协调制主机计算机系统。在现有技术中,如果超线程(hyperthreading)在主机计算机系统上被启动,则在当针对虚拟机选择主机计算机系统时,可以考虑硬件线程的数量,并且虚拟CPU在无关于物理核的情况下被分配给硬件线程。如果超线程在主机计算机系统上没有被启动,则当针对虚拟机选择主机计算机系统时则仅考虑物理处理器核,并且虚拟CPU仅在当VM在所选择的还是从上被供应时,被分配给物理处理器核。利用诸如POWER(其在每个核中包括多个硬件线程)的现代处理器架构,结果是处理资源的使用非常不充分。

当处理具有分离核的时候,虚拟机的供应可以进一步复杂。分离核处理器是指CPU核可以被分离为多个子核,其可以各自包括多个硬件线程,并且其中子核对于客户操作系统而言表现为核。例如,支持具有8个硬件线程的分离核的核可以被分离为4个子核,每个子核支持2个硬件线程。分离核启用是动态的,这意味着分离可以在主机操作系统上可编程地改变。已知的云管理器并不将分离核处理器与不具有分离核的处理器以任何方式相区别对待。作为结果,已知的云管理器在提供虚拟机时不能认识到使用分离核处理器的优势。

发明内容

根据第一方面,提供了一种装置,包括:至少一个处理器;耦合到所述至少一个处理器的存储器;驻留在所述存储器中并由所述至少一个处理器执行的云管理器,所述云管理器包括:主机监视机构,确定虚拟机可以被部署至的多个主机计算机系统上的可用CPU的数量,并且还确定由所述多个主机计算机系统上的每个CPU支持的硬件线程数量;以及主机选择机构,接收包括虚拟CPU数量和硬件多线程参数的虚拟机(VM)请求,其中所述主机选择机构选择所述多个主机计算机系统中的包括具有满足所述VM请求的硬件线程数量的CPU数量的主机计算机系统。

根据第二方面,提供了一种由至少一个处理器执行的选择用于部署虚拟机的主机计算机系统的计算机实现的方法,所述方法包括:确定虚拟机可被部署至的多个主机计算机系统上的可用CPU的数量;确定由所述多个主机计算机系统上的每个CPU支持的硬件线程数量;接收包括虚拟CPU数量和硬件多线程参数的虚拟机(VM)请求;以及选择所述多个主机计算机系统中的包括具有满足所述VM请求的硬件线程数量的多个CPU的主机计算机系统。

本发明可以被实现为计算机程序。

根据优选实施方式,云管理器监视主机计算机系统上的可用资源,包括主机计算机系统上的由CPU支持的硬件线程数量。云管理器接收供应虚拟机(VM)的请求,该请求包括指定主机计算机系统上所需的硬件多线程的数量的硬件多线程参数。然后云管理器通过考虑硬件多线程参数来为VM选择主机计算机系统。

根据一个实施方式,提供了一种通过使用硬件多线程参数来放置虚拟CPU的解决方案。

根据一个实施方式,本公开一般涉及将虚拟机部署到主机计算机系统,并且更具体地涉及通过使用硬件多线程参数来将虚拟CPU部署到主机计算机系统。

根据一个实施方式,提供了一种用于在具有分离核处理器的主机中使用硬件多线程参数来供应虚拟CPU的解决方案。

根据一个实施方式,本公开一般涉及将虚拟机部署到主机计算机系统,并且更具体地涉及通过使用硬件多线程参数将部署虚拟CPU到包括一个或多个分离核处理器的主机计算机系统。

根据一个实施方式,提供了一种装置,包括:至少一个处理器;耦合到所述至少一个处理器的存储器;驻留在所述存储器中并且由所述至少一个处理器执行的云管理器,所述云管理器包括:主机监视机构,确定虚拟机可以被部署至的多个主机计算机系统上的可用CPU的数量,并且还确定由所述多个主机计算机系统上的每个CPU支持的硬件线程数量;主机选择机构,接收包括虚拟CPU数量和硬件多线程参数的虚拟机(VM)请求,其中所述主机选择机构选择所述多个主机计算机系统中的包括具有满足所述VM请求的硬件线程数量的多个CPU的主机计算机系统;以及虚拟CPU(vCPU)放置机构,使用所述硬件多线程参数在选择的所述主机计算机系统上放置多个虚拟CPU(vCPU)。

根据一个实施方式,提供了一种由至少一个处理器执行的用于在主机计算机系统上部署虚拟机的计算机实现的方法,所述方法包括:确定虚拟机可被部署至的多个主机计算机系统上的可用CPU的数量;确定由所述多个主机计算机系统上的每个CPU支持的硬件线程数量;接收包括虚拟CPU数量和硬件多线程参数的虚拟机(VM)请求;选择所述多个主机计算机系统中的包括具有满足所述VM请求的硬件线程数量的多个CPU的主机计算机系统;以及使用所述硬件多线程参数在选择的所述主机计算机系统上放置多个虚拟vCPU。

根据一个实施方式,提供了一种由至少一个处理器执行的计算机实现的方法,所述方法用于在主机计算机系统上放置多个虚拟CPU(vCPU),所述方法包括:确定CPU的数量,存储器的量,以及可以部署虚拟机的多个主机计算机系统上可用的盘空间的量;确定所述多个主机计算机系统上的每个CPU支持的硬件线程的数量;接收包括以下内容的虚拟机(VM)请求:指定所述VM的存储器的最小量的存储器需求;指定VM的盘的最小量的盘需求;以及CPU需求,其指定用于所述VM的虚拟CPU的数量和硬件多线程参数,其中所述硬件多线程参数的第一值指示硬件多线程被关闭,所述硬件多线程参数的第二值指示硬件线程数量的数值,并且所述硬件多线程参数的第三值指示选择的所述主机计算机系统是在不考虑硬件线程在选择的所述主机计算机系统上是开启还是关闭的情况下被选择的;选择所述多个主机计算机系统中的包括具有满足所述VM请求的硬件线程数量的多个CPU的一个主机计算机系统;以及通过如下方式使用所述硬件多线程参数将所述多个vCPU放置在所选主机计算机系统上:当所述硬件多线程参数指示硬件多线程关闭时,通过将所述VM中的每个vCPU放置在所选主机计算机系统中的不同物理核上;当硬件多线程参数指示硬件线程数量时,将VM中的每个vCPU放置在所选主机计算机系统中的不同硬件线程上。

根据一个实施方式,提供了如上段中所述的方法,还包括通过使用硬件多线程参数来将VM调整大小。

根据一个实施方式,提供了一种装置,包括:至少一个处理器;耦合到所述至少一个处理器的存储器;驻留在所述存储器中并由所述至少一个处理器执行的云管理器,所述云管理器包括:主机监视机构,确定:可以部署虚拟机的多个主机计算机系统上的可用CPU的数量;所述多个主机计算机系统上的每个CPU支持的硬件线程数量;以及针对所述多个主机计算机系统上的每个CPU是否启用分离核;主机选择机构,接收包括以下各项的虚拟机(VM)请求:虚拟CPU数量;以及硬件多线程参数;其中所述主机选择机构选择所述多个主机计算机系统中的包括具有硬件线程数量的多个CPU、以及满足所述VM请求中的虚拟CPU的数量和硬件多线程参数的分离核设置的一个主机计算机系统。

根据一个实施方式,提供了一种由至少一个处理器执行的用于在主机计算机系统上放置多个虚拟CPU(vCPU)的计算机实现的方法,所述方法包括:确定可部署虚拟机的多个主机计算机系统上的可用CPU数量;确定所述多个主机计算机系统上的每个CPU支持的硬件线程的数量;确定所述多个主机计算机系统上的每个CPU是否启用分离核,以及如果是,则确定每个核的子集数量;接收包括虚拟CPU数量和硬件多线程参数的虚拟机(VM)请求;以及选择所述多个主机计算机系统中的包括具有硬件线程数量的多个CPU、以及满足所述VM请求中的虚拟CPU的数量和硬件多线程参数的分离核设置的一个主机计算机系统。

根据一个实施方式,提供了一种由至少一个处理器执行的计算机实现的方法,所述方法用于在主机计算机系统上放置多个虚拟CPU(vCPU),所述方法包括:确定CPU的数量,存储器的量,以及可以部署虚拟机的多个主机计算机系统上可用的盘空间的量;确定所述多个主机计算机系统上的每个CPU支持的硬件线程的数量;确定所述多个主机计算机系统上的每个CPU是否启用分离核;接收包括以下内容的虚拟机(VM)请求:指定所述VM的存储器的最小量的存储器需求;指定VM的盘的最小量的盘需求;以及CPU需求,其指定用于所述VM的虚拟CPU的数量和硬件多线程参数,其中所述硬件多线程参数的第一值指示硬件多线程被关闭,所述硬件多线程参数的第二值指示硬件线程数量的数值,并且所述硬件多线程参数的第三值指示选择的所述主机计算机系统是在不考虑硬件线程在选择的所述主机计算机系统上是开启还是关闭的情况下被选择的;包括具有硬件线程数量的多个CPU、以及满足所述VM请求中的虚拟CPU的数量和硬件多线程参数的分离核设置的一个主机计算机系统;以及通过如下方式使用所述硬件多线程参数以及选择的主机计算机系统的分离核设置,将所述多个vCPU放置在所选主机计算机系统上:当所述硬件多线程参数指示硬件多线程关闭时,通过将所述VM中的每个vCPU放置在所选主机计算机系统中的不同物理核上;当硬件多线程参数指示硬件线程数量并且所选择计算机系统的分离核设置被启用时,将VM中的每个vCPU放置在所选主机计算机系统中的不同硬件线程上。

根据一个实施方式,云管理器监视主机计算机系统上的可用资源,包括由主机计算机系统上的CPU支持的硬件线程数量。云管理器接收供应虚拟机(VM)的请求,该请求包括指定在主机计算机系统上是否允许硬件多线程的硬件多线程参数。然后云管理器通过考虑硬件多线程参数为VM选择主机计算机系统。然后通过使用硬件多线程参数将VM放置在所选主机计算机系统上。

根据一个实施方式,云管理器监视主机计算机系统上的可用资源,包括主机计算机系统上由CPU支持的硬件线程数量以及CPU是否启用分离核。云管理器接收供应虚拟机(VM)的请求,该请求包括指定在主机计算机系统上是否允许硬件多线程的硬件多线程参数。然后,云管理器通过考虑硬件多线程参数、CPU支持的硬件线程和分离核设置,来为VM选择主机计算机系统。然后通过使用硬件多线程参数将VM放置在所选主机计算机系统上。结果是更有效地利用虚拟机的主机中的CPU资源。

根据如附图所示的以下更具体的描述,前述和其他特征和优点将是显而易见的。

附图说明

将参见下文的附图,仅借助于示例方式描述本发明的实施方式。相似的附图表示表示相似的元件:

图1是根据本发明的一个优选实施方式的云计算节点的框图;

图2是根据本发明的一个优选实施方式的云计算环境的框图;

图3是根据本发明的一个优选实施方式的抽象层模型层的框图;

图4是示出根据本发明的一个优选实施方式的云管理器的某些特征的框图;

图5是示出根据本发明的一个优选实施方式的云VM请求的某些特征的框图;

图6是根据本发明的一个优选实施方式的用于登记在潜在主机计算机系统系统上的可用资源的云管理器的方法的流程图;

图7是根据本发明的一个优选实施方式的云管理器用以在主机计算机系统上供应VM的方法的流程图;

图8是现有技术的x86双核CPU的框图;

图9是云管理器用以针对VM请求选择主机的现有技术方法的流程图;

图10是示出在现有技术云VM请求中如何指定CPU需求的框图;

图11是根据本发明的一个优选实施方式的示出三个x86双核处理器的潜在主机计算机系统的框图;

图12是根据本发明的一个优选实施方式的示出包括可以被分配至图11中的潜在主机的vCPU的虚拟机的框图;

图13是示出在主机计算机系统中的物理核上放置vCPU的现有技术方法的流程图;

图14是根据本发明的一个优选实施方式的示出六个核中的两个的Power8六核CPU的架构的框图;

图15是根据本发明的一个优选实施方式的用于使用多线程参数来选择主机以及控制主机上的vCPU放置的方法的流程图;

图16是根据本发明的一个优选实施方式的包括vCPU的数量以及硬件多线程参数的示例CPU需求;

图17是根据本发明的优选实施方式的包括硬件多线程参数的第一样本CPU需求;

图18示出了根据本发明的优选实施方式的满足图17中的CPU需求的潜在Power8主机;

图19示出了根据本发明的优选实施方式的包括硬件多线程参数的第二样本CPU需求;

图20示出了根据本发明的优选实施方式的满足图19中的CPU需求的潜在Power8主机;

图21示出了根据本发明的优选实施方式的包括硬件多线程参数的第三样本CPU需求;

图22示出了根据本发明的优选实施方式的满足图21中的CPU需求的潜在Power8主机;

图23示出了根据本发明的优选实施方式的包括硬件多线程参数的第四样本CPU需求;

图24示出了根据本发明的优选实施方式的满足图23中的CPU需求的潜在Power8主机;

图25是根据本发明的优选实施方式的用于选择满足包括硬件多线程参数的CPU需求的主机的方法的流程图;

图26是使用硬件多线程参数在所选主机计算机系统上放置vCPU的方法的流程图;

图27是根据本发明的优选实施方式的示出针对每个潜在主机收集的主机级统计的框图;

图28是根据本发明的优选实施方式的示出可以在OpenStack flavor中实现以指定硬件多线程参数的额外规范的框图;

图29是用于对可包括硬件多线程参数的现有VM执行调整大小(resize)操作的方法的流程图;

图30是示出了使用分离核的Power8六核CPU的架构的框图,其示出了六个核中的两个;

图31是包括vCPU的数目和硬件多线程参数的样本CPU需求;

图32是包括硬件多线程参数的第一样本CPU需求;

图33示出了满足图32中的CPU需求的潜在Power8主机;

图34示出了包括硬件多线程参数的第二样本CPU需求;

图35示出了满足图34中的CPU需求的潜在Power8主机;

图36示出了包括硬件多线程参数的第三样本CPU需求;

图37示出了满足图36中的CPU需求的潜在Power8主机;

图38示出了包括硬件多线程参数的第四样本CPU需求;

图39示出了满足图38中的CPU需求的潜在Power8主机;

图40是用于当主机具有分离核的时候选择满足CPU需求的主机并且负责的方法的流程图,该CPU需求包括硬件多线程参数;

图41是示出过滤器的框图,该过滤器用于当硬件多线程参数被设置为4或8时可用于过滤出已经启用分离核模式的主机;以及

图42是用于当主机具有分离核的时候使用硬件多线程参数在所选主机计算机系统上放置vCPU并且负责的方法的流程图。

具体实施方式

云管理器监视主机计算机系统上的可用资源,包括由主机计算机系统上的由CPU支持的多个硬件线程以及CPU是否启用的分离核。云管理器接收供应虚拟机(VM)的请求,该虚拟机包括硬件多线程参数,该硬件多线程参数指定在主机计算机系统上是否允许硬件多线程(或者在一个实施方式中,在主机计算机系统上所需的硬件多线程的数量)。然后,云管理器通过考虑硬件多线程参数、由CPU支持的硬件线程和分离核设置,来为VM选择主机计算机系统。然后,使用硬件多线程参数将VM放置在所选主机计算机系统上。结果是更有效地利用主机中的CPU资源来用于虚拟机。

首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其他类型的计算环境而实现。

云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。

特征包括:

按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。

广泛的网络接入:计算能力可以通过标准机构在网络上获取,这种标准机构促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。

资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。

迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。

可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。

服务模型如下:

软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。

平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。

基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。

部署模型如下:

私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。

共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全需求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。

公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。

混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。

云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核是包含互连节点网络的基础架构。

现在参考图1,其中显示了云计算节点的一个例子的框图。图1显示的云计算节点100仅仅是适合的云计算节点的一个示例,不应对本发明实施方式的功能和使用范围带来任何限制。总之,云计算节点100能够被用来实现和/或执行以上所述的任何功能。

云计算节点100具有计算机系统/服务器110,其可与众多其他通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器110一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、桌面计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。

计算机系统/服务器110可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器110可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

如图1所示,云计算节点100中的计算机系统/服务器110以通用计算设备的形式表现。计算机系统/服务器110的组件可以包括但不限于:一个或者多个处理器或者处理单元120,系统存储器130,连接不同系统组件(包括系统存储器130和处理单元120)的总线122。

总线122表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机系统/服务器110典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器110访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。图1示出可移除介质的一个示例,其包括数字视频盘(DVD)192。

系统存储器130可以包括诸如固件132的易失性或非易失性存储器形式的计算机系统可读介质。固件132提供到计算机系统/服务器110的硬件的接口。系统存储器130还可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)134和/或高速缓存存储器136。计算机系统/服务器110可以进一步包括其他可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统140可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线122相连。存储器130可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施方式的功能,如下文所详细地描述的。

具有一组(至少一个)程序模块42的程序/实用工具150,可以存储在存储器130中,这样的程序模块152包括但不限于操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块152通常执行本发明所描述的实施方式中的功能和/或方法。

计算机系统/服务器110也可以与一个或多个外部设备190(例如键盘、指向设备、显示器180、磁盘驱动器等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器110交互的设备通信,和/或与使得该计算机系统/服务器110能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口170进行。并且,计算机系统/服务器110还可以通过网络适配器160与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器160通过总线122与计算机系统/服务器110的其他模块通信。应当明白,尽管图中未示出,其他硬件和/或软件模块可以与计算机系统/服务器110一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、独立磁盘冗余阵列(RAID)系统、磁带驱动器以及数据备份存储系统等。

现在参考图2,其中显示了示例性的云计算环境200。如图所示,云计算环境200包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点100,本地计算设备例如可以是个人数字助理(PDA)或移动电话210A,台式电脑210B、笔记本电脑210C和/或汽车计算机系统210N。云计算节点100之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点100进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境200提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图2显示的各类计算设备210A-N仅仅是示意性的,云计算节点100以及云计算环境200可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。

现在参考图3,其中显示了云计算环境200(图2)提供的一组功能抽象层。首先应当理解,图3所示的组件、层以及功能都仅仅是示意性的,本发明的公开和权利要求不限于此。如图3所示,提供下列层和对应功能:

硬件和软件层310包括硬件和软件组件。硬件组件的例子包括:主机,例如System系统;基于RISC(精简指令集计算机)体系结构的服务器,例如IBM System系统;IBM System x系统;IBM BladeCenter系统;存储设备;网络和网络组件。软件组件的例子包括:网络应用服务器软件,例如IBM应用服务器软件;数据库软件,例如IBM数据库软件。(IBM,System z,System p,WebSphere以及DB2是国际商业机器公司在全世界各地的注册商标)。

虚拟层320提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作系统,以及虚拟客户端。

在一个示例中,管理层330可以提供下述功能:资源供应功能:提供用于在云计算环境中执行任务的计算资源和其他资源的动态获取;计量和定价功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其他资源提供保护。用户门户功能:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。云管理器350是如下面更详细描述的云管理器的示例。虽然图3中示出的云管理器350驻留在管理层330中,云管理器350还可以跨越图3所示的所有级别。

工作负载层340提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;交易处理;以及移动桌面。

本发明可以是系统,方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或介质),用于使处理器执行本发明的各方面。

计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备,磁存储设备,光存储设备,电磁存储设备,半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下:便携式计算机磁盘,硬盘,随机存取存储器(RAM),只读存储器(ROM),可擦除可编程只读存储器只读存储器(EPROM或闪存),静态随机存取存储器(SRAM),便携式光盘只读存储器(CD-ROM),数字通用盘(DVD),存储棒,软盘,编码设备,例如在其中记录有指令的凹槽中的穿孔卡或凸起结构,以及前述的任何合适的组合。如本文所使用的,计算机可读存储介质不应被解释为是暂态信号本身,诸如无线电波或其他自由传播的电磁波,通过波导或其他传输介质传播的电磁波(例如,光脉冲通过光纤电缆)或通过导线传输的电信号。

在此描述的计算机可读程序指令可以经由网络从计算机可读存储介质或外部计算机或外部存储设备下载到相应的计算/处理设备,该网络例如是因特网,局域网,广域网区域网络和/或无线网络。网络可以包括铜传输电缆,光传输光纤,无线传输,路由器,防火墙,交换机,网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令,机器指令,机器相关指令,微代码,固件指令,状态设置数据或源代码或目标代码以一种或多种编程语言(包括诸如Smalltalk,C++等的面向对象的编程语言,和诸如“C”编程语言或类似的编程语言之类的常规过程编程语言)的任何组合编写。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立软件包执行,部分在用户的计算机上执行,部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机例如,通过使用因特网服务提供商的因特网)。在一些实施方式中,包括例如可编程逻辑电路,现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可通过利用计算机可读程序指令的状态信息,来执行计算机可读程序指令以将电子电路个性化,以便执行本发明的实施方式。

在此参考根据本发明实施方式的方法,装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各方面。应当理解,流程图和/或框图的每个块以及流程图和/或框图中的块的组合可以由计算机可读程序指令来实现。

这些计算机可读程序指令可以被提供给通用计算机,专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机的处理器或其他可编程数据处理装置创建用于实现流程图和/或框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以指示计算机,可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的方面的指令的制造品。

计算机可读程序指令还可以加载到计算机,其他可编程数据处理装置或其他设备上,以使得在计算机,其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的使得在计算机,其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个方框中指定的功能/动作。

附图中的流程图和框图示出了根据本发明的各种实施方式的系统,方法和计算机程序产品的可能实现的架构,功能和操作。在这点上,流程图或框图中的每个块可以表示指令的模块,段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,在框中标注的功能可以不按照附图中所示的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本同时执行,或者这些块有时可以以相反的顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现,执行特殊用途硬件和计算机指令的组合。

图4示出了图3所示的云管理器350的一个合适的示例。云管理器350包括云供应机构410,其包括资源请求接口420。资源请求接口420允许软件实体从云管理器350请求虚拟机而无需人工干预。云管理器350还包括用户接口430,其允许用户与云管理器交互以执行任何合适的功能,包括VM的提供,VM的析构,云的性能分析等。资源请求接口420以及用户接口430之间的差异是,用户必须手动使用用户接口430来执行由用户指定的功能,而资源请求接口420可以由软件实体用来请求由云机构350提供云资源而无需来自人类用户的输入。

云管理器350还包括监视在潜在主机计算机系统上可用的资源的主机监视机构440,因而云管理器350可以将针对VM的指定资源与潜在主机计算机系统上具有的可用资源进行比较。主机选择机构450允许基于将所请求的VM的指定资源与潜在主机计算机系统上的可用资源进行比较,来选择潜在的主机计算机系统。vCPU放置机构460通过使用硬件多线程参数,将vCPU放置在选定的主机计算机系统上。VM调整大小机构470允许以使用硬件多线程参数的方式调整现有VM的大小,即使当原始VM不使用硬件多线程参数时也是如此。

图5示出了可以经由资源请求接口420或经由图4中的云供应机构410上的用户接口430而提交的云VM请求510的一个合适的示例,该云VM请求510用以请求由云管理器350提供VM。云VM请求510可以包括对VM上所需资源的需求的任何规范。合适的需求的示例包括存储器需求520,盘需求530和CPU需求540。存储器需求520指定VM所需的存储器量。盘需求530指定VM所需的盘的量。CPU需求540指定VM所需的虚拟CPU的数量,并且还可以指定硬件多线程参数,如下面更详细地讨论的。当然,可以为VM指定图5中未示出的其他需求,例如网络需求和任何其他合适的需求。在现有技术中,OpenStack将称为“flavor”的事物用作云VM请求,其指定对VM上的资源的最小需求。

如图6所示,方法600优选地由图4中的主机监视机构440执行,其用以监视潜在主机计算机系统上的可用资源。确定(步骤610)潜在主机计算机系统上的可用资源并记录(步骤620)。实现方法600的一种已知方式是,使用驱动器查询主机以确定其可用资源。

参考图7,方法700通过接收云VM请求开始(步骤710)。然后将云VM请求中的资源需求与潜在主机计算机系统上的可用资源进行比较(步骤720)。注意,可以从在图6的步骤620中创建的日志中读取步骤720中的可用资源。然后选择具有满足云VM请求中的资源需求的资源的主机(步骤730)。然后,将VM部署在所选主机计算机系统上(步骤740)。

许多现代处理器(或CPU)包括多个处理核。多核处理器的一个示例是图8所示的x86的双核CPU 810。x86双核CPU 810包括具有两个硬件线程822和824的第一核820、和具有两个硬件线程842和844的第二核840。每个核上的多个硬件线程的存在可以向主机计算机系统供应VM中产生挑战。在现有技术中,通常忽略多核CPU中的硬件线程的数量,仅考虑物理核。例如,图9中的现有技术方法900读取云VM请求(步骤910),然后选择具有满足云VM请求中的vCPU数量的多个物理核的主机(步骤920)。如图10所示的现有技术的CPU需求1010指定VM中的虚拟CPU(vCPU)的数量,并且是图5所示的CPU需求540的一个适当示例。因为在为VM选择主机时方法900仅使用物理核,所以核上的多个硬件线程将利用不足,从而没有利用可用的CPU资源。在其他现有技术中,当启用主机的超线程时考虑硬件线程的数量,并且执行vCPU到硬件线程的放置而不考虑物理核。这种方法可能导致无效的VM,因为一些工作负载受益于利用不同核上的线程,而其他工作负载则针对同一核而由线程更好地服务。

图9中的步骤920可以包括用于选择满足VM请求的主机计算机系统的任何合适的准则或试探。例如,物理核的数量可以按照一些过量比率(overcommit ratio)例如2.0增加。因此,如果主机具有三个物理核可用,则将三个物理核乘以2.0的过量比率将导致可用处理器数为6,这意味着在主机上可以部署需要六个vCPU的VM,而不能部署需要七个vCPU的VM。下文将说明一个简单的例子。

图11表示包括三个双核x86CPU的样本潜在主机计算机系统。我们假设这个主机已经使得图12所示的VM1运行于其上,该VM1被被部署到CPU1中的两个物理核和CPU2中的两个物理核中的第一个,如图12中那些核中的阴影所示。我们进一步假定图12中所示的VM2需要被部署。确定可用核的数量,对于图11中的示例而言是九个,即六个核乘以过量比率2减去由图11中所示的潜在主机1中的VM1使用的三个核。因为VM2需要两个vCPU,并且潜在主机1具有9个可用核,所以潜在主机1是图12所示的VM2的有效潜在主机。

注意,将vCPU实际放置到潜在主机上是独立于选择用于VM的潜在主机的单独步骤。参考图13,方法1300通过读取云VM请求开始(步骤1310)。然后将云VM请求中的vCPU放置在物理核上(步骤1320)。在图11中,CPU1的第一核和第二核的线程T1和CPU2的第一核被阴影示出,以指示图12所示的VM1中的三个vCPU已经被放置在这三个相应的核上。但请注意,放置不是静态的。在不同的时间,vCPU可以在任何活动核上的任何硬件线程上运行。通过使用超线程,在分配的三个双核中共有12个硬件线程。VM1需要3个这样的线程,并为VM留下9个。然而,vCPU被分配给任何线程,这可能意味着:共享存储器的操作系统线程中运行的工作将最好在相同vCPU的硬件线程中运行,而在独立的操作系统线程中运行的工作更好地在不同的核中的硬件线程中运行。因此,现有技术在针对VM识别潜在主机的方式以及在所选主机上运行VM的方式中导致低效率,这是因为VM到潜在主机的分配当前不考虑CPU上的核和硬件线程之间的差异。

现有技术识别物理处理器核或硬件线程,但不能将两者识别为虚拟CPU可以部署到的实体。在没有超线程的情况下,如图8所示的单个双核CPU具有两个可用的CPU,其形式为vCPU可以被部署到的两个物理核820和840。利用超线程,单个双核CPU可以支持更多的vCPU;然而,vCPU是否由相同物理核或不同核上的硬件线程运行不是确定性的。通过认识到vCPU需要被分配至多个硬件线程而不仅仅是单个物理核或单个硬件线程,本文的公开内容和权利要求创建了更精细的粒度级别。

当硬件线程的数量增加时,vCPU被分配给单个硬件线程或核的问题加剧。对于图8和11所示的x86双核CPU,超线程导致每个核两个线程。对于具有更多硬件线程的处理器,问题变得更加明显。例如,图14中示出的Power8 6核CPU 1410以包括第一核1420(包括八个硬件线程1432,1434,1436,1438,1442,1444,1446和1448)以及第二核1450(还包括八个硬件线程1462,1464,1466,1468,1472,1474,1476和1478。在图14中未示出四个其他核,但是类似于所示的两个核。当基于如图9中的现有技术方法900所示的物理核的数目选择主机时,很多硬件线程会被不使用。因此,如果两个vCPU被部署到图14所示的两个核1420和1450,结果将浪费每个核上的八个硬件线程中的七个。最终结果是在任何给定时间点将仅使用用于两个核的16个线程中的两个,这浪费了十六个硬件线程中的十四个。这意味着可以使用图9中所示的现有技术方法900来利用Power8核中的两个核上的十六(12.5%)个可用处理资源中的两个。备选地,如果在每个核具有许多硬件线程时将vCPU分配给硬件线程,则具有需要高并行度和共享存储器的工作负载的VM将通过位于与其他vCPU相同的物理核上而不是分布在许多物理核上,而获得更好的性能。

为了避免如上文参考图14所描述的跨越物理核上分布的vCPU的问题或许多未使用线程的问题,识别潜在主机和部署VM的新方式基于如下原则,通过使用云VM请求中的硬件多线程参数来考虑硬件线程,该原则是vCPU可以被分配给物理核内的多个硬件线程而不仅仅是物理核核或单个硬件线程。这是通过使用云VM请求中涉及硬件多线程的新参数来完成的。对于本文的具体示例,该硬件多线程参数被称为“SMT”参数,其表示对称多线程,这是本领域中用于描述CPU上的硬件多线程的已知术语。参考图15所示,方法1500通过使用云VM请求中的SMT参数、以及在一个实施方式中与关于每个核的硬件线程的数量和分离核设置的主机有关的信息来开始,以选择主机计算机系统(步骤1510)。一旦选择了主机计算机系统,当在所选主机上部署VM时,可以使用云VM请求中的相同SMT参数来对vCPU做出布置决定(步骤1520)。在一个实施方式中,当在所选主机上部署VM时,关于主机的涉及每个核的硬件线程的数量和分离核设置的信息也可以用于做出vCPU的布局决定(步骤1520)。

图10示出了用于云VM请求的现有技术CPU需求1010,其包括指定VM上所需的vCPU1020的数量。根据本文的公开和权利要求的图16中所示的云VM请求1610包括vCPU 1620的数量,但是另外包括硬件多线程(SMT)参数1630。SMT参数的值可以为零,指示硬件多线程被关闭,或者可以是数字2的幂用于表示硬件线程数。一些例子将被示出。参考图17,CPU需求1610A是图16所示的CPU需求1610的一个合适示例,并且包括2个vCPU 1720和具有值为2的SMT参数1730。对于具有如图14所示的Power8 6核CPU 1410的潜在主机,该潜在主机将具有使用两个线程的一个核,导致六个未使用的线程,如图18所示。

图19中的第二CPU需求1610B是图16所示的CPU需求1610的另一个合适的示例,并且包括2个vCPU 1920和具有在1930处的指示硬件多线程被关闭的值的SMT参数。在硬件多线程被关闭的情况下,对于具有如图14所示的Power8 6核CPU 1410的潜在主机,该潜在主机将具有两个核,在每个核中使用一个线程,导致两个核中的十四个未使用的线程,如图20所示。注意,当禁用超线程时,因为当禁用主机超线程时现有技术的CPU需求1010不考虑任何硬件多线程,因而具有被关闭的SMT参数的图19中的CPU需求1610B的潜在主机的净结果与图10所示的现有技术CPU需求1010相同。在现有技术中,如果启用超线程,则不可预测哪个核的硬件线程将处理vCPU。考虑硬件多线程通过指定用于硬件多线程参数的值,可以减少潜在主机上未使用的硬件线程的数量,并且可以控制在同一个核上运行哪些vCPU。

图16-19中的示例显示了硬件多线程参数如何针对怎样部署vCPU给出更多控制。例如,如果具有2个vCPU的VM将运行对相同数据进行操作的作业,则可能期望2个vCPU被部署到同一核中的两个不同硬件线程,如图17和18中的示例所示,这是因为在同一个核上运行的两个线程将对核可用的高速缓存存储器具有非常高性能的访问。如果具有2个vCPU的VM将运行彼此独立的作业,则可能期望2个vCPU被部署到两个不同的核,如图19和20中的示例所示。

图21中的第三CPU需求1610C是图16所示的CPU需求1610的另一个合适的示例,并且包括8个vCPU 2120和在2130处的值为8的SMT参数。对于具有如图14所示的Power8 6核CPU 1410的潜在主机,潜在主机将具有使用所有八个线程的一个核,导致没有未使用的线程,如图22所示。

图23中的第四CPU需求1610D是图16所示的CPU需求1610的另一个合适的示例,并且包括12个vCPU 2320和在2330处的具有值4的SMT参数。对于具有如图14所示的Power8 6核CPU 1410的潜在主机,潜在主机将具有三个核,其中每个核中使用四个线程,导致十二个未使用的线程,如图24所示。这些简单的示例示出了在选择主机计算机系统中如何指定硬件多线程参数提供对怎样将vCPU部署到主机计算机系统的控制。

注意图17-24中所示的示例假设vCPU可以部署到每个可用的线程。上面关于图9-12讨论了“过量比率”,以将CPU的数量增加一些量。在根据本文的公开和权利要求,选择主机计算机系统中可以应用类似的过量比率。

参考图25,方法2500在指定硬件多线程参数时选择主机,如图16、17、19、21和23所示。读取云VM请求(步骤2510)。当SMT参数为OFF(关闭)时(步骤2520=是),选择具有满足云VM请求中的vCPU数量的多个物理核的主机(步骤2530)。注意,步骤2530类似于图9中的现有技术方法900中的步骤920。当SMT参数为ON(开启)(步骤2520=否)时,选择具有满足如下的主机,该主机的每个核的线程数量满足在SMT参数中的数量、以及核的数量满足云VM中的vCPU数量除以在SMT参数中指定的线程数(步骤2540)。这是选择具有满足云VM请求中的vCPU数量的多个硬件线程的主机的一种具体方式。然后方法2500完成。

一旦选择了主机计算机系统,则可以将VM的vCPU放置在所选择的主机上。参考图图26,当vCPU需要被放置在所选择的主机上时,方法2600开始(步骤2610)。当SMT参数为关闭时(步骤2620=是),每个vCPU被放置在不同的物理核上(步骤2630)。当SMT参数为开启时(步骤2620=否),vCPU可被放置在同一物理核上的不同硬件线程上(步骤2640)。然后方法2600完成。

利用云VM请求中的硬件多线程参数,云管理器不仅必须知道潜在主机中的CPU中的物理核的数量,而且还必须知道潜在主机中的CPU支持的线程的数量。这是为了确保主机的单个核可以支持为云VM请求指定的线程数。再次参考图6,这意味着在步骤610中确定可用资源不仅包括确定可用CPU核,而且还确定这些CPU核上的多个线程是否可用。实现这一点的一种方式是:作为图6中的步骤610中的可用资源的一部分来收集由主机计算机系统支持的最大SMT设置。这种情况的一个示例在图27示出,其中max_guest_smt表示由图4中的主机监视机构440收集的值,以指示潜在的主机计算机系统是否支持硬件多线程。max_guest_smt的可能值为0,表示主机计算机系统上的SMT关闭,数字2的幂指示每个CPU上可用的硬件线程数。当主机计算机系统中的所有CPU都是相同类型时,max_guest_smt将是应用于主机计算机系统中所有CPU的单个值。当主机计算机系统包括具有不同数量的硬件线程的不同类型的CPU时,对于主机计算机系统中的每个CPU可能存在不同的max_guest_smt值。

OpenStack当前没有任何现有的支持来帮助指定客户CPU的期望拓扑。实现本文所讨论的硬件多线程参数的添加的一种方式是向OpenStack flavor添加附加规范,如图28所示。参数powerkvm:smt是OpenStack flavor中的新参数,其指定客户VM的期望SMT值。注意,此参数的可能值为-1,表示“不关心”;零,表示SMT关闭;或数字2的某个幂。通过在max_guest_smt设置中包括收集关于潜在主机上的硬件多线程的信息的能力以及在OpenStackflavor中指定期望级别的硬件多线程的能力,本文的公开内容和权利要求提供了用于选择潜在其上部署VM的主机计算机系统并且以更好地利用主机计算机系统的硬件多线程能力的方式部署这些VM,从而提高主机计算机系统上的CPU资源的利用率。

本文所讨论的硬件多线程参数也可以用于VM调整大小操作。有时虚拟机需要有更多或更少的资源,因此可以将其调整大小以添加或减少部署到虚拟机的资源。将VM调整大小的一种适当方法是指定一个OpenStack flavor,以改变对VM的资源分配。当将VM调整大小时,OpenStack flavor可以具有上面讨论的powerkvm:smt参数并且如图28所示。图29示出了用于将VM调整大小的方法2900,其优选地由图4所示的VM调整大小机构470执行。读取用于现有VM的调整大小操作的flavor(步骤2910)。在步骤2910中引用的flavor是具有对VM的新的(即,调整大小的)资源分配的flavor。当flavor不包括SMT参数(步骤2920=否)时,VM的SMT参数被设置为OFF(步骤2930)。当flavor包括SMT参数(步骤2920=是)时,当SMT参数的值为OFF或“不关心”(步骤2940=是)时,VM的SMT参数被设置为OFF(步骤2930)。当flavor中的SMT具有2的幂的值时(步骤2940=否),VM的SMT参数被设置为在flavor中指定的SMT的值(步骤2950)。然后方法2900结束。方法2900实际上允许“改进”现有VM以使用SMT参数的方式。

Power8 6核CPU支持子核,这意味着当启用分离核时,每个核中的八个线程可以被分离成两个线程的子核。具有分离核启用的Power8 6核CPU 3010在图30中示出,以包括被划分为四个子核3022、3024、3026和3028的第一核3020,和被划分为四个子核3052、3054、3056和3058的第二核3050。图30中未示出四个其他核,但是类似于所示的两个核。每个子核具有两个硬件线程,如图30所示。通过将每个核划分成子核,子核而不是核可以被分配给虚拟机,这导致节省大量未使用的硬件线程。

当存在分离核主机时,云管理器能够确定用于VM的主机是否支持分离核,这将是有利的。参考图31,CPU需求3110优选地是图5所示的云VM请求510的一部分。CPU需求3110规定vCPU 3120的数量和硬件多线程参数3130。下文的示例示出了分离核如何影响主机的选择和在该主机上放置vCPU。

在图32中,CPU需求3110A是图31所示的CPU需求3110的一个合适示例,并且包括2个vCPU 3220和具有值为2的SMT参数3230。对于具有如图30所示的具有启用分离核的Power8 6核CPU 3010的潜在主机,该潜在主机将具有使用两个线程的一个子核,导致可以被其他VM使用的三个子核,如图33所示。

图34中的第二CPU需求3110B是图31所示的CPU需求3110的另一个合适的示例,并且包括2个vCPU 3420和在3430处设置为OFF的值的SMT参数。在关闭硬件多线程的情况下,对于具有如图30所示的启用了分离核的Power8 6核CPU 3010的潜在主机,该潜在主机将具有两个子核,每个子核中使用一个线程,导致每个子核中一个未使用的线程,以及可由其他VM使用的两个子核,如图35所示。

图36中的第三CPU需求3110C是图31所示的CPU需求3110的另一个合适的示例,并且包括8个vCPU 3620和在3630处具有值为2的SMT参数。对于具有值为2的硬件多线程参数,对于具有如图30所示的启用分离核的Power8 6核CPU 3010的潜在主机,潜在主机将具有四个子核,每个子核中使用两个线程,导致没有线程未使用,如图37所示。在一个具体实现中,全部八个vCPU可以被放置在相同物理核的全部八个线程(四个子核)上。当然,备选地,图37中的四个子核可以被放置在两个或者更多物理核上。

图38中的第四CPU需求3110D是图31所示的CPU需求3110的另一个合适的示例,并且包括12个vCPU 3820和在3830处的具有值为2的SMT参数。对于具有值为2的硬件多线程参数,对于具有如图30所示的启用分离核的Power8 6核CPU 3010的潜在主机,该潜在主机将具有六个子核,其中在每个子核中使用两个线程,并且没有任何子核的线程未使用,如图39所示。在一个具体实现中,十二个vCPU中的八个可以放置在同一物理核的所有八个线程(四个子核)上,并且剩余的四个vCPU可以放置在不同物理核中的两个子核中的四个线程。当然,在替代方案中,图39中的六个子核可以放置在三个或更多个物理核上。

图32、34、36和38中的CPU需求的所有示例被用于主机启用分离核的情况。当主机具有禁用的分离核时,除了主机将具有分离核被禁用的设置之外,结果类似于上文图17-24中所示的示例。

图32、36和38中的示例都具有值为2的SMT参数。由于Power8子核包含两个线程,因此在SMT参数中指定两个线程提供在Power8CPU上最有效地放置vCPU。但请注意,SMT参数可能大于子核上的线程数。例如,如果图36中的3630处的SMT参数被设置为值4,则具有两个线程的子核的主机将不满足请求。因此,当SMT设置超过用于子核的线程数时,不具有分离核的主机不是潜在主机。

参考图40,方法4000示出了使用云VM请求的主机计算机系统的选择,该云VM请求包括考虑了在主机计算机系统上是否启用分离核的硬件多线程参数。方法4000优选地由图4所示的主机选择机构450执行。读取云VM请求(步骤4010)。当SMT关闭(步骤4020=是)并且潜在主机已经启用分离核(步骤4030=是)时,如果潜在主机具有满足云VM请求中的vCPU数量的多个子核则可以选择潜在主机(步骤4040)。当SMT关闭(步骤4020=是)并且潜在主机已经禁用分离核时(步骤4030=否),如果潜在主机具有满足云VM中的vCPU数量的多个物理核,则可以选择该潜在主机(步骤4050)。当SMT为ON(步骤4020=否)且潜在主机已启用分离核时(步骤4060=是),如果子核的硬件线程数目可以满足在SMT参数中指定的硬件线程数、并且子核的数可以满足云VM请求中的vCPU的数量除以SMT参数中指定的硬件线程的数量(步骤4070),则可以选择潜在主机。当SMT为ON(步骤4020=否)并且潜在主机具有禁用的分离核(步骤4060=否)时,如果核的硬件线程的数量可以满足在SMT参数中指定的硬件线程数量、并且如果物理核的数量可以满足云VM请求中的vCPU的数量除以SMT参数中指定的硬件线程的数量,则可以选择潜在主机(步骤4080)。注意,优选地对于每个潜在主机重复方法4000,这可以形成潜在主机池,可以使用任何合适的标准或试探来从其中选择主机中的一个。例如,可以选择具有启用的分离核的主机而不是具有禁用分离核的主机,此时在VM请求导致CPU核和线程的更有效使用。方法4000示出了硬件多线程参数和来自主机的关于每个核的分离核设置和硬件线程的信息如何对主机计算机系统的选择给出更好的控制,这将导致更有效地放置vCPU。

如图41所示,可以使用过滤器PowerKVMSMTFilter,使得当在SMT=4或SMT=8的情况下请求VM时,云管理器过滤掉已经启用分离核模式的主机。此过滤器可以帮助云管理器更快地缩减VM的潜在主机数量。

参考图42,当vCPU需要被放置在所选择的主机上时,方法4200开始(步骤4210)。方法4200优选地由图4所示的vCPU放置机构460执行。当SMT关闭(步骤4220=是)并且在主机上启用分离核时(步骤4230=是),vCPU被放置在不同的子核上(步骤4240)。当SMT关闭(步骤4220=是)并且主机上禁用分离核时(步骤4230=否),vCPU被放置在不同的物理核上(步骤4250)。当SMT开启(步骤4220=否)并且在主机上启用分离核时(步骤4260=是),vCPU被放置在子核的线程上(步骤4270)。当SMT为ON(步骤4220=否)并且在主机上禁用分离核时(步骤4260=否),vCPU被放置在同一物理核的线程上(步骤4280)。注意,如果vCPU的数量超过物理核中的线程数量,则vCPU将被放置在为所有vCPU提供所需数量的硬件线程的多个核上。方法4200示出如何通过指定硬件多线程参数并使用关于分离核设置的信息对主机计算机系统上的vCPU的放置给出更好控制。

为了支持通过考虑在云VM请求中的分离核和硬件多线程参数来放置VM,云管理器必须不但知道潜在主机中的CPU中的物理核的数量,而且还必须知道由潜在主机中的CPU支持的线程的数量,以及潜在主机上是否启用分离核。再次参考图6,这意味着在步骤610中确定可用资源不仅包括确定可用CPU核,而且还包括这些CPU核上的多个线程是否可用,以及在这些核上是否启用分离核。实现这一点的一种方式是,作为图6中的步骤610中的可用资源的一部分,收集在潜在的主机计算机系统上是否启用分离核。

云管理器监视主机计算机系统上的可用资源,包括主机计算机系统上由CPU支持的硬件线程数量,并且在一个实施方式中,包括CPU是否已经启用分离核。云管理器接收供应虚拟机(VM)的请求,该请求包括硬件多线程参数,该参数指定在主机计算机系统上是否允许硬件多线程(或者在一个实施方式中,主机计算机系统上所需的硬件多线程的数量)。在一个实施方式中,云管理器然后通过考虑硬件多线程参数,为VM选择主机计算机系统。在另一个实施方式中,云管理器然后通过考虑硬件多线程参数、CPU支持的硬件线程和分离核设置,来选择用于VM的主机计算机系统。然后使用硬件多线程参数将VM放置在所选主机计算机系统上。结果是更有效地利用虚拟机的主机中的CPU资源。

本领域技术人员将理解,在权利要求的范围内的许多变化是可能的。因此,虽然上面具体示出和描述了本公开,但是本领域技术人员将理解,在不脱离权利要求的精神和范围的情况下,可以在形式和细节上执行这些和其他改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号