Resource allocation in a virtualized data processing environment

DE102013216735B4Active Publication Date: 2025-02-13INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
DE102013216735
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2012-09-06
Filing Date
2013-08-22
Publication Date
2025-02-13
Estimated Expiration
2033-08-22

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method for deciding whether a plurality of virtual machines (VMs) can be hosted in a data processing system that has the resources to support at least one of the VMs, wherein the method comprises: Determining a maximum allowable probability of injury (maxPermInfrProb(v)) for a VM(v), where “v” is a value from 1 to n such that n is the number of VMs in a set G as specified by SLAs of the VMs; Dividing the sentence G into a plurality of groups G i (G1, ... G i ,... G n ), so that each group with respect to the value maxPermInfrProb, which is for elements of group G i is defined, is homogeneous; Organizing Groups G i based on the value of maxPerm InfrProb for each group G i ; Calculating an effective size (ES) for the groups G i , where a value maxPermInfrProb(G i) according to a statistical record of resource requirements for VMs in group G i is calculated; where the effective total size of group G i is calculated on the following basis: Defining new groups (G'1, ... G' i ,... G' n ), so that G' i the union of G1, G2, ... G i is; Assigning a second threshold, which provides a maximum allowable probability of violation (maxPermInfrProb'), to the new groups (G'1, ... G' i ,... G' n ), so that: maxPermInfrProb' (G' 1) = maxPermInfrProb (G 1) maxPermInfrProb' (G' i) = maxPermInfrProb (G i) − maxPermInfrProb (G i − 1) where the effective total size of group G is equal to the maximum value of ES(G') i ) is.
Need to check novelty before this filing date? Find Prior Art

Description

NOTES ON COPYRIGHT AND TRADEMARKS

[0001] Part of the disclosure of this patent document may contain material subject to copyright protection. The owner does not object to facsimile reproduction of the patent document and / or the patent disclosure appearing in the patent file or records of the Patent and Trademark Office, but reserves all other copyright rights.

[0002] Certain trademarks referenced herein may be common law or registered trademarks of applicant, assignee, or third parties that may be affiliated with applicant and assignee. The use of these trademarks is intended to provide exemplary disclosure and should not be construed to limit the scope of the disclosed subject matter exclusively to materials associated with such trademarks. TECHNICAL FIELD

[0003] The disclosed subject matter relates generally to allocating resources to virtual machines (VMs) with non-homogeneous service level agreements (SLAs), and more particularly to allocating resources to the VMs based on the respective probabilities of permissible violations of the corresponding SLAs.

[0004] Documents have already been published in this technical field. Document US 7 269 652 B2 describes an algorithm for minimizing a discount for a breach of an SLA (Service Level Agreement) in a cloud computing environment. This compares performance data and resource usage with regard to the SLA and customer usage. Workloads on shared resources are also shifted to other shared resources where lower penalty payments are required. Document US 8 830 842 B2 describes a communications device and a corresponding method that are interconnected via a first path and a second path. This allows for better management of VLANs. Furthermore, document US 2008 / 0 295 096 A1 describes dynamic placement of virtual machines to prevent SLA violations.Historical usage data is also used for this purpose. Finally, document US 2009 / 0 238 078 A1 describes the automatic provisioning of hosted applications, for which a certain level of mutual isolation has been agreed upon.

[0005] Despite these advances, there is still a need to further optimize resource allocation in virtual computing environments. BACKGROUND

[0006] This problem is solved by the subject matter of the independent patent claims. Further embodiments are provided by the respective dependent patent claims.

[0007] Infrastructure as a service (IAAS) is a service that allows a service provider to sell computing services and resources. IAAS services are generally delivered without requiring the end user to know the location or other details of the deployed infrastructure and allow the resources used to be stored and deployed on remotely hosted server systems or databases.

[0008] An IAAS is generally implemented to advantageously reduce overhead and can be used to (1) minimize the total cost of ownership of the deployed infrastructure by optimizing the allocation of resources to virtualized systems (e.g., VMs) used to provide services, and (2) maximize compliance with the defined SLAs for a VM. If an SLA associated with a requested VM is violated, a penalty is typically imposed on the service provider for violating the terms defined in the SLA.

[0009] Given the constraints associated with the underlying infrastructure, it is desirable to allocate the largest possible workload to the virtualized resources while keeping SLA violations below the limit permitted by the respective SLAs. Resource overcommitment must be managed appropriately to be most effective in minimizing the total cost of ownership while maintaining controlled and acceptable levels of SLA violations. SUMMARY

[0010] For summary purposes, certain aspects, advantages, and novel features are described herein. It should be understood that not all such advantages may be achieved according to a particular embodiment. Therefore, the disclosed subject matter may be embodied or practiced in a manner that achieves or optimizes an advantage or group of advantages without achieving all of the advantages contemplated or presented herein.

[0011] Machines, systems and methods for deciding whether a plurality of virtual machines (VMs) can be accommodated in a data processing system having resources to support at least one of the VMs, the method comprising: determining the maximum permissible violation probability (maxPermInfrProb(v)) for a VM(v), where "v" is a value from 1 to n, such that n is the number of VMs in a set G as stipulated by the SLA of the VMs; dividing the set G into a plurality of groups G i (G1, ... G i ,... G n ), so that each group is independent of the value maxPermInfrProb, which is valid for elements of the group G i is defined, is homogeneous; and organizing the groups G i based on the value of maxPermInfrProb for each G i .

[0012] According to one or more embodiments, a system is provided that includes one or more logical units. The one or more logical units are configured to perform the functions and operations associated with the methods disclosed above. In yet another embodiment, a computer program product is provided that includes a computer-readable storage medium having a computer-readable program. When executed on a computer, the computer-readable program causes the computer to perform the functions and operations associated with the methods disclosed above.

[0013] One or more of the embodiments disclosed above, in addition to certain alternatives, are provided in more detail below with reference to the attached figures. However, the disclosed subject matter is not limited to any particular embodiment disclosed. BRIEF DESCRIPTION OF THE DRAWINGS

[0014] The disclosed embodiments may be better understood by reference to the figures in the attached drawings provided below. Fig. 1 illustrates an example operating environment, according to one or more embodiments, wherein virtual machines are implemented to serve a plurality of requests. The Fig. 2A and Fig. 2B are block diagrams of hardware and software environments in which the disclosed systems and methods may operate, according to one or more embodiments. The Fig. 3A, Fig. 3B and Fig. 3C illustrate one or more nodes and layers of an abstraction model in an example network environment supporting a cloud infrastructure, according to one or more embodiments.

[0015] Features, elements, and aspects referred to by the same numbering in different figures represent the same, equivalent, or similar features, elements, or aspects according to one or more embodiments. DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

[0016] Numerous specific details are set forth below to provide a complete description of various embodiments. Certain embodiments may be implemented without these specific details or with certain variations in details. In some cases, certain features are described in less detail so as not to obscure other aspects. The level of detail associated with each of the elements or features should not be construed to evaluate the novelty or importance of one feature over others.

[0017] In Fig. 1, in a virtualized computing environment, one or more VMs (e.g., V1, ..., V10) may be operated via a hypervisor 112 configured to manage the execution of the VMs via a computing system 110, and which is also referred to below as a host or host machine. A VM may have a certain level of demand for the use of the resources (e.g., CPU or memory) of the computing system 10. The SLA associated with a VM may identify the resource requirements for that VM.

[0018] A given VM ("v") has a maximum allowable violation probability (i.e., maxPermInfrProb(v)) that depends on the requirements of its associated SLA. For multiple VMs, a certain amount of resources may be allocated to each VM according to a certain priority. For a VM, the actual violation probability (i.e., deFactoInfrProb(v)) can be calculated as a function of (1) the amount of allocated resources for the VM; (2) the amount of allocated resources for the other VMs in the host; and (3) the allocation priorities of the VMs in the host.

[0019] It is worth noting that if the value of maxPermInfrProb(v) is identical for the VMs in the host (i.e., homogeneous across the VMs), the minimum host capacity can be calculated to ensure that deFactoInfrProb(v) is as equal as possible to maxPermInfrProb(v). The minimum host capacity may not be correctly calculated in one or more embodiments if the maxPermInfrProb values ​​of the VMs are not homogeneous. It is noted that a globally enforced SLA scheme that would enforce a violation probability maxPermInfrProb for all VMs corresponding to the strictest SLA is generally impossible, as such a scheme would result in a waste of resources due to the failure to consider different SLA requirements.

[0020] In a computing environment with non-homogeneous VMs, some host resources may be underutilized (i.e., certain resources may remain unused), while others may be overloaded. Workload separation according to the VMs' SLA can be used to avoid the above-mentioned effect. However, workload separation may result in the management of different resource pools, each homogeneous with respect to SLA requirements, thereby causing additional management overhead due to the growth of the number of pools and the fragmentation of resource utilization.

[0021] A monitoring component may be used to monitor the resource usage (e.g., CPU usage) of the VMs operated by the supervisor 112 in the computing system 10 and to store the collected data in the form of, e.g., time series in the repository 160, which is available over a network 130. In one implementation, data about the hardware configuration of computing systems containing one or more VMs may be stored in the repository 160. Periodically or on demand, an SLA-aware placement engine 150 may be used to deploy a new VM. An SLA-aware placement engine 150 may select a candidate host (e.g., the hypervisor 112) and retrieve the SLAs of the VMs operating in one or more candidate hosts.

[0022] The SLA-aware placement engine 150 may invoke a VM group effective size calculator 140 by passing the SLA of the new VM and the SLAs of the VMs running on the hypervisor 112. The VM group effective size calculator 140 may calculate the effective size for a group of VMs using the data stored in the repository 160. For example, if the effective size of the VM group is less than or equal to the CPU capacity of the candidate host, the effective size calculator 140 calculates the new allocation of CPU shares for the VMs of the candidate host and passes the result to the SLA-aware placement engine 150 to indicate that the host is suitable or that the search for a suitable host should continue.

[0023] Given a specific host and a group of potential VMs to be included in it, the probability of SLA violations for one or more of the potential VMs can be calculated, for example, using statistical analysis. Such a calculation can be used to determine, before allocating resources to the VMs and deploying the VMs, whether a group of potential VMs is suitable for serving resource requests without violating the SLAs for the VMs.

[0024] According to one embodiment, the effective size of a group of VMs may be calculated with respect to a violation probability p associated with that group of VMs. For example, for a group of VMs comprising subgroups of VMs with different SLA requirements, the total effective size is calculated to account for the different violation probabilities of each subgroup, avoiding the application of a uniform effective sizing scheme to VMs with different maximum allowable SLA violation probabilities.

[0025] For example, when a VM is to be provisioned in a host, various factors such as the amount of required resources and also the relative priority of other VMs can be taken into account so that the host resources can be appropriately shared with the higher-priority VMs to the greatest extent possible, especially when there is contention for access to resources. According to one embodiment, before resource allocation, it is determined whether a VM has been given a higher priority than another VM. If so, when contention occurs, more resources can be allocated to VM1, and a relatively smaller number of resources can be allocated to VM2. Therefore, the resources are allocated according to the amount of relative priority between the VMs.

[0026] The amount of priority can be defined based on various factors. For example, a VM assigned a higher workload may be deemed to require additional resources more and therefore be assigned a higher priority than a counterpart VM with a lower workload. VMs can be grouped according to a priority hierarchy, so that a correspondingly larger share of resources is allocated to the group of VMs higher in the priority hierarchy. In this way, the more important, more valuable, or more needy groups of VMs are given a higher position in the hierarchy.

[0027] For example, consider a host H and a collection G of VMs included in H. G can be divided into the subgroups G1, G2,..., G n be divided, with the VMs in a subgroup being homogeneous with respect to SLA requirements, so that p ithe corresponding permissible injury probability. The subgroups G i can be in ascending order of p i be sorted, where p i+ , is greater than p i This grouping and ordering scheme is particularly useful for SLA implementations where the different SLAs differ significantly from one another.

[0028] Therefore, p i the permissible injury probability for the VMs containing the elements of subgroup G i For each subgroup G i the occurring probability p' i as p'1=p1 and p' i =p i -p i-1 for 1 <i≤n definiert werden, wobei jeder Untergruppe G i a priority (G i ) is assigned so that the priority (G i ) > Priority (G i+1 ) and each subgroup G i is a sufficiently high preference over a subgroup G jfor j>i. Therefore, resources G j be assigned if the demands of subgroups G i with i <j erfüllt sind. Demzufolge kann einer Gruppe mit einer niedrigeren normierten Verletzungswahrscheinlichkeit Priorität gegenüber einer Gruppe mit einer höheren normierten Verletzungswahrscheinlichkeit eingeräumt werden.

[0029] In one embodiment, a group G i be defined as a pool of resources, where each subpool has no reservation and no maximum value and where, in addition, the following applies to the corresponding share: Share (G i ) is defined as the proportion (G i ) = r* share (G i +1), where the constant ratio r is sufficiently large (e.g. at least 100) so that resources of group G i can be allocated if the required resources are preferably allocated to all groups G k are fully assigned, so that k <i.

[0030] The effective size (ES) for a group G of VMs with a maximum permissible violation probability p can be defined by: ES(G,p)=∑jεGμj+Zα(∑jεGσj2)1 / 2 where µ j and σ j denotes the mean and standard deviation of the resource demand of each VM j in group G and α = 1-p and Zα denotes the α-percentile value of the normal distribution of unit N(0,1).

[0031] In one embodiment, the total effective size of G may be calculated as follows based on a conventional effective size estimate of the effective size of the jointly ingested VM mix: ES(G)=∑iES(Gi,p′i)

[0032] In another embodiment, the effective total size of G can be calculated as follows: Occurring probability p' i defined as shown above. Calculate effective size for each group

[0033] Define G' i as the union of the subgroups G j for j≤i : G′i=Uj≤iGj Calculate ES(G) as: ES(G)=Maxi ES(G′i,p′i)

[0034] The above calculation scheme for ES(G) can be considered more efficient than the calculation described in detail in the previous scheme. Regardless, for any implementation that uses the union set derived from probability theory, the probability of violation for the group G is i in both embodiments at most p i .

[0035] In Fig. For example, assume that 10 VMs (e.g., V1, V2, ..., V10) are to be placed on a given host without violating the VMs' probability of failure. The VMs can be divided into three groups, for example, based on the maximum permissible probability of failure: G1 - with injury probability p1 = 0.01% G2 - with injury probability p2 = 0.1% G3 - with injury probability p3 = 1.0%where: G1={v1,v2,v2} G2={v4,v5,v6} G3={v7,v8,v9,v10}

[0036] The new groups are derived from G1 / G2 / G3 and their associated injury probabilities: G1' G2' and G3' are defined as follows: G1′=G1 that is{v1,v2,v3} G2′=G1∪G2 that means{v1,v2,v3,v4,v5,v6} G3′=G1∪G2∪G3 i.e. all 10 VMs

[0037] Corresponding probabilities for the G i ' can be represented as follows: G1′ has an associated probability:p1′=p1=0.01% G2′ has a corresponding probability: p2'=p2−p1=0.1%−0.01=0.09% G3' has a corresponding probability: p3'=p3−p2=1.0%−0.1%=0.09%

[0038] For each of the G i ' the effective size ES(G i '), which corresponds to a homogeneous injury probability p i ' can be calculated as follows: G1'p1'results in ES1 G2'p2' results in ES2 G3'p3' results in ES3 Effective size: ES=max(ES1,ES2,ES2)

