Temporary resource scheduling in cloud computing environments
The system optimizes resource scheduling in cloud environments by tentatively allocating resources to virtual units based on constraints and weights, addressing inefficiencies and improving timeliness and efficiency.
Patent Information
- Application Number
- JP2025503094
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-08-03
- Filing Date
- 2023-07-19
- Publication Date
- 2025-08-20
AI Technical Summary
Existing resource scheduling methods in cloud computing environments face inefficiencies such as underutilization and potential failure to satisfy group request constraints, particularly when allocating resources to virtual units.
A system for tentatively scheduling resources in a cloud computing environment by allocating resources to virtual units based on topology constraints and assigning weights, allowing reallocation to minimize the sum of resource weights in response to new requests.
This approach enhances resource efficiency and timeliness, reduces execution time, and minimizes network bandwidth and power consumption by optimizing resource allocation and reallocation.
Smart Images

Figure 2025527157000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates generally to provisional resource scheduling in a cloud computing environment, and more particularly to processing group requests involving virtual units for hosting applications and provisionally allocating resources to the virtual units. [Background technology]
[0002] A networked computing environment (e.g., a cloud computing environment) is an enhancement to its predecessor, the grid environment, whereby multiple grid and other computational resources are further enhanced by one or more additional layers of abstraction (e.g., a cloud layer), so that separate devices appear to the end consumer as a single pool of seamless resources. These resources may include such things as physical or logical computing engines, servers and devices, device memory, and storage devices, among others.
[0003] Providers in a networked computing environment often offer services online via remote servers, which can be accessed via web services and / or software, such as a web browser. Individual clients can run virtual machines (VMs) that utilize these services and store data in the networked computing environment. This may allow a single physical server to host and / or run many VMs simultaneously.
[0004] Approaches to computing resource scheduling and allocation in cloud computing environments include reserving resources before they are needed, which leads to underutilization of resources. Another approach is just-in-time allocation of resources, which can potentially fail to satisfy group request constraints. Summary of the Invention
[0005] According to one embodiment of the present invention, resources are tentatively scheduled in a cloud computing environment. More specifically, a first group request for hosting an application is obtained. The first group request includes one or more virtual units, each having one or more topology constraints. One or more resources are scheduled for each of the virtual units. The scheduling includes tentatively allocating resources to each of the virtual units according to the topology constraints. Each resource includes a respective weight. In response to obtaining a second group request, the resources are tentatively reallocated to one or more virtual units of the second group request according to the one or more topology constraints of the second group request and the respective weight of each of the resources. This reallocation minimizes the sum of the respective weights of each of the resources. A new respective weight is then assigned to each of the resources.
[0006] One aspect of the present invention is a method for tentatively scheduling one or more resources in a cloud computing environment, comprising: obtaining a first group request for hosting an application, wherein the first group request includes one or more virtual units, each of the one or more virtual units including one or more topology constraints; and scheduling one or more resources for each of the one or more virtual units, wherein the scheduling includes scheduling the one or more resources to the one or more virtual units according to the one or more topology constraints. in response to receiving a second group request, tentatively reallocating the one or more resources to one or more virtual units of the second group request according to one or more topology constraints of the second group request and the respective weights of each of the one or more resources, wherein the reallocating minimizes a sum of the respective weights of each of the one or more resources; and assigning a new respective weight to each of the one or more resources.
[0007] Another aspect of the invention is a computer system for tentatively scheduling one or more resources in a cloud computing environment, the computer system comprising: a memory medium having program instructions; a bus coupled to the memory medium; and steps that, when executing the program instructions, cause the system to obtain a first group request for hosting an application, the first group request including one or more virtual units, each of the one or more virtual units including one or more topology constraints; and steps of scheduling one or more resources for each of the one or more virtual units according to the one or more topology constraints. and a processor for executing the program instructions coupled to a provisional resource scheduler engine via the bus to cause the computer system to perform a provisional resource scheduler engine procedure for provisionally allocating the one or more resources to each of a number of virtual units of the second group request, each of the one or more resources including a respective weight; a provisional resource scheduler engine procedure for provisionally reallocating the one or more resources to one or more virtual units of the second group request according to one or more topology constraints of the second group request and the respective weights of each of the one or more resources, in response to receiving a second group request, wherein the reallocating procedure minimizes a sum of the respective weights of each of the one or more resources; and a provisional resource scheduler engine procedure for provisionally reallocating the one or more resources to each of the one or more virtual units of the second group request according to one or more topology constraints of the second group request and the respective weights of each of the one or more resources,
[0008] Yet another aspect of the present invention is a computer program product for tentatively scheduling one or more resources in a cloud computing environment, the computer program product comprising: a computer-readable hardware storage device; and program instructions stored on the computer-readable hardware storage device, the program instructions including: obtaining a first group request for hosting an application, the first group request including one or more virtual units, each of the one or more virtual units including one or more topology constraints; and scheduling one or more resources for each of the one or more virtual units, the scheduling the computer program product includes: a step of tentatively allocating the one or more resources to each of the one or more virtual units according to the one or more topology constraints, each of the one or more resources including a respective weight; a step of tentatively reallocating the one or more resources to one or more virtual units of the second group request according to the one or more topology constraints of the second group request and the respective weight of each of the one or more resources, wherein the reallocating step minimizes a sum of the respective weights of each of the one or more resources; and a step of assigning a new respective weight to each of the one or more resources.
[0009] Furthermore, any of the components of the present invention may be deployed, managed, serviced, etc. by a service provider offering to implement passive monitoring in computer systems.
[0010] Embodiments of the present invention also provide related systems, methods, and / or program products. [Brief explanation of the drawings]
[0011] These and other features of the present invention will be more readily understood from the following detailed description of the various aspects of the invention, read in conjunction with the accompanying drawings.
[0012] [Figure 1] FIG. 1 illustrates an architecture in which the present invention is implemented, according to an exemplary embodiment of the present invention.
[0013] [Figure 2] FIG. 1 illustrates a cloud computing environment in accordance with an exemplary embodiment of the present invention.
[0014] [Figure 3] FIG. 1 illustrates abstraction model layers according to an exemplary embodiment of the present invention.
[0015] [Figure 4] FIG. 1 shows a system diagram illustrating the functionality discussed herein in accordance with an exemplary embodiment of the present invention.
[0016] [Figure 5] FIG. 1 illustrates topology constraints that may be associated with resources, according to an exemplary embodiment.
[0017] [Figure 6] FIG. 10 illustrates factors used in determining resource weights according to an exemplary embodiment.
[0018] [Figure 7A] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7B] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7C] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7D] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7E]FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7F] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7G] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7H] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7I] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7J] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7K] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7L] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment. [Figure 7M] FIG. 10 illustrates a state diagram illustrating a tentative scheduling process according to an exemplary embodiment.
[0019] [Figure 8] FIG. 1 illustrates a process flowchart for a tentative scheduling process according to an exemplary embodiment.
[0020] The drawings are not necessarily to scale. The drawings are representational only and are not intended to portray specific parameters of the invention. The drawings are intended to depict only typical embodiments of the invention and therefore should not be considered limiting in scope. In the drawings, like reference numerals represent like elements. DETAILED DESCRIPTION OF THE INVENTION
[0021]
[0013] Exemplary embodiments will now be described more fully herein with reference to the accompanying drawings, in which exemplary embodiments are shown. It is understood that the present disclosure may be embodied in many different forms and should not be construed as limited to the exemplary embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art.
[0022] Furthermore, the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the disclosure. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms unless the context clearly dictates otherwise. Furthermore, the use of terms such as "a," "an," etc., does not denote a limitation of quantity, but rather denotes the presence of at least one of the referenced items. Furthermore, like elements in different figures may be assigned like element numbers. It will be further understood that the terms "comprises" and / or "comprising," or "includes," and / or "including," when used herein, specify the presence of referenced features, regions, integers, steps, operations, elements, components, and / or groups thereof, but do not exclude the presence or addition of one or more other features, regions, integers, steps, operations, elements, components, and / or groups thereof.
[0023] Unless specifically stated otherwise, terms such as "processing," "detecting," "determining," "evaluating," "receiving," or the like may be understood to refer to the actions and / or processes of a computer or computing system, or similar electronic data center device, that manipulate and / or transform data represented as physical quantities (e.g., electrons) in the registers and / or memory of the computing system into other data that is similarly represented as physical quantities in the memory, registers, or other such information storage, transmission, or viewing device of the computing system. Embodiments are not limited in this context.
[0024] As mentioned above, embodiments described herein provide tentative scheduling of resources in a cloud computing environment. More specifically, a first group request for hosting an application is obtained. The first group request includes one or more virtual units, each having one or more topology constraints. One or more resources are scheduled for each of the virtual units. The scheduling includes tentatively allocating resources to each of the virtual units according to the topology constraints. Each resource includes a respective weight. In response to obtaining a second group request, the resources are tentatively reallocated to one or more virtual units of the second group request according to the one or more topology constraints of the second group request and the respective weights of each of the resources. This reallocation minimizes the sum of the respective weights of each of the resources. A new respective weight is then assigned to each of the resources.
[0025] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings described herein is not limited to cloud computing environments. Rather, embodiments of the present invention can be implemented in conjunction with any other type of computing environment now known or later developed.
[0026] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with a service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.
[0027] The characteristics are as follows:
[0028] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed without requiring human interaction with the service provider.
[0029] Wide network access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (eg, cell phones, laptops, and PDAs).
[0030] Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. There is location independence in that consumers generally have no control or knowledge over the exact location of the provided resources, but may be able to specify location at a higher level of abstraction (e.g., country, state, or data center).
[0031] Rapid Elasticity: Capacity can be rapidly and elastically provisioned, in some cases automatically, to rapidly scale out, and rapidly released to rapidly scale in. To the consumer, the capacity available for provisioning often appears unlimited, and can be purchased in any quantity at any point in time.
[0032] Measured Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of utilized services.
[0033] The service model is as follows:
[0034] Software as a Service (SaaS): The consumer is offered the ability to use a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through a thin-client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
[0035] Platform as a Service (PaaS): The ability offered to consumers is to deploy applications they create or acquire, written using programming languages and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does control the deployed applications and, in some cases, the application host environment configuration.
[0036] Infrastructure as a Service (IaaS): The ability offered to consumers is to provision processing, storage, network, and other basic computing resources, on which they can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but rather controls the operating systems, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).
[0037] The deployment model is as follows:
[0038] Private Cloud: This cloud infrastructure operates solely for an organization. It may be managed by that organization or a third party and may exist on-premise or off-premise.
[0039] Community Cloud: This cloud infrastructure is shared by several organizations and supports a specific community with shared interests (e.g., mission, security requirements, policies, and compliance considerations). It may be managed by these organizations or a third party and may exist on-premises or off-premises.
[0040] Public Cloud: This cloud infrastructure is made available to the general public or large industry groups and is owned by an organization that sells cloud services.
[0041] Hybrid Cloud: This cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain distinct entities but are bound together by standard or proprietary technologies that allow for data and application portability (e.g., cloud bursting for load balancing between clouds).
[0042] Cloud computing environments are service-oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the core of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0043] 1, a schematic diagram of an example cloud computing node for tentatively scheduling resources in a cloud computing environment is shown and described. Cloud computing node 10 is merely one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of the embodiments of the present invention described herein. Nevertheless, cloud computing node 10 is capable of implementing and / or performing any of the functionality described above.
[0044] Within cloud computing node 10 resides computer system / server 12, which operates in conjunction with numerous other computing system environments or configurations. Examples of well-known computing systems, environments, and / or configurations that may be suitable for use with computer system / server 12 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 products, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like.
[0045] Computer system / server 12 is intended to represent any type of computer system / server implemented in the deployment / implementation of the teachings described herein. Computer system / server 12 may be described in the general context of computer system / server executable instructions, such as program modules, executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. In this particular example, computer system / server 12 may be implemented in a distributed cloud computing environment where tasks are performed by remote processing devices linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.
[0046] The computer system / server 12 in the cloud computing node 10 is shown in the form of a computing device. Components of the computer system / server 12 may include, but are not limited to, one or more processors or processing units 16, a system memory 28, and a bus 18 that couples various system components, including the system memory 28, to the processing units 16.
[0047] Bus 18 represents one or more of any of several 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 any of a variety of bus architectures, including, by way of example and not limitation, 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.
[0048] Processing unit 16 generally refers to any device that performs logical operations, computational tasks, control functions, etc. A processor may include one or more subsystems, components, and / or other processors. A processor typically includes various logic components that operate using a clock signal to latch data, advance logic states, synchronize computations and logical operations, and / or provide other timekeeping functions. In operation, processing unit 16 collects and routes signals representing inputs and outputs between external devices 14 and input devices (not shown). The signals may be transmitted via LANs and / or WANs (e.g., T1, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), wireless links (802.11, Bluetooth, etc.), etc. In some embodiments, signals may be encrypted, for example, using trusted key pair encryption. Different systems may transmit information using different communication paths, such as Ethernet or wireless networks, direct serial or parallel connections, USB, Firewire, Bluetooth, or other proprietary interfaces. (Firewire is a registered trademark of Apple Computer, Inc. Bluetooth is a registered trademark of the Bluetooth Special Interest Group (SIG).)
[0049] Generally, processing unit 16 executes computer program code, such as program code for tentatively scheduling resources in a cloud computing environment, that is stored in memory 28, storage system 34, and / or programs / utilities 40. While executing the computer program code, processing unit 16 may read and / or write data from memory 28, storage system 34, and programs / utilities 40.
[0050] Computer system / server 12 typically includes a variety of computer system-readable media. Such media may be any available media that is accessible by computer system / server 12 and includes both volatile and nonvolatile media, removable and non-removable media.
[0051] System memory 28 may include computer system-readable media in the form of volatile memory, such as random access memory (RAM) 30 and / or cache memory 32. Computer system / server 12 may further include other removable / non-removable, volatile / non-volatile computer system storage media (e.g., VCRs, DVRs, RAID arrays, USB hard drives, optical disk recorders, flash storage devices, and / or any other data processing and storage elements for storing and / or processing data). By way of example only, storage system 34 may be provided for reading from and writing to non-removable, non-volatile magnetic media (not shown, typically referred to as a "hard drive"). Although not shown, a magnetic disk drive may be provided for reading from and writing to removable, non-volatile magnetic disks (e.g., "floppy disks") and / or an optical disk drive may be provided for reading from or writing to removable, non-volatile optical disks, such as CD-ROMs, DVD-ROMs, or other optical media. In such cases, each may be connected to bus 18 by one or more data media interfaces. As further illustrated and described below, memory 28 may include at least one program product having a set (e.g., at least one) of program modules configured to perform the functions of embodiments of the present invention.
[0052] The program code embodied on the computer-readable medium may be transmitted using any suitable medium, including but not limited to wireless, wired, fiber optic cable, radio-frequency (RF), etc., or any suitable combination of the foregoing.
[0053] A program / utility 40 having a set (at least one) of program modules 42 may be stored in memory 28, by way of example and not limitation. Memory 28 may also include an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or some combination thereof, may comprise an implementation of a networked environment. Program modules 42 generally perform the functions and / or methodologies of embodiments of the present invention as described herein.
[0054] The computer system / server 12 may communicate with one or more external devices 14, such as a keyboard, pointing device, display 24, etc.; one or more devices that allow a consumer to interact with the computer system / server 12; and / or any device (e.g., a network card, modem, etc.) that allows the computer system / server 12 to communicate with one or more other computing devices. Such communication may occur via an I / O interface 22. Furthermore, the computer system / server 12 may communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), and / or a public network (e.g., the Internet), via a network adapter 20. As shown, the network adapter 20 communicates with other components of the computer system / server 12 via a bus 18. While not shown, it should be understood that other hardware and / or software components may be used in conjunction with the computer system / server 12. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.
[0055] Referring now to FIG. 2, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an automobile computer system 54N, may communicate. The nodes 10 may communicate with each other. They may be physically or virtually grouped (not shown) in one or more networks, such as a private, community, public, or hybrid cloud, or combinations thereof, as described hereinabove. This enables the cloud computing environment 50 to provide infrastructure, platform, and / or software as a service for which cloud consumers are not required to maintain resources on their local computing devices. The types of computing devices 54A-N shown in FIG. 2 are intended to be merely illustrative, and it will be understood that the computing nodes 10 and the cloud computing environment 50 may communicate with any type of computerized device over any type of network and / or network-addressable connection (e.g., using a web browser).
[0056] Referring now to Figure 3, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 2) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 3 are intended to be merely exemplary, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0057] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframes 61, RISC (reduced instruction set computer) architecture-based servers 62; servers 63; blade servers 64; storage devices 65; and networks and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0058] The virtualization layer 70 provides an abstraction layer at which the following examples of virtual entities are provided: virtual servers 71; virtual storage 72; virtual networks, including virtual private networks 73; virtual applications and operating systems 74; and virtual clients 75.
[0059] In one example, management layer 80 may provide the functions described below. Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification of cloud consumers and tasks, as well as protection of data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance arrangements and procurement of cloud computing resources where future requirements are anticipated according to SLAs.
[0060] Workload layer 90 provides examples of functions for which a cloud computing environment is utilized. Examples of workloads and functions provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction delivery 93, data analysis processing 94, transaction processing 95, and resource interim scheduling 96. As mentioned above, all of the foregoing examples described with respect to FIG. 3 are merely illustrative, and the present invention is not limited to these examples.
[0061] It will be understood that all functionality of the present invention as described herein may typically be performed by the preliminary resource scheduling 96 function (of the workload layer 90), which is tangibly embodied as a program module 42 having program code in the programs / utilities 40 (FIG. 1). However, this need not be the case. Rather, the functionality described herein may be performed / implemented and / or enabled by any of the layers shown in FIG.
[0062] Although this disclosure includes detailed descriptions of cloud computing, it is reiterated that implementation of the teachings described herein is not limited to cloud computing environments. Rather, some embodiments of the present invention are intended to be implemented in conjunction with any type of networked computing environment now known or later developed.
[0063] The inventors of the present invention have found that statically optimized placement for computing workloads in a cloud environment can be inefficient. The inventors have also found that allocating resources to applications at the time of a group request according to a group constraint can result in potential wastage of resources if the associated virtual unit requests are distant in time. The inventors have further found that allocating resources to virtual unit requests at the time the group request arrives can result in potential failure to satisfy the group constraint.
[0064] Accordingly, the inventors of the present invention have developed a system for tentatively scheduling resources in a cloud computing environment when a group request to host an application is received. The group request may include virtual units, each of which may include topology constraints. Computing resources may be tentatively allocated (i.e., allocations may be "penciled-in") to the virtual units according to the topology constraints.
[0065] Additionally, embodiments of the present invention provide several advantages over other resource scheduling and provisioning systems, including, but not limited to, increasing the efficiency and timeliness of provisioning resources for virtual units, reducing the overall execution time of an application, and reducing network bandwidth and power consumption during application execution.
[0066] Referring now to FIG. 4, a system diagram illustrating the functionality discussed herein is shown, according to one embodiment of the present invention. A standalone computer system / server 12 is shown in FIG. 4 for illustrative purposes only. When the teachings described herein are implemented in a networked computing environment, it is not necessary for each client to have a resource tentative scheduling engine 100 (hereinafter, “system 100”). Rather, all or a portion of system 100 can be loaded on a server or server-enabled device that communicates (e.g., wirelessly) with clients to provide tentative scheduling of resources in a cloud computing environment. Nevertheless, as shown, system 100 is shown within computer system / server 12. In general, system 100 can be implemented as program / utility 40 on computer system 12 of FIG. 1 and can enable the functionality described herein.
[0067] Among other functions, system 100 can tentatively schedule resources in a networked or cloud computing environment. To accomplish this, system 100 can include a set of components (e.g., program module 42 of FIG. 1 ) for carrying out embodiments of the present invention. These components can include, but are not limited to, a group request obtainer 102, a tentative resource allocator 104, and a resource weight allocator 106.
[0068] Through computer system / server 12, system 100 can communicate with cloud computing environment 110. Moreover, according to some embodiments of the present invention, system 100 can receive / obtain first group request 120. Execution of application-1 through application-n can be initiated by first group request 120 and / or other group requests. Application-1 through application-n can be executed on computer system / server 12 as shown in FIG. 4 or on any suitably configured computing resources located in cloud computing environment 110.
[0069] Resources may be tentatively scheduled by obtaining a first group request 120 for hosting an application using the group request obtainer 102. The first group request 120 may include virtual unit-1 through virtual unit-n, each of which may include topology constraints on resources 500 (described herein below with respect to FIG. 5). Resources from the cloud computing environment 110 may be scheduled for virtual unit-1 through virtual unit-n of the first group request 120 by tentatively allocating resources to each virtual unit according to each virtual unit's respective topology constraints 500 by the resource tentative allocator 104. Each of the resources may include a respective weight assigned by the resource weight allocator 106.
[0070] In response to receiving the second group request 130, resources from the cloud computing environment 110 may be tentatively reallocated to the virtual units of the second group request 130 according to the second group request's topology constraints 500 and the respective weights of each of the resources, such that the reallocation minimizes the sum of the respective weights of each of the resources. New respective weights may then be assigned to each of the resources. The respective weights of the resources may be calculated using the factors mentioned herein above, in conjunction with heuristics, data mining, and machine learning methods that utilize historical data of resource weight assignments and / or workload placements.
[0071] In response to receiving an activation request for a virtual unit, virtual unit-1 through virtual unit-n, the resources tentatively allocated to the virtual unit may be actually allocated to the virtual unit. In response to a placement failure of the first group request 120, the resources allocated to the virtual unit of the first group request 120 may be reallocated such that the topology constraints 500 of the first group request 120, the second group request 130, and other group requests are satisfied. Moreover, the resources allocated to the unactivated first virtual unit may be tentatively reallocated to the second virtual unit such that the topology constraints 500 of the group requests with which the first and second virtual units are associated are satisfied, and this reallocation is performed periodically.
[0072] 5, in conjunction with FIG. 4, examples of topology constraints on resources 500 are shown. These examples of topology constraints 500 include resource location 502, resource cost 504, resource availability 506, resource power consumption 508, resource network bandwidth 510, resource latency 512, and resource storage allocation 514.
[0073] Topology constraints 500 may be used to determine which resources meet the requirements set forth in a selected one of virtual units 1 through n of first group request 120 (shown in FIG. 4). For example, confidential data may require processing in a specific geographic location, which may be defined in resource location 502. Meeting the budgeted processing cost for an application may be defined in resource cost 504. Time-constrained processing may be restricted to resources with availability set forth in resource availability 506. Specifying a specific power consumption required by an application in resource power consumption 508 may be used to shift application execution to time periods or locations with lower power costs. Applications requiring large amounts of data network transmission may be restricted to resources with bandwidth specified in resource network bandwidth 510. Real-time or end-user-based applications requiring high responsiveness may specify a maximum latency using resource latency 512. Applications requiring frequent memory paging or large amounts of data storage may have a minimum amount of available free storage specified using resource storage quota 514.
[0074] 6 in conjunction with FIG. 4, which illustrates examples of factors utilized in calculating the weight of resource 600. These examples of factors utilized in calculating the weight of resource 600 include uniformity of resources requested by application 602, application complexity 604, nature of tasks performed by application 606, time of day of application execution 608, application user type 610, region in which application executes 612, application user group 614, adherence to and incentives for application system level agreements (SLAs) 616, application priority 618, phase of application execution 620, application resource consumption 622, application resource consumption flexibility 624, application execution duration 626, and application execution constraints 628.
[0075] As mentioned herein above with respect to FIG. 4 , resource weights 600 may be calculated using the factors mentioned herein above, in conjunction with heuristics, data mining, and machine learning methods that utilize historical data of resource weight assignments and / or workload placements. A resource with an assigned respective weight of 0 indicates that the resource is available for allocation. A resource with an assigned respective weight between 0 and 1 indicates that the resource is tentatively allocated. A resource with an assigned respective weight of 1 indicates that the resource has already been allocated. A first resource having an assigned respective weight greater than a second resource indicates that the first resource has lower priority for reallocation than the second resource. Generally, resources requested for actual allocation will have lower priority for reallocation (i.e., less likely to be reallocated) than resources that have been tentatively allocated.
[0076] 7A-7M in conjunction with FIG. 4, state diagrams illustrating the operation of resource interim scheduling engine 100 (shown in FIG. 4) are shown.
[0077] 7A shows two racks of servers, one using non-interim scheduling, hereafter referred to as "server rack 702," and the other using interim scheduling, hereafter referred to as "server rack 704." Incoming group requests 706A-D to both server racks are also shown. In addition, server rack 704 receives incoming interim group requests 700A-D for interim scheduling.
[0078] 7B shows the placement of group requests in two server racks. Provisional group requests 700A to 700D are simply placed provisionally.
[0079] FIG. 7C shows additional incoming group requests 708 to both server racks.
[0080] FIG. 7D shows the placement of additional group requests 708 in a server rack.
[0081] FIG. 7E shows an additional incoming group request 710 to both server racks.
[0082] 7F illustrates the placement of additional group requests 710 on a server rack. On server rack 702, which is not using tentative scheduling, additional group requests 710 may be assigned to any portion of the server rack that has suitable resources. On server rack 704, which is using tentative scheduling, additional group requests 710 are placed at locations on server rack 704 that allow the resources reserved for tentative group requests 700A-D to remain available.
[0083] FIG. 7G shows the completed group request 712 leaving the server rack, freeing up the resources on which the completed group request 712 was executing.
[0084] FIG. 7H shows a large additional incoming group request 714 to both server racks.
[0085] FIG. 7I shows the placement of a large additional group request 714 on a server rack 704, shifting the provisionally placed group requests 700C-D to the nearest free resource on the server rack 704, which also satisfies the constraints of the shifted provisionally placed group requests 700C-D.
[0086] FIG. 7J shows a small additional incoming group request 716 to both server racks.
[0087] 7K illustrates the placement of small additional group requests 716 on a server rack. On a server rack 702 not using tentative scheduling, small additional group requests 716 may be assigned to any portion of the server rack 702 that has suitable resources. On the other hand, on a server rack 704 using tentative scheduling, small additional group requests 716 are placed at locations on the server rack 704 that allow the resources reserved for tentatively placed group requests 700A-D to remain available.
[0088] 7L shows additional incoming group requests 720A-D to both server racks. The additional incoming group requests 720A-D are the actual requests corresponding to the hypothetical placed group requests 700A-D.
[0089] 7M shows how further additional group requests 720A-D are placed on server rack 704 using tentative scheduling, but further additional group requests 720A-D are not placed on server rack 702 using non-tentative scheduling. This allows tentatively allocated resources to remain available on server rack 704 due to successful placement of earlier arriving group requests relative to tentatively placed group requests 700A-D, as opposed to placing earlier arriving requests on server rack 702 without consideration of where future requests might need to be placed to avoid placement failures.
[0090] As shown in FIG. 8 , in one embodiment, a system (e.g., computer system / server 12) executes the methodology disclosed herein. A process flowchart 800 for tentatively scheduling resources in a cloud computing environment is shown. At 802, a first group request for hosting an application is obtained, the first group request including virtual units with topology constraints. At 804, resources for each of the virtual units are scheduled, which includes tentatively allocating resources to each of the virtual units according to the topology constraints, where each of the resources has a respective weight. At 806, a second group request is obtained. At 808, resources are tentatively reallocated to the virtual units of the second group request according to the topology constraints of the second group request and the respective weights of each of the resources, the reallocation minimizing the sum of the respective weights of the resources. At 810, each of the resources is assigned a new respective weight.
[0091] The flowcharts 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 a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions, that implements the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or operations or executes a combination of dedicated hardware and computer instructions.
[0092] Some of the functional components described herein are labeled as systems or units to more specifically emphasize their implementation independence. For example, a system or unit may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors, e.g., logic chips, transistors, or other discrete components. A system or unit may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like. A system or unit may also be implemented in software for execution by various types of processors. A system or unit or component of executable code may, for example, include one or more physical or logical blocks of computer instructions, which may be organized, for example, as an object, procedure, or function. Nevertheless, the executable files of an identified system or unit need not be physically located together and may include separate instructions stored in different locations that, when logically linked together, comprise the system or unit and achieve the stated purpose of the system or unit.
[0093] Furthermore, a system or unit of executable code may be a single instruction, or many instructions, and may even be distributed across several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules and may be embodied in any suitable form and organized within any suitable type of data structure. Operational data may be collected as a single data set or may be distributed across different locations, including different storage devices and separate memory devices.
[0094] Additionally, the system / unit may be implemented as a combination of software and one or more hardware devices. For example, the program / utility 40 may be embodied in a combination of software executable code stored on a memory medium (e.g., a memory storage device). In a further example, the system or unit may be a combination of a processor operating on a set of operational data.
[0095] As described above, some of the embodiments may be embodied in hardware. Hardware may be referred to as hardware elements. Generally, a hardware element may refer to any hardware structure arranged to perform a specific operation. In one embodiment, for example, a hardware element may include any analog or digital electrical or electronic component fabricated on a substrate. Fabrication may be performed using silicon-based integrated circuit (IC) technologies such as complementary metal oxide semiconductor (CMOS), bipolar, and bipolar CMOS (BiCMOS) technologies. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, etc.), integrated circuits, application specific integrated circuits (ASICs), programmable logic devices (PLDs), digital signal processors (DSPs), field programmable gate arrays (FPGAs), logic gates, registers, semiconductor devices, chips, microchips, chipsets, etc. However, the embodiments are not limited in this context.
[0096] Any of the components provided herein may be deployed, managed, serviced, etc. by a service provider offering to deploy or integrate a computing infrastructure with processes for tentatively scheduling resources in a cloud computing environment. Accordingly, embodiments herein disclose a process for supporting a computer infrastructure that includes integrating, hosting, maintaining, and deploying computer-readable code into a computing system (e.g., computer system / server 12), the code in combination with the computing system being capable of performing the functions described herein.
[0097] In another embodiment, the present invention provides a method for performing the process steps of the present invention on a subscription, advertising, and / or fee basis. That is, a service provider, such as a Solution Integrator, may offer to create, maintain, support, etc., a process for tentatively scheduling resources in a cloud computing environment. In this case, the service provider may create, maintain, support, etc., a computer infrastructure that performs the process steps of the present invention for one or more customers. In exchange, the service provider may receive payments from the customers under a subscription and / or fee agreement, and / or the service provider may receive payments from sales of advertising content to one or more third parties.
[0098] Also, as described above, some embodiments may be embodied in software. Software may be referred to as a software element. Generally, a software element may refer to any software structure arranged to perform certain operations. In one embodiment, for example, a software element may include program instructions and / or data adapted for execution by a hardware element, such as a processor. Program instructions may include an organized list of commands including words, values, or symbols arranged in a predetermined syntax that, when executed, can cause the processor to perform a corresponding set of operations.
[0099] The present invention may be a system, method, and / or computer program product at any possible level of technical detail of integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions for causing a processor to perform aspects of the present invention.
[0100] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves that record instructions, and any suitable combination of the foregoing. Computer-readable storage medium, as used herein, should not be construed as a transitory signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse passing through a fiber optic cable), or an electrical signal transmitted over a wire.
[0101] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions to a computer-readable storage medium in the respective computing / processing device for storage.
[0102] The computer-readable program instructions for carrying out the operations of the present invention may be either assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk, C++, or the like, and procedural programming languages such as the "C" programming language or similar. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions to personalize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the present invention.
[0103] Aspects 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 understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0104] These computer-readable program instructions can be provided to a processor of a computer or other programmable data processing apparatus to produce a machine, whereby the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions can also be stored on a computer-readable storage medium, whereby the instructions can instruct a computer, programmable data processing apparatus, and / or other device to function in a particular manner, such that the computer-readable storage medium having the instructions stored thereon comprises an article of manufacture including instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0105] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be executed on the computer, other programmable apparatus, or other device to generate a computer-implemented process, whereby the instructions executing on the computer, other programmable apparatus, or other device implement the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams.
[0106] The flowcharts 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 a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions, that implement the specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may actually be accomplished as a single step, or may be executed concurrently, substantially concurrently, partially, or fully in a time-overlapping manner, or the blocks may even be executed in the reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or operations or executes a combination of dedicated hardware and computer instructions.
[0107] The description of various embodiments of the present invention has been presented for illustrative purposes and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been selected to best explain the principles of the embodiments, their practical applications, or technical improvements over technologies found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.
[0108] It is apparent that there has been provided herein an approach for provisionally scheduling resources in a cloud computing environment. While the present invention has been particularly shown and described in conjunction with illustrative embodiments, it will be understood that variations and modifications will occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes that fall within the true scope of the invention.
Claims
1. 1. A computer-implemented method for tentatively scheduling one or more resources in a cloud computing environment, comprising: obtaining a first group request for hosting an application, wherein the first group request includes one or more virtual units, each of the one or more virtual units including one or more topology constraints; scheduling one or more resources for each of the one or more virtual units, wherein the scheduling comprises tentatively allocating the one or more resources to each of the one or more virtual units according to the one or more topology constraints, each of the one or more resources including a respective weight; in response to receiving a second group request, tentatively reallocating the one or more resources to one or more virtual units of the second group request according to one or more topology constraints of the second group request and the respective weights of each of the one or more resources, wherein the reallocating minimizes a sum of the respective weights of each of the one or more resources; and assigning a new respective weight to each of said one or more resources. A method comprising:
2. In response to receiving an activation request for a virtual unit, allocating to the virtual unit the one or more resources provisionally allocated to the virtual unit. The method of claim 1 further comprising:
3. reallocating the one or more resources allocated to the one or more virtual units of the first group request in response to a placement failure of the first group request.
3. The method of claim 2, further comprising: wherein the one or more topology constraints of the first group request and the second group request are satisfied.
4. tentatively reallocating one or more resources allocated to the inactive first virtual unit to the second virtual unit; 2. The method of claim 1, further comprising: one or more topology constraints of one or more group requests with which the first virtual unit and the second virtual unit are associated are satisfied; and the redistributing step is performed periodically.
5. The method of claim 4 , wherein the one or more topology constraints include at least one of the following: resource location, resource cost, resource availability, resource power consumption, resource network bandwidth, resource latency, and resource storage allocation.
6. 2. The method of claim 1, wherein each weight is calculated based on at least one of the following: uniformity of resources requested by the application, nature of the task performed by the application, application user type, application user group, application priority, application resource consumption, application execution duration, application execution constraints, application complexity, time of day of application execution, region where the application is executed, adherence to and incentives for application service level agreements (SLAs), phase of application execution, and application resource consumption flexibility.
7. 7. The method of claim 6, wherein a resource of the one or more resources having an assigned respective weight of 0 indicates that the resource is available for allocation, a resource of the one or more resources having an assigned respective weight between 0 and 1 indicates that the resource is tentatively allocated, a resource of the one or more resources having an assigned respective weight of 1 indicates that the resource has already been allocated, and a first resource of the one or more resources having an assigned respective weight greater than a second resource of the one or more resources indicates that the first resource has a lower priority than the second resource for reallocation.
8. 1. A computer system for tentatively scheduling one or more resources in a cloud computing environment, comprising: a memory medium having program instructions; a bus coupled to the memory medium; and When executing the program instructions, the system: obtaining a first group request for hosting an application, wherein the first group request includes one or more virtual units, each of the one or more virtual units including one or more topology constraints; scheduling one or more resources for each of the one or more virtual units, wherein the scheduling comprises tentatively allocating the one or more resources to each of the one or more virtual units according to the one or more topology constraints, each of the one or more resources including a respective weight; in response to receiving a second group request, tentatively reallocating the one or more resources to one or more virtual units of the second group request according to one or more topology constraints of the second group request and the respective weights of each of the one or more resources, wherein the reallocating minimizes a sum of the respective weights of each of the one or more resources; and assigning a new respective weight to each of said one or more resources; a processor for executing the program instructions, coupled to a provisional resource scheduler engine via the bus, causing the processor to A computer system comprising:
9. The instructions may include: In response to receiving an activation request for a virtual unit, allocating to the virtual unit the one or more resources provisionally allocated to the virtual unit.
9. The computer system of claim 8, further comprising:
10. The instructions may include: reallocating the one or more resources allocated to the one or more virtual units of the first group request in response to a placement failure of the first group request.
10. The computer system of claim 9, further comprising: a step of: determining whether the one or more topology constraints of the first group request and the second group request are satisfied;
11. The instructions may include: Provisionally reallocating one or more resources allocated to a first virtual unit that is not activated to a second virtual unit 9. The computer system of claim 8, further comprising: one or more topology constraints of one or more group requests with which the first virtual unit and the second virtual unit are associated are satisfied; and the redistributing procedure is performed periodically.
12. 12. The computer system of claim 11, wherein the one or more topology constraints include at least one of the following: resource location, resource cost, resource availability, resource power consumption, resource network bandwidth, resource latency, and resource storage allocation.
13. 9. The computer system of claim 8, wherein each weight is calculated based on at least one of the following: uniformity of resources requested by the application, nature of the task performed by the application, application user type, application user group, application priority, application resource consumption, application execution duration, application execution constraints, application complexity, time of day of application execution, region where the application is executed, adherence to and incentives for application service level agreements (SLAs), phase of application execution, and application resource consumption flexibility.
14. 14. The computer system of claim 13, wherein a resource of the one or more resources having an assigned respective weight of 0 indicates that the resource is available for allocation, a resource of the one or more resources having an assigned respective weight between 0 and 1 indicates that the resource is tentatively allocated, a resource of the one or more resources having an assigned respective weight of 1 indicates that the resource has already been allocated, and a first resource of the one or more resources having an assigned respective weight greater than a second resource of the one or more resources indicates that the first resource has a lower priority than the second resource for reallocation.
15. 1. A computer program product for tentatively scheduling one or more resources in a cloud computing environment, the computer program product comprising: a computer-readable hardware storage device; and program instructions stored on the computer-readable hardware storage device, the program instructions comprising: obtaining a first group request for hosting an application, wherein the first group request includes one or more virtual units, each of the one or more virtual units including one or more topology constraints; scheduling one or more resources for each of the one or more virtual units, wherein the scheduling comprises tentatively allocating the one or more resources to each of the one or more virtual units according to the one or more topology constraints, each of the one or more resources including a respective weight; in response to receiving a second group request, tentatively reallocating the one or more resources to one or more virtual units of the second group request according to one or more topology constraints of the second group request and the respective weights of each of the one or more resources, wherein the reallocating minimizes a sum of the respective weights of each of the one or more resources; and assigning a new respective weight to each of said one or more resources; A computer program product.
16. The computer-readable hardware storage device includes: In response to receiving an activation request for a virtual unit, allocating to the virtual unit the one or more resources provisionally allocated to the virtual unit.
16. The computer program product of claim 15, further comprising instructions to:
17. The computer-readable hardware storage device includes: reallocating the one or more resources allocated to the one or more virtual units of the first group request in response to a placement failure of the first group request.
20. The computer program product of claim 16, further comprising instructions to:
18. The computer-readable hardware storage device includes: Provisionally reallocating one or more resources allocated to a first virtual unit that is not activated to a second virtual unit wherein one or more topology constraints of one or more group requests to which the first virtual unit and the second virtual unit are associated are satisfied, and the redistributing procedure is performed periodically; 16. The computer program product of claim 15, wherein the one or more topology constraints include at least one of the following: resource location, resource cost, resource availability, resource power consumption, resource network bandwidth, resource latency, and resource storage allocation.
19. 16. The computer program product of claim 15, wherein each weight is calculated based on at least one of the following: uniformity of resources requested by the application, nature of tasks performed by the application, application user type, application user group, application priority, application resource consumption, application execution duration, application execution constraints, application complexity, time of day of application execution, region where the application is executed, adherence to and incentives for application service level agreements (SLAs), phase of application execution, and application resource consumption flexibility.
20. 20. The computer program product of claim 19, wherein a resource of the one or more resources having an assigned respective weight of 0 indicates that the resource is available for allocation, a resource of the one or more resources having an assigned respective weight between 0 and 1 indicates that the resource is tentatively allocated, a resource of the one or more resources having an assigned respective weight of 1 indicates that the resource has already been allocated, and a first resource of the one or more resources having an assigned respective weight greater than a second resource of the one or more resources indicates that the first resource has a lower priority than the second resource for reallocation.