# US 10,120,714 B1 · Customizing computing resources for application workload

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

- Number: US 10,120,714 B1
- Document ID: US10120714B1
- Status: Granted
- Kind: B1
- Application number: 13/461,030
- Filed: 2012-05-01
- Granted: 2018-11-06
- Earliest claimed: 2012-05-01
- Assignees: Amazon Technologies, Inc.
- Applicants: Luis Felipe Cabrera; Eric Jason Brandwine; James R. Hamilton; Jonathan A. Jenkins; Matthew D. Klein; Nathan Thomas; Pradeep Vincent
- Inventors: Luis Felipe Cabrera; Eric Jason Brandwine; James R. Hamilton; Jonathan A. Jenkins; Matthew D. Klein; Nathan Thomas; Pradeep Vincent
- Web page: https://patentgrep.com/patent/US10120714B1

## CPC

- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 9/5005: {to service a request}
- G06F 9/505: {considering the load}
- G06F 9/5072: {Grid computing}
- G06F 2209/508: Monitor
- H04L 41/0816: the condition being an adaptation, e.g. in response to network events
- H04L 41/0823: characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability (for optimising operational conditions of wireless networks H04W24/02)
- H04L 41/0896: Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities (flow or congestion control using dynamic resource allocation, e.g. in-call renegotiation, H04L47/76)
- H04L 41/5025: by proactively reacting to service quality change, e.g. by reconfiguration after service quality degradation or upgrade
- H04L 47/781: {Centralised allocation of resources}
- H04L 47/788: {Autonomous allocation of resources}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A set of techniques for customizing resources for the workload of an application is described. The application can be received and hosted on a set of hardware and software resources of a service provider, which may include server instances, databases, load balancers and the like. Once the application is deployed and processing workload, it can be monitored to gather runtime trace information associated with the workload. This runtime trace information can be analyzed for potential optimizations and improvements to the set of resources or their configuration. Additionally, the user is enabled to input hardware/software specifications for the resources used to run the application. The service provider can use these specifications, along with the runtime trace information to optimize the resource stack used to execute the user's application.

## Claims

### Claim 1

A computer implemented method for customizing resources for application workload deployed in a service provider environment, the method comprising:
receiving, from a customer to the service provider environment, a request to execute at least one application, the request including configuration specifications designated by the customer;
determining, based at least in part upon the configuration specifications, a first server instance that includes a first set of components in the service provider environment, the first server instance configured to execute the at least one application using the first set of components;
executing the at least one application on the first server instance to process a workload at runtime using the first set of components;
monitoring a predetermined amount of runtime trace information on the first server instance, the predetermined amount of runtime trace information corresponding to the workload processed by the at least one application using the first set of components;
identifying, based at least in part on the predetermined amount of runtime trace information, components of the first set of components that are not being used by the workload processed by the at least one application;
determining a kernel for a second server instance that excludes code that would allow the at least one application to interact with the components, and that utilizes a second set of components to perform the workload; and
configuring the second server instance, in the service provider environment, to execute the at least one application on the second server instance using at least the kernel.

### Claim 2 (depends on 1)

The method of claim 1, wherein configuring the second server instance further includes:
receiving at least one hardware specification or software specification from the customer in the request; and
constructing the second server instance based at least in part on the at least one hardware specification or software specification.

### Claim 3 (depends on 1)

The method of claim 1, wherein configuring the second server instance further includes:
determining, based at least in part on the predetermined amount of runtime trace information, that a kernel of the first server instance is handling a threshold amount of network traffic; and
optimizing one or more network resources on the first server instance assigned to the at least one application processing the workload.

### Claim 4 (depends on 1)

The method of claim 1, wherein configuring the second server instance further includes:
configuring a field programmable gate array (FPGA) on the second server instance for the workload of the at least one application; and
moving at least a subset of code of the at least one application to the FPGA.

### Claim 5 (depends on 1)

The method of claim 1, wherein analyzing the predetermined amount of runtime trace information further includes one or more of the following:
identifying, based at least in part on the predetermined amount of runtime trace information, at least one of kernel services or device drivers on the first server instance that are not being used by the workload processed by the at least one application; and
determining a kernel for the second server instance that excludes one of the kernel services or the device drivers.

### Claim 6

A computer implemented method, comprising:
executing an application on a first stack of resources that includes at least one computing device, the at least one computing device configured according to one or more specifications provided by a customer;
gathering trace information on the first stack of resources, the trace information being associated with a workload processed by the application;
analyzing the trace information to determine components associated with, but unused by, the workload processed by the application;
determining one or more modifications based at least in part on the components in order to meet at least one performance parameter when processing the workload by the application;
determining an optimized instruction sequence based at least in part on the one or more modifications; and
determining, based at least in part on the optimized instruction sequence, a kernel for a second stack of resources that includes at least the one or more modifications for executing the application, the one or more modifications in the kernel at least excluding code for allowing the application to interact with the components.

### Claim 7 (depends on 6)

The method of claim 6, further comprising performing at least one of:
recompiling or re-linking the application based at least in part on the trace information in order to optimize the application for the workload.

### Claim 8 (depends on 6)

The method of claim 6, further comprising:
executing the application on the second stack of resources;
continuing to gather trace information associated with the workload processed by the application on the second stack of resources; and
determining one or more new modifications to the second stack of resources based at least in part on the trace information.

### Claim 9 (depends on 6)

The method of claim 6, wherein the application is provided by an application owner to a service provider, the application being executed on one of the first stack of resources or the second stack of resources owned by the service provider on behalf of the application owner.

### Claim 10 (depends on 6)