[0039] For a given VM population and its derived effective size ES, calculated as explained above, the values ​​of ES can be understood as a capacity requirement for a host that would accommodate the 10 VMs. If the host capacity is at least ES, each VM has a probability of failure that is at most equal to the required probability of failure of the VMs. To ensure that a group of VMs belongs to the correct priority level (e.g., in VMware, the concept of priority assignment is realized by assigning a corresponding higher number of shares to a VM or to a subset of VMs), the shares in the above example can be assigned as follows: G3 with associated SHARES=1 (the lowest priority) G2 with associated SHARES=G3*100=100 G1 with associated SHARES=G2*100=10000 (the highest priority)

[0040] This share setting ensures that the hypervisor 112 prioritizes the different VMs as needed, so that in the event of contention, the violation occurs in the lowest priority groups.

[0041] In this specification, references to "an embodiment," "one or more embodiments," or the like mean that the particular element, feature, structure, or characteristic being described is included in at least one embodiment of the disclosed subject matter. In particular, the presence of such language in this specification should not be construed as referring to the same embodiment, nor should such language be interpreted as referring to mutually exclusive embodiments with respect to the discussed features or elements.

[0042] In various embodiments, the claimed subject matter may be implemented as a combination of hardware and software elements, or alternatively, solely in hardware or solely in software. Furthermore, data processing systems and program software disclosed herein may comprise a controlled data processing environment represented in terms of hardware components or logical code executed to perform methods and processes that achieve the results contemplated herein. When performed by a general-purpose data processing system or machine, these methods and processes transform the general-purpose machine into a special-purpose machine.

