CPU超载设置和云计算工作负荷调度机构的制作方法

文档序号:11635184阅读:279来源:国知局
CPU超载设置和云计算工作负荷调度机构的制造方法与工艺
本文中描述的实施例总体上涉及计算机系统。更具体地,实施例涉及云计算。
背景技术
:云计算指能够向众多用户提供弹性计算性能的高度可扩展的联网计算系统。云计算通常涉及密集计算服务器(被称为节点)的集群,其中,每个节点可能执行几十个虚拟机。通常,每个节点包括管理程序或其他虚拟化框架,并且整个云计算集群包括对特定计算节点上的虚拟机的实例化进行管理的一个或多个云控制器。openstack是这种云计算框架的一个示例。在多租户云计算环境中,不同客户可以控制特定节点上的虚拟机。因此,必须在虚拟机之间并且因此在不同客户之间共享如处理器、网络和存储资源等节点资源。当创建虚拟机时,用户选择指定了虚拟机的资源需求的实例类型。静态资源需求包括许多虚拟中央处理单元(vcpu)、存储器、磁盘和网络。对云服务提供商(csp)的这种要求具有两种挑战。第一种挑战是csp在任何服务器系统中必须向虚拟机实例提供相同性能的承诺资源,而不论cpu和其他硬件部件如何。因此,csp必须限定性能度量并且确保每个虚拟机满足所述性能。然而,这种要求经常未被始终如一地满足。第二种挑战是应当存在对所提供的基础设施的最大化使用。因此,csp经常可以希望对cpu和存储器进行超载设置,到将对基础设施的使用最大化并将性能降低差异最小化的限度。现有超载设置解决方案建议使用最优比例。然而,在实施这种解决方案时,在虚拟机分派有四个或更多个vcpu的实例中进行超载设置时发生性能降低。例如,如果第一虚拟机(vm1)分配有4个vcpu,所述vcpu之一被分派到第一物理cpu(pcpu1)上,并且第二虚拟机(vm2)分派有1个vcpu,所述vcpu也在pcpu1上,则vm1将必须等待其vcpu空闲(因为其被vm2共享)。如果与其他vm共享vm1的3个其他vcpu,则vm1将必须等待长得多的时间以便其所有vcpu空闲。这导致vm1的性能延迟。当前通过以下方式来补救这种降低:不对虚拟vcpu进行超载设置(例如,以单个vcpu启动并且在必要时进行横向扩展);监测工作负荷利用率、cpu就绪、以及cpu利用率度量并对虚拟机进行大小调整;以及将虚拟机迁移到具有相对空闲的资源或者还未超载设置的服务器上。然而,不超载设置是通用推荐,所述通用推荐不保证在每单个单位时间在每个单一服务器上满足的性能服务级别协议(sla)。进一步地,监测虚拟机并对其进行大小调整需要虚拟机以较少的vcpu而慢慢启动并且添加更多vcpu,由此需要基础设施空闲或者不总是被完全利用。此外,一旦目的地服务器具有完全分配容量,迁移虚拟机就可能导致相同的性能延迟。附图说明在附图中通过示例的方式而不是通过限制的方式来展示了实施例,在附图中,相同参考号指代类似元件。图1展示了云计算系统的一个实施例。图2展示了云计算系统的另一个实施例。图3是流程图,展示了用于执行服务等级目标(slo)管理的进程的一个实施例。图4展示了高级功能描述的一个实施例。图5展示了虚拟机分配的一个实施例。图6是流程图,展示了公平超载设置进程的一个实施例。图7是流程图,展示了公平超载设置进程的一个实施例。图8展示了计算机系统的一个实施例。具体实施方式可以在如以下所描述的用于在云计算环境中进行工作负荷调度的系统、装置和方法中将本发明具体化。在本说明书中,可以阐述许多具体细节(比如,部件和系统配置),以便提供对本发明更加透彻的理解。在其他实例中,还未详细地示出公知的结构、电路等,以避免不必要地模糊本发明。根据一个实施例,在确保总是履行sla的同时,将服务器资源利用率最大化。在这种实施例中,基于处理器性能特性来定义服务等级目标(slo)。在进一步实施例中,基于slo参数来定义虚拟机实例类型,以便捕获虚拟机的资源需求。在仍进一步实施例中,虚拟机被调度到节点上并且根据用户定义的slo参数和当前服务器状态来进行管理。仍进一步地,存储slo参数并将其传输至各种服务器节点。根据一个实施例,虚拟机slo参数被转换为平台资源(例如,计算时间、处理器频率、高速缓存、存储器/磁盘/网络带宽、存储器大小)。在其他实施例中,基于转换参数来连续地监测虚拟机以便检测slo违背行为。在这种实施例中,以纠正动作的形式来进行动态调整,应用所述纠正动作来恢复符合slo参数的性能。可以在硬件、软件、固件或硬件、软件或固件的任何组合中实施本发明的实施例的元件。术语硬件通常指具有如电子部件、电磁部件、光学部件、光电部件、机械部件、机电部件等物理结构的元件。术语软件通常指逻辑结构、方法、过程、程序、例程、进程、算法、公式、表达式等。术语固件通常指在硬件结构(例如,闪存存储器和只读存储器)中实施或具体化的逻辑结构、方法、过程、程序、例程、进程、算法、公式或表达式。固件的示例是微代码、可写控制存储设备以及微编程结构。图1展示了信息处理系统100的一个实施例。系统100包括全部通过网络108进行通信的许多计算节点102、云控制器104以及云状态数据库106。在使用中,如以下更详细地讨论的,每个计算节点102将一个或多个虚拟机实例化以便执行计算任务。每个计算节点102监测其性能(包括高速缓存竞争),并且生成竞争和容量分数。每个计算节点102的竞争分数存储在云状态数据库106中。云控制器104监测竞争分数并且基于计算节点102中的每个计算节点的报告竞争分数来调度新的虚拟机。在一个实施例中,每个计算节点102可以被具体化为能够执行本文中所描述的功能的任何类型的计算设备或计算机设备,包括但不限于:计算机、多处理器系统、服务器、机架式服务器、刀片式服务器、膝上型计算机、笔记本计算机、网络设备、web设备、分布式计算系统、基于处理器的系统和/或消费者电子设备。每个计算节点102说明性地包括两个处理器120、输入/输出子系统132、存储器134、数据存储设备136以及通信电路系统138。当然,在其他实施例中,计算节点102可以包括其他部件或附加部件,比如,服务器设备中常见的部件(例如,各种输入/输出设备)。另外地,在一些实施例中,说明性部件中的一个或多个说明性部件可以结合在另一部件中,或以其他方式形成其一部分。例如,在一些实施例中,存储器134或其部分可可以结合在一个或多个处理器120中。每个处理器120可以被具体化为能够执行本文中所描述的功能的任何类型的处理器。每个说明性处理器120是多核处理器,然而,在其他实施例中,每个处理器120可以被具体化为(多个)单核处理器或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。每个处理器120说明性地包括四个处理器核122和非核126。处理器核122中的每个处理器核是能够执行编程指令的独立处理单元。每个处理器核122包括性能监测单元(“pmu”)124。每个pmu124可以被具体化为能够记录并监测指令流过对应处理器核122的许多性能计数器。例如,每个pmu124可能能够对时钟周期、下发的指令、引退的指令、高速缓存未命中或类似事件进行计数。pmu124可以被编程成用于使用处理器核122的模型-5特定寄存器来监测特定性能统计。在一个实施例中,每个pmu124可以包括四个可完全编程的硬件计数器和三个固定功能硬件计数器。软件可以使用如linux内核的“perf”子系统等内核接口来访问pmu124。在其他实施例中,尽管说明性计算节点102中的每个说明性计算节点包括具有8个处理器核122的四个插槽的两个处理器120,但是每个计算节点102可以包括各自具有一个、两个或更多个处理器核122的一个、两个或更多个处理器120。具体地,本公开还适用于单处理器或单核计算节点102。每个处理器120还包括非核126。在说明性实施例中,每个非核126包括处理器120的未包括在处理器核122中的任何部分(例如,特定处理器120的除了处理器核122本身以外的所有部件)。例如,每个说明性处理器120的非核126包括pmu128和高速缓存存储器130。类似于处理器核122的pmu124,pmu128监测非核126的性能统计,并且可以包括许多可编程或固定功能硬件性能计数器。高速缓存存储器130可以是由处理器核122共享的最后一级高速缓存。在一些实施例中,pmu128可以监测对高速缓存存储器130的访问,包括记录高速缓存未命中、所转移的数据量以及其他高速缓存信息。尽管未被展示,但是非核126可以另外地包括处理器或片上系统的典型部件。例如,每个非核126可以包括存储器控制器、处理器图形、输入/输出控制器、电源管理电路系统或处理器120的其他部件。存储器134可以被具体化为能够执行本文中所描述的功能的任何类型的易失性或非易失性存储器或数据存储设备。在操作中,存储器134可以存储在对计算节点102的操作期间所使用的各种数据和软件,比如,操作系统、应用、程序、库和驱动程序。存储器134经由i/o子系统132通信地耦合至处理器120,所述i/o子系统可以被具体化为用于促进与计算节点102的处理器120、存储器134和其他部件的输入/输出操作的电路系统和/或部件。例如,i/o子系统132可以被具体化为或者以其他方式包括存储器控制器集线器、输入/输出控制集线器、固件设备、通信链路(即,点对点链路、总线链路、导线、线缆、光导、印刷电路板迹线等)和/或其他部件和子系统以便促进输入/输出操作。在一些实施例中,i/o子系统132可以形成片上系统(soc)的一部分并且可以与计算节点102的处理器120、存储器134和其他部件一起结合在单个集成5电路芯片上。数据存储设备136可以被具体化为被配置成用于对数据进行短期或长期存储的任何类型的一种或多种设备,如例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。数据存储设备136可以存储由计算节点102监测的性能统计。计算节点102的通信电路系统138可以被具体化为能够通过网络810使计算节点102、云控制器104、云状态数据库106和/或其他远程设备之间的通信成为可能的任何通信电路、设备或其集合。通信电路系统138可以被配置成用于使用任何一种或多种通信技术(例如,有线或无线通信)以及相关联的协议(例如,以太网、wimax等)来实现这种通信。在一个实施例中,云控制器104对在系统100的计算节点102之间分布的虚拟机或其他计算示例进行管理。云控制器104可以被具体化为能够施行本文中所描述的功能的任何类型的服务器计算设备或者设备集合。如此,云控制器104可以被具体化为单个服务器计算设备或服务器和关联设备的集合。例如,在一些实施例中,云控制器104可以被具体化为由跨网络108分布并在公共或私有云中进行操作的多个计算设备形成的“虚拟服务器”。因此,尽管云控制器104在图1中被展示为被具体化为单个服务器计算设备,但是应当理解的是,云控制器104可以被具体化为一起协作以便促进以下所描述的功能的多个设备。说明性地,云控制器104包括处理器140、i/o子系统142、存储器144、数据存储设备146、通信电路系统148和/或服务器或类似计算设备中常见的其他部件和设备。云控制器104的那些单独部件可以类似于计算节点102的相应部件,对所述相应部件的描述适用于云控制器104的相应部件并且在本文中不加以重复,以免模糊本公开。云状态数据库106存储在系统100内同步的信息,包括性能统计。云状态数据库106可被具体化为专用数据库服务器、分布式数据存储设备或能够维持系统100的一致状态的任何其它数据存储系统。如此,云状态数据库106的副本或部分可以存储在每个计算节点102的数据存储设备136和/或云控制器104的数据存储设备146中。可以使用任何通信协议来在计算节点102、云控制器104和/或云状态数据库106之间传递更新的云状态信息。在一些实施例中,可以使用消息总线(例如,实施如rabbitmq等高级消息队列协议(amqp)的消息总线)来异步地传递云状态信息。如以下更详细地讨论的,计算节点102、云控制器104和云状态数据库106可以被配置成用于通过网络108与彼此和/或系统100的其他设备发射和接收数据。网络108可以被具体化为任何数量的各种有线和/或无线网络。例如,网络108可以被具体化为或以其他方式包括有线或无线局域网(lan)、有线或无线广域网(wan)、蜂窝网络和/或可公开访问的全球网络(比如,互联网)。如此,网络108可以包括如附加计算机、路由器和交换机等用于促进系统100的设备之间的通信任何数量的附加设备。图2展示了在操作期间建立环境200的计算节点102的一个实施例。说明性环境200包括许多虚拟机202、数据收集模块204、每虚拟机(pervm)模块205、竞争分数确定模块206、节点代理207和通信模块208。环境200的各种模块可以被具体化为硬件、固件、软件或其组合。根据一个实施例,每个虚拟机202在计算节点102上执行云计算工作负荷。每个虚拟机202可以被钉扎(pinned)至、分派给或以其他方式分配给处理器核122中的一个或多个处理器核。在一些实施例中,每个虚拟机202可以指定许多期望虚拟cpu,并且虚拟机202可以被分派给所述数量的处理器核122。在多租户云计算环境中,每个虚拟机202可由不同实体控制并且因此另外地可以执行具有不同性能特性的工作负荷。具体地,每个虚拟机202可以向计算节点102的高速缓存存储器130施加不同压力。如以下所描述的,虚拟机202由云控制器104进行实例化并以其他方式进行管理。数据收集模块204收集计算节点102的性能数据。数据收集模块204可以收集指示计算节点102上的高速缓存竞争的数据,例如,测量高速缓存存储器130中的高速缓存未命中的数据。数据收集模块204可以包括用于计算节点102的每个处理器120和/或处理器核122的或者用于每个虚拟机302的单独数据收集器。数据收集模块204可以对所收集的数据进行过滤以便移除噪声。数据收集模块204的数据收集器可以例如使用如zeromq消息总线等消息总线来彼此异步地通信。每vm监测器205监测虚拟机202的利用率和性能。在一个实施例中,每vm监测器205识别虚拟机在什么时候是活跃的。在这种实施例中,每vm监测器205使用硬件事件来监测使用每线程id的虚拟机或进程活动。进一步地,每vm监测器205维持每个进程的线程id的列表并使用性能分工具(例如,linux性能计数器(perf))以预定间隔(例如,每秒)对每线程id硬件计数器进行采样。在仍进一步实施例中,每vm监测器205将每线程监测数据分组成由数据收集模块204获取的每进程性能。竞争分数确定模块206根据由数据收集模块204收集的性能数据来计算竞争分数。竞争分数可以包括竞争度量和竞争分数水平两者。竞争度量可以包括描述计算节点102的所有处理器120的高速缓存未命中的聚合数据。竞争分数水平可以通过启发式算法来生成,并且可以选自低竞争水平、中等竞争水平和高竞争水平(例如,经由量化的形式)。在一个实施例中,竞争分数对在计算节点102上经历的高速缓存存储器130竞争进行测量。竞争分数可以被具体化为包括每某个参考数量的指令(例如,每千个指令)的高速缓存未命中以及竞争分数水平(例如,高竞争、中等竞争或低竞争)的元组。节点代理207实施控制进程以便在计算节点102处执行超载设置。根据一个实施例,如以下将更详细地描述的,节点代理从每vm监测器205接收虚拟机监测数据并且动态地重新调整资源以便在计算节点102处维持性能。通信模块308向云状态数据库106传输性能数据。然后,性能数据可由云控制器104通过云状态数据库106来进行访问。通信模块308可以将竞争分数作为包括竞争度量和竞争分数水平的元组来进行传输。通信模块308可以使用任何通信方法来与系统100的其他构件对接。例如,通信模块308可以被具体化为消息总线。根据一个实施例,每个计算节点102与云控制器104通信,云控制器各自可以在操作期间建立环境220。说明性环境220包括计算服务模块222、调度器模块224以及通信模块226。环境220的各种模块可以被具体化为硬件、固件、软件或其组合。计算服务模块222接收将新的虚拟机202实例化的请求以及对新的虚拟机202进行调度以便在由调度器模块324选择的计算节点102上执行的请求。计算服务模块222可以从任何适当来源接收命令。例如,计算服务模块222可以从云系统管理员或从云计算客户处经由基于web的控制接口来接收命令。作为另一个示例,在一些实施例中,计算服务模块222可以基于对计算服务的需求而接收针对新的虚拟机202的命令,例如以便进行扩展从而对应用需求做出响应。在进一步实施例中,计算服务模块222在监测应用性能的同时基于竞争分数检测sla违背行为。在这种实施例中,计算服务模块222确定要被应用以便将应用性能恢复至指定sla的控制动作。调度器模块224基于所接收的性能数据选择适当的计算节点102。在一些实施例中,调度器模块224可以被具体化为选择具有最低报告竞争分数水平的计算节点102的过滤调度器。当两个或更多个计算节点102具有最低报告竞争分数水平时,调度器模块224可以随机地或通过使用任何其他可用选择标准来选择一个计算节点。例如,在一些实施例中,调度器模块224可以进一步对计算节点102进行分类并且选择具有最低竞争度量的计算节点102。通信模块226从云状态数据库106接收针对系统100内的所有计算节点102的性能数据。通信模块226可以从云状态数据库106接收针对每个计算节点102的包括竞争度量和竞争分数水平的元组。通信模块226可以使用任何通信方法来与系统100的其他构件对接。例如,通信模块326可以被具体化为消息总线。根据一个实施例,计算服务模块222包括服务计算单元(scu)221。在这种实施例中,scu221就计算消耗度量而言定义服务等级目标(slo)。计算消耗度量基于处理器122性能特性(例如,执行指令的能力)。在一个实施例中,计算消耗度量被测量为每秒千兆指令(gips)评分。当执行仅具有某种类型(所述类型具有最低每指令周期(cpi)或最高每周期指令(ipc))的指令的程序时,处理器122实现峰值gips评分。因此,还在计算服务模块222处使用操作频率来对计算性能度量进行计算以便限制实际gips。根据一个实施例,scu221被附接至在计算服务模块222处生成的每个计算实例。在此实施例中,将scu221乘以所分配的虚拟核从而提供虚拟机202的允许总消耗。例如,表1示出了实例类型和相应slo。实例类型&ramcpu(虚拟核*scu)slo(示例)特大+30gb具有4个scu的4个虚拟核高特大+15gb具有2个scu的4个虚拟核中等表1根据一个实施例,计算了作为虚拟机的计算节点102的总容量和净空容量。另外地,计算对向每个实例提供的ipc是否与slo相匹配进行测量。计算包括以下各项:a.scu_理论=总gipsb.scu_实际=基于操作频率的gips。c.scu_ipc_预期=例如1.27(特定于基于specint结果的至强e5处理器)d.scu_tput_当前=基于主机上的监测数据更新e.slo误差=scu_理论-scu_实际f.ipc误差%=(scu_tput_当前/scu_tput_预期)*100g.节点_容量_最大=(逻辑核*总插槽)*scu_理论h.节点_容量_分配=(总_逻辑核_分配*scu_实际)i.节点_容量_使用=pc*总_逻辑核_分配*j.节点_容量_净空=节点_容量_最大-节点_容量_分配图3是流程图,展示了用于执行对虚拟机的slo管理的进程300的一个实施例。方法300可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(比如,在处理设备上运行的指令)或其组合。为了呈现的简明和清晰的起见,以线性顺序来展示了方法300的进程;然而,设想了可以并行地、异步地或以不同顺序来执行任何数量的进程。为了简明、清晰和易于理解起见,此处可以不讨论或重复参考图1和图2而讨论的细节中的许多细节。在处理框305处,响应于将新的虚拟机202实例化的请求而在于计算服务模块222处实施的用户接口中提供与在表1中所示出的实例类型类似的实例类型以及sla。因此,使用属于由scu221指定且支持的多个实例类型之一的计算服务模块222来创建虚拟机。在处理框310处,计算服务模块222识别对虚拟机202的资源需求。在处理框315处,调度器224识别要将虚拟机202调度到其上的计算节点102。在一个实施例中,调度器模块224将虚拟机202的资源需求以及各种控制节点102的当前状态考虑在内以便确定对虚拟机202的初始放置。在处理框320处,调度器模块224将虚拟机220调度到所识别计算节点102上。在处理框325处,将虚拟机202的slo参数存储在数据库106内并且将其传输至所识别的计算节点102处的节点代理207,在所述所识别的计算节点处,将执行虚拟机202(例如,使用rabbitmq消息)。在处理框330处,将slo参数映射到计算节点102上的资源上。在处理框330处,虚拟机202在计算节点102处开始操作。根据一个实施例,根据以下所描述的公平超载设置进程来在计算节点102处实施调整。在处理框340处,每vm监测器205测量虚拟机202的利用率和性能。因为应用展现出相变或者随着时间而经历变化的负载,所以资源利用率也变化。由于在计算节点102上执行的虚拟机202中的所有虚拟机内的这种变化,兴趣虚拟机202所面临的竞争也变化。因此,可以基于由每vm监测器205进行的连续监测来执行动态重新调整。在决策框345处,节点代理207基于从每vm监测器205接收的监测性能结果来判定虚拟机202性能是否低于slo参数。根据一个实施例,节点代理207基于所分配的slo参数来使用当前虚拟机202性能和预期虚拟机202性能。如果虚拟机202性能不低于slo参数,则控制返回至处理框340,在所述处理框处,继续监测虚拟机202。然而,如果虚拟机202性能低于slo参数,则在处理框350处发起纠正动作。在一个实施例中,对资源分配的变化的幅度进行计算以便修改资源分配从而实现预期性能。根据一个实施例,节点代理207可以执行提升(boosting)动作、节流(throttling)动作或迁移(migration)动作以便调整资源分配。当应用性能下降到预期水平以下时,提升增加资源。节流减少向应用提供的资源。在一个实施例中,当这种资源减少不导致sla违背行为时,发起减少。例如,当提供了附加高速缓存时,流应用并不展现出高速缓存未命中率的减小。类似地,当高速缓存可用性减小时,高速缓存未命中率不显著增大。迁移涉及将虚拟机202迁移到或者同一计算节点102上的不同插槽上或者迁移到不同计算节点102上,以便减小来自有噪声的邻居的干扰。这有效地增加了可用于被迁移的虚拟机202的资源。根据一个实施例,节点代理207实施资源控制来限制、考虑并隔离资源利用率(例如,cpu、存储器、磁盘i/o等)从而管理cpu控制器和cpuset控制器子系统,以便通过减小资源竞争和增大性能可预测性来满足应用sla,并且以便阻止单个虚拟机或虚拟机组独占资源或影响其他环境。图4展示了用于执行虚拟机资源分配的高级功能描述的一个实施例。在一个实施例中,实施用户空间守护进程(控制服务代理或csa)402以便与内核资源组子系统404交互从而初始化并安装资源组控制器。另外地,csa与虚拟化管理守护进程服务406交互以便执行对计算节点102资源的资源分配和分区以及动态资源分派。cpuset提供用于将pcpu集合分派给虚拟vcpu集合以便使映射成为可能从而将对虚拟机的cpu放置仅限制到vm的当前cpuset内的资源的机构。在一个实施例中,映射形成了在由csa控制的虚拟文件系统中可见的嵌套分层结构。资源组子系统404限定用于每个虚拟机的cpu时间份额。csa402使用此组来管理cpu份额,其中,每个组分层次地获得份额。在一个实施例中,cpu份额被默认设置为1024。然而,将cpu份额设置为更高值为cpu组提供cpu的更高量子,这通过csa402对虚拟机进行提升或节流来执行。根据一个实施例,os调度器410是提供调度(例如,轮询或公平份额)的路由器。图5展示了虚拟机份额分配的一个实施例。根据一个实施例,固定资源分配模型在所有虚拟机之间分区系统资源,从而使得所请求的总资源等于可用资源。在这种实施例中,虚拟机所请求的资源基于其最大消耗,从而使得:然而,由于相位变化,虚拟机并不连续地消耗所请求的资源中的所有资源。因此,可以对资源进行超载设置并且可以在虚拟机之间共享资源。在超载设置环境中,可用总系统资源将比每个vm所需要的资源之和更少。如在以下资源模型中所示出的那样动态地重新分派资源:根据一个实施例,可以通过在每核的基础上逻辑地分区处理器120资源从而实施资源优化和公平超载设置。这种逻辑划分方式适合于将以被排他地包含在核中的方式来实施对虚拟机的放置的场景,在所述核中,任何其他虚拟机都不为了所述核内的可用带宽而进行竞争。例如,可以使用这种方式来处理有噪声的邻居场景。图6是流程图,展示了用于执行公平超载设置的进程600的一个实施例。方法600可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(比如,在处理设备上运行的指令)或其组合。为了呈现的简明和清晰的起见,以线性顺序来展示了方法600的进程;然而,设想了可以并行地、异步地或以不同顺序来执行任何数量的进程。为了简明、清晰和易于理解起见,此处可以不讨论或重复参考图1至图5而讨论的细节中的许多细节。在处理框68处,使用资源组404cpu和cpuset控制器子系统来创建系统拓扑结构。在处理框620处,由csa将这些子系统安装在指定路径处。在处理框630处,创建系统默认池以便为要运行的系统守护进程和其他进程专有地预留一些cpu核。在处理框640处,在每插槽的基础上通过逻辑地为属于特定插槽的所有逻辑核创建资源组cpuset来创建附加池。在处理框650处,调度器模块224将虚拟机202调度到计算节点102上并且与每个虚拟机202一起发送slo消息(所述消息包括虚拟机202要在其上运行的vcpu的数量)连同其他元件(例如,所请求的计算服务模块222)。在处理框660处,放置虚拟机202,并且将所请求的计算服务模块222转换成cgroup404cpu份额。因此,确保了最小保证。根据一个实施例,通过将与虚拟机相对应的vcpu钉扎到cpuset子系统上来执行虚拟机202放置。此外,在具有虚拟机通用唯一标识符(uuid)的cpu控制器资源组子系统下创建新的分层结构作为新的控制组。只要利用了总平台容量,调度器模块224就可以将附加虚拟机放置到计算节点102上。在处理框670处,执行开始。在一个实施例中,虚拟机202运行时间动态通常指示即使虚拟机202slo请求更多的cpu带宽预留,但是实际利用率更小。这允许计算服务模块222做出通过预定义超载设置因子来紧密充填负载的决定。在进一步实施例中,在达到平台容量时,做出虚拟机202迁移决定,以便履行其slo。以上所述模型提供了可以被利用并且可以向参与虚拟机202提供差异化服务质量的强大且灵活的资源控制集以及宽范围的资源管理策略。图7是流程图,展示了用于执行公平超载设置的进程700的一个实施例。方法700可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(比如,在处理设备上运行的指令)或其组合。为了呈现的简明和清晰的起见,以线性顺序来展示了方法700的进程;然而,设想了可以并行地、异步地或以不同顺序来执行任何数量的进程。为了简明、清晰和易于理解起见,此处可以不讨论或重复参考图1至图5而讨论的细节中的许多细节。在处理框705处,在每插槽的基础上创建平台拓扑结构。在一个实施例中,每插槽地预留cpu池,从而使得:其中,计算服务模块222=2个scu。在处理框78处,运行循环以便接受针对由调度器224调度的新虚拟机202的传入slo消息。在一个实施例中,虚拟机slo消息包括对每虚拟机202每个vcpu的scu需求。在处理框715处,通过将虚拟机202放置到适当插槽上来履行虚拟机slo。在一个实施例中,通过使用资源组404来将vcpu钉扎到属于特定插槽的逻辑cpu上来执行此进程。在处理框720处,使用成比例的资源组404份额来保证虚拟机202预留。另外地,施加与包括在slo消息中的预留值相等的限制。在处理框725处,对每插槽总使用scu进行计算,并更新数据库106。在处理框730处,分派附加虚拟机202,直到:∑所请求的vm≤总插槽gip一旦满足所述条件就达到完全容量。随后,观察器循环周期性地进行检查以便检测每插槽总使用scu。由于虚拟机202通常消耗比所请求的资源少得多的资源,所以经常执行超载设置。然而,当虚拟机202正使用所请求的资源时,无法实现超载设置。根据一个实施例,在以下条件下针对因子ρ而发生超载设置:∑vm当前利用率≤总请求scu,其中,ρ=总插槽scu-∑vm当前利用率-τ,其中,τ=8%在决策框735处,做出关于当前使用的虚拟机scu的总数是否≥90%插槽scu的确定。如果未满足所述条件,则控制返回至处理框730,在所述处理框处,向插槽分派附加虚拟机。然而,对当前使用的虚拟机scu的总数≥90%插槽scu的确定指示虚拟机220中的一个或多个虚拟机现在尝试使用其预留scu。然而,当总使用scu变成100%的插槽容量(例如,已经对资源进行超载设置)时,虚拟机220将很快开始变差。在处理框470处,每vm监测器205读取数据以便识别哪个虚拟机220正试图请求其份额。在一个实施例中,数据包括从处理器120内的寄存器中读取的遥测数据以及映射到虚拟机220上的性能事件。在进一步实施例中,虚拟机220被临时分派给cpu池中的cpu。在进一步实施例中,观察器循环在预定时间间隔内监测系统以便判定系统是否达到平衡状态。在这种实施例中,如果有必要,对ρ进行重新调整以便维持稳定状态。在处理框745处,基于确保对云的最小干扰的策略来迁移所识别的虚拟机220。示例性计算机系统1000包括处理器1002;主存储器1004(例如,只读存储器(rom);闪存存储器;如同步dram(sdram)或ram总线dram(rdram)等动态随机存取存储器(dram);如闪存存储器、静态随机存取存储器(sram)、易失性但高数据速率ram等静态存储器);以及辅助存储器818(例如,包括硬盘驱动器的持久存储设备以及持久多租户数据基础实施方式),所述部件经由总线830彼此通信。主存储器1004包括发射执行数据1024(例如,由日志记录框架发射的数据)以及一个或多个轨迹偏好1023,所述轨迹偏好结合处理逻辑1026和处理器1002进行操作以便执行本文中所讨论的方法。处理器1002表示一个或多个通用处理设备,比如,微处理器、中央处理单元等。更具体地,处理器1002可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、实施其他指令集的处理器或实施指令集组合的处理器。处理器1002还可以是一个或多个专用处理设备,比如,专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理器1002被配置成用于执行处理逻辑1026以便执行上述机构的操作和功能。计算机系统1000可以进一步包括网络接口卡1008。计算机系统1000还可以包括用户接口810(比如,视频显示单元、液晶显示器(lcd)或阴极射线管(crt))、字母数字输入设备812(例如,键盘)、光标控制设备814(例如,鼠标)以及信号发生设备816(例如,集成扬声器)。计算机系统1000可以进一步包括外围设备836(例如,无线或有线通信或设备、存储器设备、存储设备、音频处理设备、视频处理设备等)。计算机系统1000可以进一步包括能够执行传入服务请求并响应于对这种传入请求的完成而发射执行数据的基于硬件的api日志记录框架834。辅助存储器818可包括机器可读存储介质(或更具体地,机器可访问存储介质)831,在所述机器可读存储介质上存储有将以上所描述方法或功能中的任何一者或多者具体化的一个或多个指令集(例如,软件1022)。在计算机系统1000、主存储器1004及同样构成机器可读存储介质的处理器1002执行软件1022期间,所述软件还可以完全或至少部分地驻留于主存储器1004内和/或处理器1002内。软件1022可以进一步经由网络接口卡1008通过网络1020发送或接收。机器可读存储介质831可以包括瞬态或非瞬态机器可读存储介质。各种实施例的部分可以作为计算机程序产品而提供,所述计算机程序产品可以包括具有存储于其上的计算机程序指令的机器可读的介质,所述指令可以用于对计算机(或其他电子设备)进行编程以便执行根据实施例的进程。机器可读介质可以包括但不限于软盘、光盘、cd盘只读存储器(cd-rom)、以及磁光盘、rom、ram、可擦除可编程只读存储器(eprom)、电eprom(eeprom)、磁卡或光卡、闪存存储器或者适合于存储电子指令的其他类型的介质/机器可读介质。可以使用在一个或多个电子设备(例如,终端站、网络元件等)上存储和执行的代码和数据来实施附图中所示出的技术。这种电子设备使用如非瞬态计算机可读存储介质等计算机可读介质(例如磁盘;光盘;随机存取存储器;只读存储器;闪存存储器设备;相变存储器)以及瞬态计算机可读存储介质(例如,电气、光学、声学或其他形式的传播信号,比如,载波、红外信号、数字信号)来存储并传达(内部地和/或通过网络与其他电子设备)代码及数据。此外,这种电子设备通常包括耦合至一个或多个其他部件的一组一个或多个处理器,比如,一个或多个存储设备(非瞬态机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏、和/或显示器)以及网络连接。所述一组处理器和其他部件的耦合通常通过一个或多个总线和桥接器(也被称为总线控制器)。因此,给定电子设备的存储设备通常存储用于在所述电子设备的所述一组的一个或多个处理器上执行的代码和/或数据。当然,可以使用软件、固件和/或硬件的不同组合来实施实施例的一个或多个部分。实施例可以被实施为以下各项中的任何一项或组合:使用母板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器设备存储且由微处理器执行的软件、固件、专用集成电路(asic)和/或现场可编程门阵列(fpga)。通过示例的方式,术语“逻辑”可以包括软件或硬件和/或软件和硬件的组合。此外,实施例可以作为计算机程序产品被下载,其中,可以经由通信链路(例如,调制解调器和/或网络连接),借助于在载波或其他传播介质中具体化和/或由载波或其他传播介质调制的一个或多个数据信号来将程序从远程计算机(例如,服务器)传输至请求计算机(例如,客户端)。对“一个实施例”、“实施例”、“示例实施例”、“各种实施例”等的引用指示:如此描述的(多个)实施例可以包括特定特征、结构或特性,但并非每一个实施例必定包括这些特定的特征、结构或特性。进一步地,一些实施例可具有针对其他实施例而描述的特征中的一些特征、全部特征或不具有任何所述特征。在以下说明书和权利要求书中,可以使用术语“耦合”及其衍生词。“耦合”用于指示两个或更多个元件彼此协作或相互作用,但是它们之间可以具有或不具有中间物理或电气部件。如权利要求书中所使用的,除非另有说明,否则使用序数形容词“第一”、“第二”、“第三”等来描述公共元件仅指示类似元件的不同实例被提及,并不旨在暗示如此描述的元件必须采用给定顺序,无论是时间、空间、等级或以任何其他方式。以下条款和/或示例涉及进一步实施例或示例。可在一个或多个实施例中的任何地方使用示例中的细节。可以以各种方式将不同的实施例或示例的各种特征与所包括的一些特征以及被排除的其他特征组合以适应各种不同的应用。示例可以包括主题,比如,方法;用于执行所述方法的动作的装置;至少一种包括指令的机器可读介质,所述指令当由机器执行时使所述机器执行所述方法的动作;或用于促进根据本文中所描述的实施例和示例的混合通信的装置或系统。一些实施例涉及包括一种云计算集群的计算节点的示例1,所述计算节点包括节点代理,所述节点代理用于从云控制器接收虚拟机和服务等级目标计算消耗度量(servicelevelobjectivecomputeconsumptionmetric,slo)参数并且将所述slo参数映射到在所述计算节点处的资源上;以及每vm监测器,所述每vm监测器用于监测所述虚拟机的性能,其中,所述节点代理从所述每vm监测器接收性能数据并且基于所述性能数据来动态地调整所述虚拟机的性能。示例2包括如示例1所述的主题,其中,所述每vm监测器使用硬件事件来监测使用每线程标识符的所述虚拟机活动。附图和前述描述给出了实施例的示例。本领域技术人员将理解,所描述的元件中的一个或多个元件可以被良好地组合成单个功能元件。可替代地,某些元件可以分成多个功能元件。来自一个实施例的元件可以被添加到另一个实施例中。例如,本文中所描述的进程的顺序可以改变并且不限于本文中所描述的方式。此外,任何流程图中的动作不需要以所示出的顺序来实施,也不一定需要执行所有动作。而且,可以与其他动作并行地执行不依赖于其他动作的那些动作。实施例的范围决不限于这些特定示例。无论是否在说明书中明确给出,如材料的结构、尺寸和用途上的差异等许多变化都是可能的。实施例的范围至少与以下权利要求书给出范围一样宽。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1