# US 10,310,898 B1 · Allocating computing resources based on user intent

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

- Number: US 10,310,898 B1
- Document ID: US10310898B1
- Status: Granted
- Kind: B1
- Application number: 15/291,722
- Filed: 2016-10-12
- Granted: 2019-06-04
- Earliest claimed: 2014-03-04
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: David J. Helstroom; Patricia Weir; Cameron Cody Smith; Zachary A. Hirsch; Ulric B. Longyear
- Web page: https://patentgrep.com/patent/US10310898B1

## CPC

- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 9/5005: {to service a request}
- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5022: {Mechanisms to release resources}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 9/5033: {considering data affinity}
- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/505: {considering the load}
- G06F 9/5055: {considering software capabilities, i.e. software resources associated or available to the machine}
- G06F 9/5061: {Partitioning or combining of resources}
- G06F 9/5072: {Grid computing}
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for allocating computing resources. In one aspect, a method includes receiving intent data specifying one or more computing services to be hosted by a computing network, requested characteristics of computing resources for use in hosting the computing service, and a priority value for each requested characteristic. A budget constraint is identified for each computing service. Available resources data is identified that specifies a set of available computing resources. A resource allocation problem for allocating computing resources for the one or more computing resources is generated based on the intent data, each budget constraint, and the available resources data. At least a portion of the set of computing resources is allocated for the one or more computing services based on results of evaluating the resource allocation problem to meet a particular resource allocation objective.

## Claims

### Claim 1

A method performed by data processing apparatus, the method comprising:
receiving intent data specifying:
one or more computing services to be hosted by a computing network;
requested relationships between computing resources that will be used to host the computing service, at least one requested relationship specifying a desired maximum data transmission time between a respective first underlying computing resource that will be used to host the computing service and a respective second underlying computing resource that will be used to host the computing service; and
for each requested relationship, a priority value that indicates a priority of the requested relationship relative to a priority of each other requested relationship, including a priority value for the desired maximum data transmission time;
identifying available resources data that specifies a set of available computing resources and, for each available computing resource of at least a portion of the available computing resources:
one or more performance relationships between the available computing resource and one or more other computing resources, including a respective data transmission time between the available computing resource and each of the one or more other computing resources; and
forecasted demand data for the available computing resource;
generating a resource allocation problem for allocating computing resources for the one or more computing services based on (i) the received intent data and (ii) the available resources data;
allocating at least a portion of the set of computing resources for the one or more computing services based on results of evaluating the resource allocation problem to meet a particular resource allocation objective, wherein the allocating includes:
determining that a budget constraint for a particular computing service is not satisfied by a first allocation of computing resources resulting from solving the resource allocation problem to meet the particular resource allocation objective;
generating an adjusted resource allocation problem by removing at least one requested relationship for the particular computing service from the resource allocation problem, the at least one requested relationship being selected for removal based on the priority value for the at least one requested relationship; and
identifying a second allocation of computing resources based on results of solving the adjusted resource allocation problem to meet the particular resource allocation objective; and
providing, for the one or more computing services, access to the allocated computing resources.

### Claim 2 (depends on 1)

The method of claim 1, wherein at least one requested relationship of the requested relationships specifies a relative location for the respective first underlying computing resource and the respective second underlying computing resource.

### Claim 3 (depends on 1)

The method of claim 1, wherein the intent data specifies:
requested characteristics of underlying computing resources for use in hosting the computing service; and
for each requested characteristic, a priority value that indicates a priority of the requested characteristic relative to a priority of each other requested characteristic.

### Claim 4 (depends on 1)

The method of claim 1, wherein generating the resource allocation problem includes identifying, for each of the one or more computing services, one or more underlying computing services and one or more underlying computing resources that will be used to provide the computing service using a translation function for the computing service.

### Claim 5 (depends on 4)

The method of claim 4, wherein generating a resource allocation problem includes:
generating a graph based on (a) the one or more underlying computing services and the one or more underlying computing resources for each of the one or more computing services specified by the intent data and (b) the available resources data, the graph comprising:
a node of each underlying computing service;
a node for each underlying computing resource; and
edges between two or more pairs of nodes, a particular edge between a particular pair of nodes representing a dependency of a first node of the particular pair of nodes on a second node of the particular pair of node; and
generating the resource allocation problem based on the generated graph.

### Claim 6 (depends on 1)