[0043] In the Fig. 2A and Fig. 2B, a data processing system environment according to an exemplary embodiment may include a hardware environment 1110 and a software environment 1120. The hardware environment 1110 may include logic units, circuits, or other machines and equipment that provide an execution environment for the components of the software environment 1120. The software environment 1120, in turn, may provide the execution instructions, including the basic operating settings and configurations for the various components of the hardware environment 1110.

[0044] In Fig. 2A, the application software and logical code disclosed herein may be implemented in the form of machine-readable code executed by one or more data processing systems represented by the example hardware environment 1110. As illustrated, the hardware environment 110 may include a processor 1101 connected to one or more storage elements via a system bus 1100. The storage elements may include, for example, local memory 1102, storage media 1106, cache memory 1104, or other machine-readable or computer-readable media. In the context of this disclosure, a machine-readable or computer-readable medium may include any recordable article that can be used to contain, store, transmit, distribute, or transport program code.

[0045] A computer-readable storage medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor medium, system, apparatus, or device. The computer-readable storage medium may also be implemented, without limitation, in a propagation medium to the extent that such implementation is considered legally required subject matter. Examples of a computer-readable storage medium may, where appropriate, include semiconductor or solid-state memory, magnetic tape, a removable computer diskette, random access memory (RAM), read-only memory (ROM), a rigid magnetic disk, an optical disk, or a carrier wave. Current examples of optical disks include floppy disks, read-only memory (CD-ROM), disk read / write (CD-RW), digital video disks (DVDs), high-definition video disks (HD-DVDs), or Blu-ray™ disks.

