# US 10,310,877 B2 · Category based execution scheduling

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

- Number: US 10,310,877 B2
- Document ID: US10310877B2
- Status: Granted
- Kind: B2
- Application number: 15/573,112
- Filed: 2015-07-31
- Published: 2018-04-26
- Granted: 2019-06-04
- Earliest claimed: 2015-07-31
- Assignees: Hewlett Packard Enterprise Development LP
- Applicants: Hewlett Packard Enterprise Development LP
- Inventors: Philipp Reinecke; Brian Quentin Monahan; Granville Barnett; Patrick Goldsack
- Web page: https://patentgrep.com/patent/US10310877B2

## CPC

- G06F 9/45525: {Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo}
- G06F 8/4441: {Reducing the execution time required by the program code}
- G06F 8/70: Software maintenance or management
- G06F 9/4552: {Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 11/3024: {where the computing system component is a central processing unit [CPU]}
- G06F 11/3495: {for systems}
- G06F 11/3604: Analysis of software for verifying properties of programs (testing of software G06F11/3668)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Examples analyze source code of a task prior to compiling the source code to determine a static property of the task. Examples determine a category for the task based at least in part on the static property. Examples compile the source code to generate a binary of the task. Examples determine execution parameters for the task based at least in part on the category. Examples schedule the binary for execution based at least in part on the execution parameters.

## Claims

### Claim 1

A computing system comprising:
a classification engine to classify tasks of a workload into categories of tasks based at least in part on static properties of the tasks of the workload;
a monitoring engine to monitor compilation and execution of a tasks of a first task set of tasks of the workload to determine computing characteristics for the tasks of the first task set;
a characterization engine to analyze the computing characteristics for the tasks of the first task set to determine compilation parameters and execution parameters for the categories of tasks;
a scheduling engine to schedule execution of tasks of a second task set based at least in part on the execution parameters for the categories of tasks;
a compilation engine to compile tasks of the second task set of tasks of the workload to generate binaries for the tasks of the second task set based at least in part on the compilation parameters for the categories of tasks;
an execution engine to execute the binaries for the tasks of the second task set,
wherein the monitoring engine is further to monitor the execution of the binaries for the tasks of the second task set to determine computing characteristics for the tasks of the second task set; and
an update engine to update the execution parameters for the categories of tasks based at least in part on the computing characteristics for the tasks of the second task set responsive to execution of the binaries for the tasks of the second task set.

### Claim 2 (depends on 1)

The computing system of claim 1, wherein the monitoring engine is further to monitor the compilation of the tasks of the second task set to determine computing characteristics for the tasks of the second task set, and
wherein the update engine updates the compilation parameters for the categories of tasks responsive to compiling the tasks of the second task set.

### Claim 3 (depends on 2)

The computing system of claim 2, wherein the compilation engine is further to, after the update engine updates the compilation parameters, compile tasks of a third task set of tasks of the workload to generate binaries for the tasks of the third task set based at least in part on the compilation parameters for the categories of tasks, and
wherein the scheduling engine is further to, after the update engine updates the execution parameters, schedule execution of the tasks of the third task set based at least in part on the execution parameters for the categories of tasks.

### Claim 4 (depends on 1)

The computing system of claim 1, further comprising:
a category determination engine to analyze the static properties of the tasks of the workload to determine the categories of tasks into which the tasks of the workload are classified.

### Claim 5 (depends on 1)

The computing system of claim 1, further comprising:
a plurality of processing resources,
wherein the execution parameters comprise processing resource usage characteristics associated with a particular category of tasks, and
wherein the scheduling engine to schedule execution of the tasks of the second task set comprises the scheduling engine to:
for each respective task of the second task set associated with the particular category of tasks, select a respective processing resource of the plurality of processing resources to execute the respective task based at least in part on the processing resource usage characteristics of the particular category of tasks.

### Claim 6

A method comprising:
classifying, by at least one processor, tasks of a workload into categories of tasks based at least in part on static properties of the tasks of the workload;
monitoring, by the at least one processor, compilation and execution of a tasks of a first task set of tasks of the workload to determine computing characteristics for the tasks of the first task set;
analyzing, by the at least one processor, the computing characteristics for the tasks of the first task set to determine compilation parameters and execution parameters for the categories of tasks;
scheduling, by the at least one processor, execution of tasks of a second task set based at least in part on the execution parameters for the categories of tasks;
compiling, by the at least one processor, tasks of the second task set of tasks of the workload to generate binaries for the tasks of the second task set based at least in part on the compilation parameters for the categories of tasks;
executing, by the at least one processor, the binaries for the tasks of the second task set,
monitoring, by the at least one processor, the execution of the binaries for the tasks of the second task set to determine computing characteristics for the tasks of the second task set; and
updating, by the at least one processor, the execution parameters for the categories of tasks based at least in part on the computing characteristics for the tasks of the second task set responsive to execution of the binaries for the tasks of the second task set.

### Claim 7 (depends on 6)

The method of claim 6, further comprising monitoring the compilation of the tasks of the second task set to determine computing characteristics for the tasks of the second task set, and
updating the compilation parameters for the categories of tasks responsive to compiling the tasks of the second task set.

### Claim 8 (depends on 7)

The method of claim 7, further comprising, after updating the compilation parameters, compiling tasks of a third task set of tasks of the workload to generate binaries for the tasks of the third task set based at least in part on the compilation parameters for the categories of tasks, and, after the updating the execution parameters, scheduling execution of the tasks of the third task set based at least in part on the execution parameters for the categories of tasks.

### Claim 9 (depends on 6)

The method of claim 6, further comprising:
analyzing the static properties of the tasks of the workload to determine the categories of tasks into which the tasks of the workload are classified.

### Claim 10

A non-transitory machine-readable storage medium comprising instructions executable by a processing resource of a computing system to cause the computing system to:
classify tasks of a workload into categories of tasks based at least in part on static properties of the tasks of the workload;
monitor compilation and execution of a tasks of a first task set of tasks of the workload to determine computing characteristics for the tasks of the first task set;
analyze the computing characteristics for the tasks of the first task set to determine compilation parameters and execution parameters for the categories of tasks;
schedule execution of tasks of a second task set based at least in part on the execution parameters for the categories of tasks;
compile tasks of the second task set of tasks of the workload to generate binaries for the tasks of the second task set based at least in part on the compilation parameters for the categories of tasks;
execute the binaries for the tasks of the second task set,
monitor the execution of the binaries for the tasks of the second task set to determine computing characteristics for the tasks of the second task set; and
update, by the at least one processor, the execution parameters for the categories of tasks based at least in part on the computing characteristics for the tasks of the second task set responsive to execution of the binaries for the tasks of the second task set.

### Claim 11 (depends on 10)

The non-transitory machine-readable storage medium of claim 10, further comprising instructions to cause the computing system to:
monitor the compilation of the tasks of the second task set to determine computing characteristics for the tasks of the second task set, and
update the compilation parameters for the categories of tasks responsive to compiling the tasks of the second task set.

### Claim 12 (depends on 11)

The non-transitory machine-readable storage medium of claim 11, further comprising instructions to cause the computing system to:
after update of the compilation parameters, compile tasks of a third task set of tasks of the workload to generate binaries for the tasks of the third task set based at least in part on the compilation parameters for the categories of tasks, and, after the update of the execution parameters, schedule execution of the tasks of the third task set based at least in part on the execution parameters for the categories of tasks.

### Claim 13 (depends on 10)

The non-transitory machine-readable storage medium of claim 10, further comprising instructions to cause the computing system to:
analyze the static properties of the tasks of the workload to determine the categories of tasks into which the tasks of the workload are classified.

### Claim 14 (depends on 10)

The non-transitory machine-readable storage medium of claim 10, further comprising instructions to cause the computing system to:
analyze the static properties of the tasks of the workload to determine the categories of tasks into which the tasks of the workload are classified.

### Claim 15 (depends on 10)

The non-transitory machine-readable storage medium of claim 10, wherein the execution parameters comprise processing resource usage characteristics for a plurality of processing resources associated with a particular category of tasks, wherein the non-transitory machine-readable storage medium further comprising instructions to cause the computing system to:
for each respective task of the second task set associated with the particular category of tasks, select a respective processing resource of the plurality of processing resources to execute the respective task based at least in part on the processing resource usage characteristics of the particular category of tasks.