The method of claim 1, wherein the resource allocation problem comprises one of a linear programming problem and a mixed integer programming problem.

### Claim 7 (depends on 1)

The method of claim 1, wherein allocating at least a portion of the set of computing resources for the one or more computing services based on results of evaluating the resource allocation problem to meet the particular resource allocation objective comprises:
determining to allocate a first set of two or more underlying computing resources to a particular computing service of the one or more computing services and to not allocate a second set of two or more underlying computing resources to the particular computing service based on a first priority value for a first relationship between the first set of two or more underlying computing resources being greater than a second priority value for a second relationship between the second set of two or more underlying computing resources.

### Claim 8 (depends on 1)

The method of claim 1, wherein both the respective first underlying computing resource and the respective second underlying computing resource are hardware computing resources including at least one of a hardware processor or a hardware data storage device.

### Claim 9 (depends on 1)

The method of claim 1, wherein:
the intent data specifies for a given computing service of the one or more computing services:
a first desired maximum data transmission time between the respective first underlying computing resource and the second underlying computing resource and a first priority value for the first desired maximum data transmission time; and
a second desired maximum data transmission time between the respective first underlying computing resource and the second underlying computing resource and a first priority value for the first desired maximum data transmission time; and
allocating at least a portion of the set of computing resources for the one or more computing services based on results of evaluating the resource allocation problem to meet a particular resource allocation objective comprises allocating, for the given computing service, computing resources that are capable of meeting the second desired maximum data transmission time but not the first desired maximum data transmission time in response to determining that a budget constraint for the given computing service would not be met if computing resources that are capable of meeting the first desired maximum data transmission time are allocated for the given computing service.

### Claim 10

A system comprising:
a data store for storing data related to available computing resources; and
one or more processors configured to interact with the data store, the one or more processors being further configured to perform operations comprising:
receiving intent data specifying:
one or more computing services to be hosted by a computing network;
requested relationships between computing resources that will be used to host the computing service, at least one requested relationship specifying a desired maximum data transmission time between a respective first underlying computing resource that will be used to host the computing service and a respective second underlying computing resource that will be used to host the computing service; and
for each requested relationship, a priority value that indicates a priority of the requested relationship relative to a priority of each other requested relationship;
identifying available resources data that specifies a set of available computing resources and, for each available computing resource of at least a portion of the available computing resources:
one or more performance relationships between the available computing resource and one or more other computing resources, including a respective data transmission time between the available computing resource and each of the one or more other computing resources; and
forecasted demand data for the available computing resource;
generating a resource allocation problem for allocating computing resources for the one or more computing services based on the received intent data and each priority value and the available resources data;
allocating at least a portion of the set of computing resources for the one or more computing services based on results of evaluating the resource allocation problem to meet a particular resource allocation objective, wherein the allocating includes:
determining that a budget constraint for a particular computing service is not satisfied by a first allocation of computing resources resulting from solving the resource allocation problem to meet the particular resource allocation objective;
generating an adjusted resource allocation problem by removing at least one requested relationship for the particular computing service from the resource allocation problem, the at least one requested relationship being selected for removal based on the priority value for the at least one requested relationship; and
identifying a second allocation of computing resources based on results of solving the adjusted resource allocation problem to meet the particular resource allocation objective; and
providing, for the one or more computing services, access to the allocated computing resources.

### Claim 11 (depends on 10)

The system of claim 10, wherein at least one requested relationship of the requested relationships specifies a relative location for the respective first underlying computing resource and the respective second underlying computing resource.

### Claim 12 (depends on 10)

The system of claim 10, wherein the intent data specifies:
requested characteristics of underlying computing resources for use in hosting the computing service; and
for each requested characteristic, a priority value that indicates a priority of the requested characteristic relative to a priority of each other requested characteristic.

### Claim 13 (depends on 10)

The system of claim 10, wherein generating the resource allocation problem includes identifying, for each of the one or more computing services, one or more underlying computing services and one or more underlying computing resources that will be used to provide the computing service using a translation function for the computing service.

### Claim 14 (depends on 13)

The system of claim 13, wherein generating a resource allocation problem includes:
generating a graph based on (a) the one or more underlying computing services and the one or more underlying computing resources for each of the one or more computing services specified by the intent data and (b) the available resources data, the graph comprising:
a node of each underlying computing service;
a node for each underlying computing resource; and
edges between two or more pairs of nodes, a particular edge between a particular pair of nodes representing a dependency of a first node of the particular pair of nodes on a second node of the particular pair of node; and
generating the resource allocation problem based on the generated graph.