[0046] In one embodiment, a processor 1101 loads executable code from a storage medium 1106 into local memory 1102. A cache memory 1104 optimizes processing time by providing temporary storage to reduce the frequency of code loading for execution. One or more user interface devices 1105 (e.g., keyboard, pointing device, etc.) and a display screen 1107 may be connected to the other elements in hardware environment 1110, either directly or, for example, via an intermediate I / O controller 1103. A data transmission interface device 1108, such as a network adapter, may be provided to enable hardware environment 1108 to communicate with local or remote data processing systems, printers, and storage devices via intermediate private or public networks (e.g., the Internet).Wired or wireless modems and Ethernet cards are some of the example types of network adapters.

[0047] It is worth noting that in certain implementations, the hardware environment 1110 may not include some or all of the above-mentioned components, or it may include additional components to provide additional functionality or usability. Depending on the intended use and configuration, the hardware environment 1110 may be a machine such as a desktop or laptop computer, or another computing device, optionally embodied in an embedded system such as a set-top box, a personal digital assistant (PDA), a personal media player, a mobile data transmission device (e.g., a wireless phone), or other similar hardware platforms having information processing or data storage capabilities.

[0048] In some embodiments, a data transmission interface 1108 acts as a data transmission port for providing means for communicating data with one or more data transmission systems by transmitting and receiving digital, electrical, electromagnetic, or optical signals carrying analog or digital data streams representing various types of information, including program code. Data transmission may be established via a local or remote network, or alternatively, via transmission over the air or other medium, including, without limitation, propagation via a carrier wave.