The method of claim 6, wherein gathering runtime trace information further includes:
monitoring one or more of: a cache hit ratio in at least one cache used by the application, an input and output (I/O) operations to disk, I/O operations to a network, incoming or outgoing packet size being processed by the application, a number of open connections used by the application, a type of instructions of the application, a pattern associated with the type instructions, or an amount of database access required by the application.

### Claim 11 (depends on 6)

The method of claim 6, wherein determining the second stack of resources further includes:
modifying a configuration of at least one software resource or hardware resource in the first stack of resources based at least in part on analyzing the trace information associated with the workload processed by the application.

### Claim 12 (depends on 6)

The method of claim 6, wherein determining the second stack of resources further includes:
receiving, from an application owner of the application, input specifying a hardware specification or a software specification for the second stack of resources; and
constructing the second stack of resources based at least in part on one of the hardware specification or the software specification.

### Claim 13 (depends on 6)

The method of claim 6, wherein determining one or more modifications further includes:
performing a statistical analysis based at least in part on the trace information and determining changes to configuration of at least the first stack of resources based at least in part on the statistical analysis.

### Claim 14

A computing system, comprising:
at least one processor; and
memory including instructions that, when executed by the processor, cause the computing system to:
obtain, in response to a request to execute an application, runtime data associated with a workload to be processed by the application, the application being executed on a first set of resources to process the workload at runtime, the first set of resources configured according to one or more specifications provided by a customer;
analyze the runtime data to determine unused resources associated with, but not needed, for processing the workload;
determine one or more modifications for the first set of resources or a configuration of the first set of resources based at least in part on the unused resources to meet at least one performance parameter when processing the workload by the application;
determine an optimized instruction sequence based at least in part on the one or more modifications; and
provide, based at least in part on the optimized instruction sequence, a kernel for a second set of resources that includes at least the one or more modifications or the configuration the one or more modifications in the kernel at least excluding code for allowing the application to interact with the unused resources.

### Claim 15 (depends on 14)

The computing system of claim 14, wherein the application is provided by an application owner to a service provider, the application being executed on one of the first set of resources or the second set of resources owned by the service provider on behalf of the application owner.

### Claim 16 (depends on 14)

The computing system of claim 14, wherein obtaining the runtime data further includes:
monitoring one or more of: cache hit ratio in at least one cache used by the application, input and output (I/O) operations to disk, I/O operations to a network, incoming or outgoing packet size being processed by the application, number of open connections (e.g. TCP sockets) used by the application, a type of instructions associated with the application, an instruction pattern associated with the application, or amount of database access required by the application.

### Claim 17 (depends on 14)

The computing system of claim 14, wherein providing the second set of resources further includes:
modifying a configuration of at least one software resource or hardware resource in the first set of resources based at least in part on the analysis of the runtime data associated with the workload processed by the application.

### Claim 18 (depends on 14)

The computing system of claim 14, further comprising instructions for:
receiving, from an application owner of the application, input specifying a hardware specification or a software specification for the second set of resources; and
constructing the second set of resources based at least in part on one of the hardware specification or the software specification.

### Claim 19 (depends on 14)

The computing system of claim 14, wherein determining one or more modifications for the first set of resources further includes:
performing a statistical analysis based at least in part on the runtime data; and
determining changes to the configuration of the first set of resources based at least in part on the statistical analysis.

### Claim 20

A non-transitory computer readable storage medium storing one or more sequences of instructions executable by one or more processors to perform a set of operations comprising:
obtaining runtime trace information, the runtime trace information being associated with a workload processed by an application executed on a first stack of resources;
analyzing the runtime trace information to determine components associated with, but not used by, the workload processed by the application;
determining one or more modifications to the first stack of resources or to a configuration of the first stack of resources in order to meet at least one performance parameter when processing the workload by the application; determining an optimized instruction sequence based at least in part on the one or more modifications; and
creating, based at least in part on the optimized instruction sequence, a kernel for a second stack of resources that includes at least the one or more modifications for executing the application, the one or more modifications in the kernel at least excluding code for allowing the application to interact with the components.

### Claim 21 (depends on 20)

The non-transitory computer readable storage medium of claim 20, wherein the application is provided by an application owner to a service provider, the application being executed on one of the first stack of resources or the second stack of resources owned by the service provider on behalf of the application owner.

### Claim 22 (depends on 20)

The non-transitory computer readable storage medium of claim 20, wherein obtaining the runtime trace information further includes:
periodically inspecting one or more of: cache hit ratio in at least one cache used by the application, input and output (I/O) operations to disk, I/O operations to a network, incoming or outgoing packet size being processed by the application, number of open connections (e.g. TCP sockets) used by the application, a type of instructions associated with the application, an instruction pattern associated with the application, or amount of database access required by the application.

### Claim 23 (depends on 20)

The non-transitory computer readable storage medium of claim 20, wherein creating the second stack of resources further includes:
modifying a configuration of at least one software resource or hardware resource in the first stack of resources based at least in part on analyzing the runtime trace information associated with the workload processed by the application.

### Claim 24 (depends on 20)

The non-transitory computer readable storage medium of claim 20, wherein creating the second stack of resources further includes:
receiving, from an application owner of the application, input specifying a hardware specification or a software specification for the second stack of resources; and
constructing the second stack of resources based at least in part on one of the hardware specification or the software specification.

### Claim 25 (depends on 20)

The non-transitory computer readable storage medium of claim 20, wherein determining one or more modifications further includes:
performing a statistical analysis based at least in part on the runtime trace information and determining at least changes to configuration of the first stack of resources based at least in part on the statistical analysis.
