# US 11,113,115 B2 · Dynamic resource optimization

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

- Number: US 11,113,115 B2
- Document ID: US11113115B2
- Status: Granted
- Kind: B2
- Application number: 16/553,215
- Filed: 2019-08-28
- Published: 2021-03-04
- Granted: 2021-09-07
- Earliest claimed: 2019-08-28
- Assignees: ADVA Optical Networking SE
- Applicants: ADVA Optical Networking SE
- Inventors: Ian David Miller; Robert LeRoy Lynch; Timothy J. Shearer
- Web page: https://patentgrep.com/patent/US11113115B2

## CPC

- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 9/505: {considering the load}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 2209/501: Performance criteria
- H04L 47/70: Admission control; Resource allocation
- 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

Dynamically allocating workloads to a fixed number of CPU resources within a compute platform. Determining whether a workload should be in a Dedicated Class of workloads and assigned to a dedicated CPU resource or in a Shared Class of workloads that is handled by a set of at least one shared CPU resource, wherein a shared CPU resource may service more than one workload. The determination may be made based on a comparison of a parameter from two samples of a parameter taken at different times. The determination may be made using metadata associated with the workload. The determination may be made repeatedly so that some workloads may change from being in the Dedicated Class to the Shared Class or from the Shared Class to the Dedicated Class. High availability virtual network functions may be handled economically by deeming the failover workloads to be in the Shared Class.

## Claims

### Claim 1

A method for dynamically allocating a fixed number of CPU resources within a compute platform;
the method comprising:
obtaining a first data sample at a first time for a first parameter for a set of workloads running within the compute platform;
obtaining a second data sample at a second time, later than the first time, for the first parameter for the set of workloads;
comparing for each workload within the set of workloads, a value for the first parameter taken at the second time and a value for the first parameter taken at the first time;
based upon a comparison of the value for the first parameter taken at the second time and the value for the first parameter taken at the first time setting a determination for each workload within the set of workloads whether the workload should be
in a Dedicated Class of workloads and assigned to a dedicated CPU resource or
in a Shared Class of workloads that is handled by a set of at least one shared CPU resource, wherein a shared CPU resource may service more than one workload;
based upon the determination for each workload within the set of workloads, mapping each workload within the Dedicated Class of workloads to have exclusive use of a Dedicated CPU resource and mapping each workload in the shared class of workloads to be handled by the set of at least one shared CPU resource;
obtaining a third data sample at a third time after the second time for a second parameter for the set of workloads running within the compute platform;
obtaining a fourth data sample at a fourth time, later than the third time, for the second parameter for the set of workloads;
comparing for each workload within the set of workloads, a value for the second parameter taken at the fourth time and a value for the second parameter taken at the third time;
based upon a comparison of the value for the second parameter taken at the fourth time and the value for the second parameter taken at the third time setting a determination for each workload within the set of workloads whether the workload should be
in the Dedicated Class of workloads and assigned to a dedicated CPU resource or
in the Shared Class of workloads that is handled by a set of at least one shared CPU resource, wherein a shared CPU resource may service more than one workload; and
based upon the determination for each workload within the set of workloads, mapping each workload within the Dedicated Class of workloads to have exclusive use of a Dedicated CPU resource and mapping each workload in the shared class of workloads to be handled by the set of at least one shared CPU resource.

### Claim 2 (depends on 1)

The method of claim 1 wherein after the fourth time, a particular workload is reclassified from the Dedicated Class of workloads to the Shared Class of workloads.

### Claim 3 (depends on 1)

The method of claim 1 wherein after the fourth time, a particular workload is reclassified from the Shared Class of workloads to the Dedicated Class of workloads.

### Claim 4 (depends on 1)

The method of claim 1 wherein the second parameter is the first parameter.

### Claim 5 (depends on 1)

The method of claim 1 wherein the second parameter is not the first parameter.

### Claim 6 (depends on 1)

The method of claim 1 further comprising:
setting a determination for each workload at an initial time, before the first time, whether the workload should be
in a Dedicated Class of workloads and assigned to a dedicated CPU resource; or
in a Shared Class of workloads that is handled by a set of at least one shared CPU resource, wherein a shared CPU resource may service more than one workload; and
wherein the determination for each workload made at the initial time is based upon metadata associated with each workload.

### Claim 7 (depends on 1)

The method of claim 1 further comprising
using metadata for each workload within the set of workloads wherein the metadata determines whether to:
use the existing determination for whether that workload should be:
in the Dedicated Class of workloads and assigned to the dedicated CPU resource; or
in the Shared Class of workloads that is handled by the set of at least one shared CPU resource,
wherein the shared CPU resource may service more than one workload; or
set a new determination based upon metadata for whether that workload should be:
in the Dedicated Class of workloads and assigned to the dedicated CPU resource; or
in the Shared Class of workloads that is handled by the set of at least one shared CPU resource,
wherein the shared CPU resource may service more than one workload;
setting a determination for each workload within the set of workloads whether the workload should be:
in the Dedicated Class of workloads and assigned to the dedicated CPU resource; or
in the Shared Class of workloads that is handled by the set of at least one shared CPU resource,
wherein the shared CPU resource may service more than one workload; and
based upon the determination for each workload within the set of workloads, mapping each workload within the Dedicated Class of workloads to have exclusive use of the Dedicated CPU resource and mapping each workload in the shared class of workloads to be handled by the set of at least one shared CPU resource.