[0049] As illustrated herein, the disclosed software elements executing on the illustrated hardware elements are defined according to logical or functional relationships that are exemplary in nature. However, it should be noted that the corresponding methods implemented by the exemplary software elements may also be encoded in the hardware elements, e.g., by configured and programmed processors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), and digital signal processors (data storage systems).

[0050] In Fig. 2, a software environment 1120 may be generally divided into two classes, comprising system software 1121 and application software 1122 executing in one or more hardware environments 1110. In one embodiment, the methods and processes disclosed herein may be implemented as system software 1121, application software 1122, or a combination thereof. The system software 1121 may comprise control programs, such as an operating system (OS) or an information management system, that instruct one or more processors 1101 (e.g., microcontrollers) in the hardware environment 1110 how to function and process information. The application software 1122 may comprise, but is not limited to, program code, data structures, firmware, resident software, microcode, or any other form of information or routines that can be read, analyzed, or executed by a processor 1101.

[0051] In other words, application software 1122 may be implemented as program code embedded in a computer program product in the form of a machine-usable or computer-readable storage medium that provides program code for use by or in connection with a machine, computer, or any instruction execution system. Furthermore, application software 1122 may include one or more computer programs that execute on top of system software 1121 after being loaded from storage media 1106 into local memory 1102. In a client-server architecture, application software 1122 may include client software and server software. For example, in one embodiment, client software may execute on a client computing system that is distinct and separable from a server computing system on which server software executes.

[0052] The software environment 1120 may also include browser software 1126 for accessing data available over local or remote computing networks. Furthermore, the software environment 1120 may include a user interface 1124 (e.g., a graphical user interface (GUI)) for receiving commands and data. It should be noted again that the hardware and software architectures and environments described above are merely exemplary. Therefore, one or more embodiments may be implemented over any type of system architecture, functional or logical platform, or processing environment.

[0053] It should also be understood that the logical code, programs, modules, processes, methods, and the order in which the corresponding processes of each method are executed are purely exemplary. Depending on the implementation, the processes or any underlying sub-processes and methods may be executed in any order or concurrently, unless otherwise stated in this disclosure. Unless specifically stated otherwise, the definition of logical code in the context of this disclosure is not related to or limited to any particular programming language and may include one or more modules executing on one or more processors in distributed, non-distributed, single-processor, or multi-processor environments.

[0054] As will be apparent to one skilled in the art, a software embodiment may include firmware, resident software, microcode, etc. Certain components that include software or hardware, or combine software and hardware aspects, may be referred to generally herein as a "circuit," "module," or "system." Furthermore, the disclosed subject matter may be implemented as a computer program product embodied in one or more computer-readable media having computer-readable program code embodied thereon. Any combination of one or more computer-readable media may be used. The computer-readable storage medium may be a computer-readable signal medium or a computer-readable storage medium. A computer-readable storage medium may, for example,be, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, device or unit, or any suitable combination of the foregoing.

[0055] In the context of this document, a computer-readable storage medium may be any tangible medium capable of containing or storing a program for use by or in connection with an instruction execution system, apparatus, or device. A computer-readable signal medium may contain a propagated data signal having computer-readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electromagnetic, optical, or any suitable combination thereof. A computer-readable signal medium may be any computer-readable medium, other than a computer-readable storage medium, capable of transmitting, disseminating, or transporting a program for use by or in connection with an instruction execution system, apparatus, or device.

[0056] Program code embodied on a computer-readable medium may be transmitted using any suitable medium, including, but not limited to, wireless, wireline, fiber optic cable, RF media, or any suitable combination of the foregoing. Computer program code for performing operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++, or the like, and conventional procedural programming languages ​​such as the "C" programming language or similar programming languages.

[0057] The program code may run only on a user's computer, partially on a user's computer, as a standalone software package, partially on a user's computer and partially on a remote computer, or only on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (e.g., over the Internet using an Internet service provider).

