# US 2019/0245757 A1 · Enhancing resource allocation for application deployment

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0245757 A1
- Document ID: US20190245757A1
- Status: Published application
- Kind: A1
- Application number: 15/889,986
- Filed: 2018-02-06
- Published: 2019-08-08
- Earliest claimed: 2018-02-06
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Timothy Meyer; Xiao Liu; Ying Gao; Jeffrey Doering
- Web page: https://patentgrep.com/patent/US20190245757A1

## CPC

- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 8/60: Software deployment
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5072: {Grid computing}
- G06N 3/126: Evolutionary algorithms, e.g. genetic algorithms or genetic programming
- G06N 20/00: Machine learning
- H04L 41/145: {involving simulating, designing, planning or modelling of a network}
- H04L 41/16: using machine learning or artificial intelligence
- H04L 41/40: using virtualisation of network functions or resources, e.g. SDN or NFV entities
- H04L 41/5041: characterised by the time relationship between creation and deployment of a service
- H04L 41/5051: Service on demand, e.g. definition and deployment of services in real time
- H04L 47/70: Admission control; Resource allocation
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06N 7/01: Probabilistic graphical models, e.g. probabilistic networks
- H04L 41/5096: {wherein the managed service relates to distributed or central networked applications}
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

In certain embodiments, a Service Deployment Infrastructure (SDI) instance is disclosed. The SDI instance can intelligently allocate resources of a rack to one or more virtual machines as part of provisioning a requested service. The SDI instance can use machine-learning techniques to evaluate historical data associated with a requested service. The machine-learning techniques can be used to generate one or more models that simulate the possible configurations of sizes for virtual machines for a particular service. The one or more models can be accessed at runtime to fit virtual machines of a requested service into servers of a rack in a manner that minimizes unused resources with multi-dimensional constraints.

## Claims

### Claim 1

A non-transitory computer readable medium storing computer-executable instructions that, upon execution by one or more processors, cause the one or more processors to:
collect, by a computer infrastructure system, historical provision data for one or more racks, each rack of the one or more racks being associated with one or more servers that provisioned a cloud application, and the historical provision data including at least one allocation of a resource to one or more virtual machines used to run an instance of the cloud application;
analyze the historical provision data using one or more machine-learning techniques;
generate, based at least in part on the analyzing, one or more models that represent a resource usage characteristic of the at least one allocation of the resource to the one or more virtual machines, the resource usage characteristic simulating one or more possible configurations of a virtual machine;
receive a request for the computer infrastructure system to provision a new instance of the cloud application;
determine a set of virtual machines for the new instance of the cloud application, the set of virtual machines being determined based at least in part on the request;
select a rack from a plurality of racks, the selected rack being configured to run the new instance of the cloud application, the selected rack corresponding to a set of servers, and each server of the set of servers being associated with a resource;
execute a placement protocol for the selected rack, the placement protocol using the one or more models to map each virtual machine of the set of virtual machines to a server of the set of servers, and the mapping causing at least a portion of the resource to be allocated to each virtual machine of the set of virtual machines; and
provision the new instance of the cloud application using the set of virtual machines.

### Claim 2 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the computer-executable instructions, upon execution by the one or more processors, further cause the one or more processors to:
identify that the request corresponds to the cloud application; and
in response to determining that the request corresponds to the cloud application, access the one or more models that correspond to the cloud application.

### Claim 3 (depends on 2)

The non-transitory computer readable medium of claim 2, wherein the computer-executable instructions, upon execution by the one or more processors, further cause the one or more processors to:
determine, from the request, that the new instance of the cloud application corresponds to the set of virtual machines;
determine, for each virtual machine of the set of virtual machines, a size of the virtual machine; and
determine an amount of unused resources corresponding to the set of servers.

### Claim 4 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein each rack of the plurality of racks is associated with a priority setting, and wherein the priority setting represents a priority associated with selecting the associated rack.

### Claim 5 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the resource includes at least an amount of memory and a number of central processing units (CPUs).

### Claim 6 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein executing the placement protocol further includes:
iteratively selecting a virtual machine from the set of virtual machines;
for each server of the set of servers:
fitting the virtual machine into the server, and
calculating a score representing a degree to which the virtual machine fits into the server;
selecting the server associated with a highest score; and
mapping the selected virtual machine to the selected server.

### Claim 7 (depends on 6)

The non-transitory computer readable medium of claim 6, wherein the score includes a plurality of components, wherein the plurality of components includes a “fill” score, a “fit” score, and a “balance” score, and wherein:
the “fill” score represents indicate a degree to which an empty server is preferred or a partially full server is preferred,
the “fit” score represents a degree to which the selected virtual machine fits into the selected server based on remaining unused resources after fitting the virtual machine, and
the “balance” score represents a degree to which resource usage is balanced in the selected server.

### Claim 8