### Claim 8 (depends on 1)

The method of claim 1 wherein:
obtaining the first data sample at a first time for the first parameter for a set of workloads running within the compute platform is performed for less than a larger set of all workloads running within the compute platform; and
obtaining the second data sample at the second time, later than the first time, for the first parameter for the set of workloads is performed for less than the larger set of all workloads running within the compute platform,
wherein the larger set of all workload includes the set of workloads and a second set of workloads running on the compute platform that have metadata that exempts the second set of workloads from comparing for each workload:
the value for the first parameter taken at the second time; and
the value for the first parameter taken at the first time; and
wherein for the second set of workloads the metadata will be used to set a determination for whether that workload should be:
in the Dedicated Class of workloads and assigned to the dedicated CPU resource; or
in the Shared Class of workloads that is handled by the set of at least one shared CPU resource, wherein the shared CPU resource may service more than one workload.

### Claim 9 (depends on 1)

The method of claim 1 wherein at least one dedicated CPU resource is a physical core.

### Claim 10 (depends on 1)

The method of claim 1 wherein at least one dedicated CPU resource is a virtual core.

### Claim 11 (depends on 1)

The method of claim 1 wherein the first parameter comprises an indication of how much time each workload was executed by a CPU resource in an interval of time between the first time and the second time.

### Claim 12 (depends on 1)

The method of claim 1 wherein the first parameter is requested CPU time which comprises an indication of how much time each workload was waiting to be executed by a CPU resource in an interval of time between the first time and the second time added to an indication of how much time each workload was executed by a CPU resource in an interval of time between the first time and the second time.

### Claim 13 (depends on 1)

The method of claim 1 wherein the first parameter comprises a number of voluntary context switches to yield execution of a particular workload in an interval of time between the first time and the second time.

### Claim 14 (depends on 1)

The method of claim 1 wherein:
X is a value for a number of workloads in the Dedicated Class of workloads to be assigned to a dedicated CPU resource within a current set of dedicated CPU resources;
Y is a value for a number of the current set of dedicated CPU resources within the current set of dedicated CPU resources; and
while X is greater than Y, unused CPU resources are converted to dedicated CPU resources until X=Y or a number of unused CPU resources is zero.

### Claim 15 (depends on 1)

The method of claim 1 wherein:
X is a value for a number of workloads in the Dedicated Class of workloads to be assigned to a dedicated CPU resource within a current set of dedicated CPU resources;
Y is a value for a number of dedicated CPU resources within the current set of dedicated CPU resources; and
while X is greater than Y, workloads within the Dedicated Class of workloads are selected for reclassification as Shared Class workloads until X=Y.

### Claim 16 (depends on 15)

The method of claim 15 wherein the workloads within the Dedicated Class of workloads are ranked to form a ranking and low ranking workloads are selected for reclassification as Shared Class workloads until X=Y.

### Claim 17 (depends on 16)

The method of claim 16 wherein the ranking of each of the workloads within the Dedicated Class of workloads is based at least in part on metadata for each of the workloads.

### Claim 18 (depends on 1)

The method of claim 1 further comprising tuning at least one dedicated CPU resource to have characteristics different from the set of at least one shared CPU resource.

### Claim 19 (depends on 18)

The method of claim 18 where the dedicated CPU resource differs from the shared CPU resource in that the dedicated CPU resource is not available to respond to a subset of interrupts from an operating system.

### Claim 20 (depends on 18)

The method of claim 18 where the dedicated CPU resource differs from the shared CPU resource in that the dedicated CPU resource is set to a mode which operates at maximum frequency.

### Claim 21 (depends on 18)

The method of claim 18 where the dedicated CPU resource differs from the shared CPU resource in that the dedicated CPU resource is set to a mode which prevents idle states and prevents wait states.

### Claim 22

A method for dynamically allocating a fixed number of CPU resources within a compute platform;
the method comprising:
obtaining a first data sample at a first time for a first parameter for a set of workloads running within the compute platform;
obtaining a second data sample at a second time, later than the first time, for the first parameter for the set of workloads;
comparing for each workload within the set of workloads, a value for the first parameter taken at the second time and a value for the first parameter taken at the first time;
based upon a comparison of the value for the first parameter taken at the second time and the value for the first parameter taken at the first time setting a determination for each workload within the set of workloads whether the workload should be
in a Dedicated Class of workloads and assigned to a dedicated CPU resource or
in a Shared Class of workloads that is handled by a set of at least one shared CPU resource, wherein a shared CPU resource may service more than one workload; and
based upon the determination for each workload within the set of workloads, mapping each workload within the Dedicated Class of workloads to have exclusive use of a Dedicated CPU resource and mapping each workload in the shared class of workloads to be handled by the set of at least one shared CPU resource.