[0058] Certain embodiments of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be appreciated that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to form a machine, such that instructions executing via the processor of the computer or other programmable data processing apparatus generate means for implementing the functions / effects specified in the flowchart and / or block diagram block or blocks.

[0059] These computer program instructions may also be stored in a computer-readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner such that the instructions stored in the computer-readable medium produce an article of manufacture, including instructions that implement the function / effect specified in the flowchart and / or block diagram block(s).

[0060] The computer program instructions may also be loaded into a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable data processing apparatus, or other devices to produce a computer or machine implemented process, such that the instructions executing on the computer or other programmable device provide processes for implementing the functions / effects specified in the block or blocks of the flowchart and / or block diagram.

[0061] The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or section of code comprising one or more executable instructions for implementing the specified logical function(s). It should also be noted that in some alternative implementations, the functions specified in the block may not occur in the order indicated in the figures.

[0062] For example, two blocks shown in sequence may actually execute substantially concurrently, or the blocks may occasionally execute in the reverse order depending on the functionality involved. It is also noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by specialized hardware-based systems that perform the specified functions or effects, or combinations of specialized hardware and computer instructions.

[0063] The claimed subject matter has been provided herein with reference to one or more features or embodiments. One skilled in the art will recognize and appreciate that, despite the detailed nature of the exemplary embodiments provided herein, changes and modifications may be applied to these embodiments without limiting or departing from the generally intended scope. These and numerous other adaptations and combinations of the embodiments provided herein are within the scope of the disclosed subject matter defined by the claims and their full set of substitutions.

[0064] Cloud computing is a service delivery model that enables seamless, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage facilities, applications, virtual machines, and services) that can be rapidly provisioned and deprovisioned with minimal management effort or interaction with a service provider.

[0065] Using "self-service on demand," a cloud customer can automatically provision computing capabilities such as server time and network storage on demand, without requiring human interaction with the service provider. Extensive network access capabilities can be provided over a network, and access can be provided through standard mechanisms that support the use of heterogeneous thin- or thick-client platforms (e.g., mobile phones, laptops, and PDAs).

[0066] Resource pooling allows a provider's computing resources to be pooled to serve multiple customers using a multi-tenant model with diverse physical and virtual resources that are dynamically allocated and reassigned as needed. There is a level of location independence in that the customer generally has no control or knowledge of the exact location of the deployed resource, but they may be able to specify the location at a higher level of abstraction (e.g., country, state, or data center).

[0067] Features for rapid adaptability can be provisioned quickly and elastically, in some cases automatically for rapid expansion and rapidly released for rapid contraction. To the customer, the features available for provisioning often appear unlimited and can be purchased in any quantity at any time. A metered service enables cloud systems to automatically control and optimize resource usage by taking advantage of a metering function at a specific level of abstraction appropriate for the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported on, providing transparency to both the provider and the customer of the service used.

[0068] Several service models are available depending on the implementation. With Software as a Service (SaaS), the functionality provided to the customer is to use the provider's applications running on a cloud infrastructure. The applications are accessible from various client devices via a thin-client interface such as a web browser (e.g., web-based email). The customer does not manage or control the underlying cloud infrastructure, which includes the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

[0069] With Platform as a Service (PaaS), the functionality provided to the customer is to deploy applications created or acquired by the customer on the cloud infrastructure using programming languages ​​and tools supported by the provider. The customer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and possibly over configuration settings of an application hosting environment.

[0070] With Infrastructure as a Service (IaaS), the functionality provided to the customer consists of providing processing, storage, networking, and other basic computing resources, allowing the customer to arbitrarily deploy and operate software, which may include operating systems and applications. The customer does not manage or control the underlying cloud infrastructure, but does have control over operating systems, storage, deployed applications, and, to a limited extent, possibly also over selected network components (e.g., host firewalls).

[0071] Several deployment models can be deployed. A private cloud provides a cloud infrastructure operated solely for one organization. It can be managed by the organization or a third party and can be hosted internally or externally. A community cloud provides a cloud infrastructure shared by multiple organizations, supporting a specific community united by common concerns (e.g., mission statement, security requirements, strategy, and compliance considerations). It can be managed by the organizations or a third party and can be hosted internally or externally.

[0072] A public cloud can provide cloud infrastructure made available to the general public or a large industry group and owned by an organization that sells cloud services. A hybrid cloud provides cloud infrastructure that is a composite of two or more clouds (private, community, or public) that remain separate entities but are interconnected by a standardized or proprietary technology that enables data and application mobility (e.g., cloud bursting for load balancing between clouds).

[0073] A cloud computing environment is service-oriented with a focus on state independence, low coupling, modularity, and semantic interoperability. The core of cloud computing is an infrastructure that comprises a network of interconnected nodes. Fig. Figure 3C shows a schematic representation of an example cloud computing node. Cloud computing node 2010 is an example of a suitable cloud computing node and is not intended to suggest any limitation regarding the scope of use or function of embodiments described herein. Nevertheless, cloud computing node 2010 may be implemented and / or perform all of the functions presented above.