### Claim 15 (depends on 10)

The system of claim 10, wherein the resource allocation problem comprises one of a linear programming problem and a mixed integer programming problem.

### Claim 16

A non-transitory computer storage medium encoded with a computer program, the program comprising instructions that when executed by data processing apparatus cause the data processing apparatus to perform operations comprising:
receiving intent data specifying:
one or more computing services to be hosted by a computing network;
requested relationships between computing resources that will be used to host the computing service, at least one requested relationship specifying a desired maximum data transmission time between a respective first underlying computing resource that will be used to host the computing service and a respective second underlying computing resource that will be used to host the computing service; and
for each requested relationship, a priority value that indicates a priority of the requested relationship relative to a priority of each other requested relationship;
identifying available resources data that specifies a set of available computing resources and, for each available computing resource of at least a portion of the available computing resources:
one or more performance relationships between the available computing resource and one or more other computing resources, including a respective data transmission time between the available computing resource and each of the one or more other computing resources; and
forecasted demand data for the available computing resource;
generating a resource allocation problem for allocating computing resources for the one or more computing services based on the received intent data and the available resources data;
allocating at least a portion of the set of computing resources for the one or more computing services based on results of evaluating the resource allocation problem to meet a particular resource allocation objective, wherein the allocating includes:
determining that a budget constraint for a particular computing service is not satisfied by a first allocation of computing resources resulting from solving the resource allocation problem to meet the particular resource allocation objective;
generating an adjusted resource allocation problem by removing at least one requested relationship for the particular computing service from the resource allocation problem, the at least one requested relationship being selected for removal based on the priority value for the at least one requested relationship; and
identifying a second allocation of computing resources based on results of solving the adjusted resource allocation problem to meet the particular resource allocation objective; and
providing, for the one or more computing services, access to the allocated computing resources.

### Claim 17 (depends on 16)

The non-transitory computer storage medium of claim 16, wherein at least one requested relationship of the requested relationships specifies a relative location for the respective first computing resource and the respective second underlying computing resource.

### Claim 18 (depends on 16)

The non-transitory computer storage medium of claim 16, wherein the intent data specifies:
requested characteristics of underlying computing resources for use in hosting the computing service; and
for each requested characteristic, a priority value that indicates a priority of the requested characteristic relative to a priority of each other requested characteristic.

### Claim 19 (depends on 16)

The non-transitory computer storage medium of claim 16, wherein generating the resource allocation problem includes identifying, for each of the one or more computing services, one or more underlying computing services and one or more underlying computing resources that will be used to provide the computing service using a translation function for the computing service.

### Claim 20

A method performed by data processing apparatus, the method comprising:
receiving intent data specifying:
one or more computing services to be hosted by a computing network;
requested relationships between computing resources that will be used to host the computing service, at least one requested relationship specifying a desired maximum data transmission time between a respective first underlying computing resource that will be used to host the computing service and a respective second underlying computing resource that will be used to host the computing service; and
for each requested relationship, a priority value that indicates a priority of the requested relationship relative to a priority of each other requested relationship;
identifying available resources data that specifies a set of available computing resources and, for each available computing resource of at least a portion of the available computing resources:
one or more performance relationships between the available computing resource and one or more other computing resources, including a respective data transmission time between the available computing resource and each of the one or more other computing resources; and
forecasted demand data for the available computing resource;
generating a resource allocation problem for allocating computing resources for the one or more computing services based on the received intent data and the available resources data;
allocating at least a portion of the set of computing resources for the one or more computing services based on results of evaluating the resource allocation problem to meet a particular resource allocation objective, wherein the allocating includes:
determining that a budget constraint for a particular computing service is not satisfied by a first allocation of computing resources resulting from solving the resource allocation problem to meet the particular resource allocation objective;
generating an adjusted resource allocation problem by removing at least one requested relationship for the particular computing service from the resource allocation problem, the at least one requested relationship being selected for removal based on the priority value for the at least one requested relationship; and
identifying a second allocation of computing resources based on results of solving the adjusted resource allocation problem to meet the particular resource allocation objective; and
providing, for the one or more computing services, access to the allocated computing resources.