A computer-implemented method, comprising:
collecting, by a computer infrastructure system, historical provision data for one or more racks, each rack of the one or more racks being associated with one or more servers that provisioned a cloud application, and the historical provision data including at least one allocation of a resource to one or more virtual machines used to run an instance of the cloud application;
analyzing the historical provisioning data using one or more machine-learning techniques;
generating, based at least in part on the analyzing, one or more models that represent a resource usage characteristic of the at least one allocation of the resource to the one or more virtual machines, the resource usage characteristic simulating one or more possible configurations of a virtual machine;
receiving a request for the computer infrastructure system to provision a new instance of the cloud application;
determining a set of virtual machines for the new instance of the cloud application, the set of virtual machines being determined based at least in part on the request;
selecting a rack from a plurality of racks, the selected rack being configured to run the new instance of the cloud application, the selected rack corresponding to a set of servers, and each server of the set of servers being associated with a resource;
executing a placement protocol for the selected rack, the placement protocol using the one or more models to map each virtual machine of the set of virtual machines to a server of the set of servers, and the mapping causing at least a portion of the resource to be allocated to each virtual machine of the set of virtual machines; and
provisioning the new instance of the cloud application using the set of virtual machines.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, further comprising:
identifying that the request corresponds to the cloud application; and
in response to determining that the request corresponds to the cloud application, accessing the one or more models that correspond to the cloud application.

### Claim 10 (depends on 9)

The computer-implemented method of claim 9, further comprising:
determining, from the request, that the new instance of the cloud application corresponds to the set of virtual machines;
determining, for each virtual machine of the set of virtual machines, a size of the virtual machine; and
determining an amount of unused resources corresponding to the set of servers.

### Claim 11 (depends on 8)

The computer-implemented method of claim 8, wherein each rack of the plurality of racks is associated with a priority setting, and wherein the priority setting represents a priority associated with selecting the associated rack.

### Claim 12 (depends on 8)

The computer-implemented method of claim 8, wherein the resource includes at least an amount of memory and a number of central processing units (CPUs).

### Claim 13 (depends on 8)

The computer-implemented method of claim 8, wherein executing the placement protocol further includes:
iteratively selecting a virtual machine from the set of virtual machines;
for each server of the set of servers:
fitting the virtual machine into the server, and
calculating a score representing a degree to which the virtual machine fits into the server;
selecting the server associated with a highest score; and
mapping the selected virtual machine to the selected server.

### Claim 14 (depends on 13)

The computer-implemented method of claim 13, wherein the score includes a plurality of components, wherein the plurality of components includes a “fill” score, a “fit” score, and a “balance” score, and wherein:
the “fill” score represents indicate a degree to which an empty server is preferred or a partially full server is preferred,
the “fit” score represents a degree to which the selected virtual machine fits into the selected server based on remaining unused resources after fitting the virtual machine, and
the “balance” score represents a degree to which resource usage is balanced in the selected server.

### Claim 15

A system, comprising:
one or more data processors; and
a non-transitory computer-readable storage medium containing instructions which, when executed on the one or more data processors, cause the one or more data processors to perform operations including:
collecting, by a computer infrastructure system, historical provision data for one or more racks, each rack of the one or more racks being associated with one or more servers that provisioned a cloud application, the historical provision data including at least one allocation of a resource to one or more virtual machines used to run an instance of the cloud application;
analyzing the historical provisioning data using one or more machine-learning techniques;
generating, based at least in part on the analyzing, one or more models that represent a resource usage characteristic of the at least one allocation of the resource to the one or more virtual machines, the resource usage characteristic simulating one or more possible configurations of a virtual machine;
receiving a request for the computer infrastructure system to provision a new instance of the cloud application;
determining a set of virtual machines for the new instance of the cloud application, the set of virtual machines being determined based at least in part on the request;
selecting a rack from a plurality of racks, the selected rack being configured to run the new instance of the cloud application, the selected rack corresponding to a set of servers, and each server of the set of servers being associated with a resource;
executing a placement protocol for the selected rack, the placement protocol using the one or more models to map each virtual machine of the set of virtual machines to a server of the set of servers, and the mapping causing at least a portion of the resource to be allocated to each virtual machine of the set of virtual machines; and
provisioning the new instance of the cloud application using the set of virtual machines.

### Claim 16 (depends on 15)

The system of claim 15, wherein the operations further comprise:
identifying that the request corresponds to the cloud application; and
in response to determining that the request corresponds to the cloud application, accessing the one or more models that correspond to the cloud application.

### Claim 17 (depends on 16)

The system of claim 16, wherein the operations further comprise:
determining, from the request, that the new instance of the cloud application corresponds to the set of virtual machines;
determining, for each virtual machine of the set of virtual machines, a size of the virtual machine; and
determining an amount of unused resources corresponding to the set of servers.

### Claim 18 (depends on 15)

The system of claim 15, wherein each rack of the plurality of racks is associated with a priority setting, and wherein the priority setting represents a priority associated with selecting the associated rack.

### Claim 19 (depends on 15)

The system of claim 15, wherein executing the placement protocol further includes:
iteratively selecting a virtual machine from the set of virtual machines;
for each server of the set of servers:
fitting the virtual machine into the server, and
calculating a score representing a degree to which the virtual machine fits into the server;
selecting the server associated with a highest score; and
mapping the selected virtual machine to the selected server.

### Claim 20 (depends on 19)

The system of claim 19, wherein the score includes a plurality of components, wherein the plurality of components includes a “fill” score, a “fit” score, and a “balance” score, and wherein:
the “fill” score represents indicate a degree to which an empty server is preferred or a partially full server is preferred,
the “fit” score represents a degree to which the selected virtual machine fits into the selected server based on remaining unused resources after fitting the virtual machine, and
the “balance” score represents a degree to which resource usage is balanced in the selected server.