[0074] A computer system / server 2012 is present within the cloud computing node 2010 and may operate with numerous other general-purpose or special-purpose computing system environments or configurations. Examples of known computing systems, environments, and / or configurations suitable for use with the computer system / server 2012 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe systems, and distributed cloud computing environments including any of the above systems or devices, and the like.

[0075] The computer system or server 2012 may be described in the general context of computer system-executable instructions, such as program modules executed by a computer system. In general, program modules may include routines, programs, objects, components, logic, data structures, etc., that perform specific tasks or implement certain abstract data types. The computer system or server 2012 may be implemented in distributed cloud computing environments where tasks are executed by remote processing units connected by a data transmission network. In a distributed cloud computing environment, program modules may reside in both local and remote computer system storage media, including memory units.

[0076] As in Fig. 3C, the computer system or server 2012 in the cloud computing node 2010 is shown in the form of a general-purpose computing device. Components of the computer system or server 2012 may include, but are not limited to, one or more processors or processing units 2016, a system memory 2028, and a bus 2018 that connects the various system components, including the system memory 2028, to the processor 2016.

[0077] Bus 1018 represents one or more types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus, using one of a variety of bus architectures. By way of example and without limitation, such architectures include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus.

[0078] The computer system or server 2012 typically includes a variety of computer-readable media. Such media may be any available media accessible by the computer system or server 2012, and may include both volatile and non-volatile media, both removable and non-removable media. The system memory 2028 may include computer system-readable media in the form of volatile memory, such as random access memory (RAM) 30 and / or cache memory 32.

[0079] The computer system or server 2012 may further include other removable / non-removable, volatile / non-volatile computer system storage media. The storage system 34 may, for example, be provided for reading from and writing to a non-removable, non-volatile magnetic medium (not shown and commonly referred to as a "hard disk drive"). Although not shown, a magnetic disk drive for reading from and writing to a non-volatile removable magnetic disk (e.g., a "floppy disk") and an optical disk drive for reading from or writing to a non-volatile removable optical disk such as a CD-ROM, a DVD-ROM, or other optical media may be provided.

[0080] In certain cases, the above-mentioned components may be connected to the bus 2018 through one or more data media interfaces. As further illustrated and described below, the memory 2028 may include at least one computer program product comprising a group of program modules (e.g., at least one program module) configured to perform the functions of one or more embodiments.

[0081] The program / utility 2040, comprising a set of program modules 42 (at least one program module), as well as an operating system, one or more application programs, other program modules, and program data, may be stored in memory 2028, by way of example and not limitation. Each of the operating system, one or more application programs, other program modules, and program data, or certain combinations thereof, may include an implementation of a network processing environment. The program modules 42 generally perform the functions and / or methods of one or more embodiments.

[0082] The computer system or server 2012 may also communicate with one or more external devices 2014 such as a keyboard, a pointing device, a display 2024, etc.; one or more devices that enable a user to interact with the computer system or server 2012; and / or any devices (e.g., network card, modem, etc.) that enable the computer system or server 2012 to communicate with one or more other computing devices. Such communication may occur via I / O interfaces 2022. Furthermore, the computer system or server 2012 may communicate with one or more networks such as a local area network (LAN), a general purpose wide area network (WAN), and / or a public network (e.g., the Internet) via a network adapter 2020.

[0083] As illustrated, the network adapter 2020 communicates with the other components of the computer system or server 2012 via the bus 2018. However, it should be understood that other hardware and / or software components not shown could be used in conjunction with the computer system or server 2012. Examples include, but are not limited to, microcode, device drivers, redundant processing units, arrays of external disk drives, RAID systems, tape drives, data archiving storage systems, etc.

[0084] In Fig. 3C depicts an illustrative cloud computing environment 2050. As shown, the cloud computing environment 2050 includes one or more cloud computing nodes 2010 with which local computing devices used by cloud customers, such as a personal digital assistant (PDA) or cellular phone 2052A, a desktop computer 2052B, a laptop computer 2054C, and / or a vehicle computing system 2054N, can communicate.

[0085] The nodes 2010 can exchange data with each other. They can be grouped (not shown) physically or virtually in one or more networks, such as the private, community, public, or hybrid clouds described above, or a combination thereof. This enables the cloud computing environment 2050 to offer infrastructure, platforms, and / or software as services for which a cloud customer does not need to maintain resources in a local computing unit.

[0086] It is clear that the types of data processing units 52A to N shown in Fig. 3C are intended to be exemplary only, and that the computing nodes 2010 and the cloud computing environment 2050 may communicate with any type of computer-based device over any type of network and / or network-addressable connection (e.g., using a web browser).

[0087] In Fig. Figure 3C shows a group of functional abstraction layers used by the cloud computing environment 2050 ( Fig. 3C). It should be clear in advance that the Fig. The components, layers, and functions shown in Figure 3C are intended to be illustrative of one or more embodiments and are not limited to them. As shown, the following layers and corresponding functions are provided.

[0088] The hardware and software layer 2060 contains hardware and software components. Examples of hardware components include mainframes, in one example, IBM® zSeries® systems; servers based on a RISC (Reduced Instruction Set Computer) architecture, in one example, IBM pSeries® systems; IBM xSeries® systems; IBM BladeCenter® systems; storage devices; network and network processing components. Examples of software components include network application server software, in one example, IBM WebSphere® application server software; and database software, in one example, IBM DB2® database software. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, and DB2 are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide.)

[0089] The virtualization layer 2062 represents an abstraction layer from which the following examples of virtual entities may be deployed: virtual servers; virtual storage; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual clients. In one example, the management layer 2064 may provide the functions described below. "Resource provisioning" is the dynamic procurement of computing resources and other resources used to perform tasks in the cloud computing environment.

[0090] Metering and Pricing provides cost tracking for the resources used in the cloud computing environment, as well as billing or invoicing for the use of those resources. In one example, these resources might include application software licenses. Security provides identity verification for cloud customers and tasks, as well as protection of data and other resources. User Portal provides access to the cloud computing environment for customers and system administrators. Service Level Management allocates and manages cloud computing resources to ensure compliance with prescribed service levels.

[0091] Service Level Agreement Planning and Fulfillment (SLA Planning and Fulfillment) provides preparatory ordering and procurement of cloud computing resources for which future demand is expected according to a service level agreement. Workload layer 2066 provides examples of the functionality for which the cloud computing environment can be used. Examples of workloads and functions that can be provided by this layer include: mapping and navigation; software development and lifecycle management; delivery of educational content in the virtual classroom; data analytics processing; transaction processing, etc.

Claims

[1] A method for deciding whether a plurality of virtual machines (VMs) can be hosted in a data processing system having resources to support at least one of the VMs, the method comprising: Determining a maximum permissible violation probability (maxPermInfrProb(v)) for a VM(v), where “v” is a value from 1 to n such that n is the number of VMs in a set G, as stipulated by SLAs of the VMs; Dividing the set G into a plurality of groups G i (G1, ... G i ,... G n ), so that each group is independent of the value maxPermInfrProb, which is valid for elements of the group G i is defined, is homogeneous; Organizing the groups G i based on the value of maxPerm InfrProb for each group G i ; Calculate an effective size (ES) for the groups G i , where a value maxPermInfrProb(G i) according to a statistical record of resource requirements for VMs in group G i is calculated; where the effective total size of the group G i is calculated on the following basis: Defining new groups (G'1, ... G' i ,... G' n ), so that G' i the union of G1, G2, ... G i is; Assigning a second threshold providing a maximum permissible injury probability (maxPermInfrProb') to the new groups (G'1, ... G' i ,... G' n ), so that: maxPermInfrProb'(G'1)=maxPermInfrProb(G1) maxPermInfrProb'(G'i)=maxPermInfrProb(Gi)−maxPermInfrProb(Gi−1) where the effective total size of the group G is equal to the maximum value of the ES(G' i ) is. [2] The method of claim 1, wherein a feasibility of hosting the plurality of VMs in the data processing system depends on the effective total size of G. [3] The method of claim 1, wherein the plurality of virtual machines (VMs) are receivable in a data processing system in response to determining that the effective total size of G is less than or equal to the host capacity. [4] Method according to claim 3, wherein the affiliations of shares belonging to a group G i are such that the share values ​​increase with a decrease in the value of maxPermInfrProb, which allows resource allocation decisions to be made in the event of competition by allocating resources according to the decreasing value of maxPermInfrProb. [5] A system for deciding whether a plurality of virtual machines (VMs) can be included in a data processing system with resources to support at least one of the VMs, the system comprising - one or more computer processors, - one or more computer-readable storage media and - computer program instructions stored in the one or more computer-readable storage media, wherein the computer program instructions, when executed by the one or more computer processors, cause the latter to carry out the method according to any one of claims 1 to 4. [6] A computer program product comprising a non-transitory data storage medium with a computer-readable program for deciding whether a plurality of virtual machines (VMs) can be accommodated in a data processing system, the computer-readable program, when executed in a computer, causing the computer to carry out the method according to any one of claims 1 to 4.

Citation Information

Patent Citations

  • DYNAMIC PLACEMENT OF VIRTUAL MACHINES FOR MANAGING VIOLATIONS OF SERVICE LEVEL AGREEMENTS (SLAs)

    US20080295096A1

  • Autonomic provisioning of hosted applications with level of isolation terms

    US20090238078A1

  • Algorithm for minimizing rebate value due to SLA breach in a utility computing environment

    US7269652B2

  • Communication apparatus and communication method

    US8830842B2