# US 10,120,721 B2 · Pluggable engine for application specific schedule control

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

- Number: US 10,120,721 B2
- Document ID: US10120721B2
- Status: Granted
- Kind: B2
- Application number: 14/926,478
- Filed: 2015-10-29
- Published: 2017-03-02
- Granted: 2018-11-06
- Earliest claimed: 2015-08-28
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Naveen Ramaswamy; Dimal Baby
- Web page: https://patentgrep.com/patent/US10120721B2

## CPC

- 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 2209/5018: Thread allocation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method of scheduling tasks for a group of applications. Each application is associated with a separate task queue for identifying application tasks that are ready for execution. The method receives a request to place a task in an application task queue. The method places the task in the application task queue based on a set of intra application scheduling policies defined for the application. The method receives a request to identify the next task to execute. The method identifies an application queue from which from which the next task is to be executed. The application queue is identified based on a set of inter application scheduling policies defined for the plurality of applications. The method schedules a task from the identified application queue for execution based on the intra application scheduling policies.

## Claims

### Claim 1

A method of scheduling tasks for a plurality of applications, each application associated with a separate application task queue for identifying application tasks that are ready for execution, the method comprising:
receiving a request from an application to place a task of the application in an application task queue;
placing the task in the application task queue based on a set of intra application scheduling policies defined for the application;
receiving a request to identify a next task to execute;
identifying an application task queue from which the next task is to be executed, the application task queue identified based on a set of inter application scheduling policies defined across the plurality of applications; and
scheduling a task from the identified application task queue for execution based on said intra application scheduling policies.

### Claim 2 (depends on 1)

The method of claim 1, wherein placing the task in an application task queue comprises:
identifying a sequence of execution for the application tasks based on said intra application scheduling policies; and
placing the tasks in the application task queue based on the identified sequence of execution.

### Claim 3 (depends on 1)

The method of claim 1, wherein the intra application scheduling policies are defined for each application, wherein the intra application scheduling policies comprise one of first come first served scheduling policy, round robin scheduling policy, priority-based scheduling policy, and weight-based scheduling policy.

### Claim 4 (depends on 1)

The method of claim 1, wherein the inter application scheduling policies defined across the plurality of applications comprise one of first come first served scheduling policy, round robin scheduling policy, priority-based scheduling policy, and weight-based scheduling policy.

### Claim 5 (depends on 1)

The method of claim 1, wherein a maximum number of threads are available for executing different tasks, wherein scheduling the task from the identified application task queue comprises:
determining that one or more threads are available to execute tasks,
wherein scheduling the task for execution comprises assigning the task to one of the available threads to execute.

### Claim 6 (depends on 1)

The method of claim 1, wherein a maximum number of threads are available for executing different tasks, wherein scheduling the task from the identified application task queue comprises:
determining that no threads are available to execute tasks;
waiting for a next thread to become available;
receiving a notification that a thread is available to execute a task; and
wherein scheduling the task for execution comprises assigning the task to one of the available threads to execute.

### Claim 7 (depends on 1)

The method of claim 1, wherein a maximum number of threads are available for executing different tasks, wherein scheduling the task from the identified application task queue comprises:
determining that one or more threads are available to execute tasks;
determining that no tasks are available for execution;
waiting for a next task to become ready for execution;
receiving a notification that one or more tasks are available for execution; and
assigning the task to an available thread to execute.

### Claim 8

A non-transitory machine readable medium storing a program for scheduling tasks for a plurality of applications, each application associated with a separate application task queue for identifying application tasks that are ready for execution, the program executable by a processing unit, the program comprising sets of instructions for:
receiving a request from an application to place a task of the application in an application task queue;
placing the task in the application task queue based on a set of intra application scheduling policies defined for the application;
receiving a request to identify a next task to execute;
identifying an application task queue from which the next task is to be executed, the application task queue identified based on a set of inter application scheduling policies defined for the plurality of applications; and
scheduling a task from the identified application task queue for execution based on said intra application scheduling policies.

### Claim 9 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein the set of instructions for placing the task in an application task queue comprises sets of instructions for:
identifying a sequence of execution for the application tasks based on said intra application scheduling policies; and
placing the tasks in the application task queue based on the identified sequence of execution.

### Claim 10 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein the intra application scheduling policies are defined for each application, wherein the intra application scheduling policies comprise one of first come first served scheduling policy, round robin scheduling policy, priority-based scheduling policy, and weight-based scheduling policy.

### Claim 11 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein the inter application scheduling policies defined across the plurality of applications comprise one of first come first served scheduling policy, round robin scheduling policy, priority-based scheduling policy, and weight-based scheduling policy.

### Claim 12 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein a maximum number of threads are available for executing different tasks, wherein the set of instructions for scheduling the task from the identified application task queue comprises sets of instructions for determining that one or more threads are available to execute tasks, wherein the set of instructions for scheduling the task for execution comprises a set of instructions for assigning the task to one of the available threads to execute.

### Claim 13 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein a maximum number of threads are available for executing different tasks, wherein the set of instructions for scheduling the task from the identified application task queue comprises a set of instructions for:
determining that no threads are available to execute tasks;
waiting for a next thread to become available;
receiving a notification that a thread is available to execute a task; and
wherein the set of instructions for scheduling the task for execution comprises a set of instructions for assigning the task to the available thread to execute.

### Claim 14 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein a maximum number of threads are available for executing different tasks, wherein the set of instructions for scheduling the task from the identified application task queue comprises sets of instructions for:
determining that one or more threads are available to execute tasks;
determining that no tasks are available for execution;
waiting for a next task to become ready for execution;
receiving a notification that one or more tasks are available for execution; and
assigning the task to an available thread to execute.

### Claim 15

A system comprising:
a set of processing units; and
a non-transitory machine readable medium storing a program for scheduling tasks for a plurality of applications, each application associated with a separate application task queue for identifying application tasks that are ready for execution, the program executable by a processing unit in the set of processing units, the program comprising sets of instructions for:
receiving a request from an application to place a task of the application in an application task queue;
placing the task in the application task queue based on a set of intra application scheduling policies defined for the application;
receiving a request to identify a next task to execute;
identifying an application task queue from which the next task is to be executed, the application task queue identified based on a set of inter application scheduling policies defined for the plurality of applications; and
scheduling a task from the identified application task queue for execution based on said intra application scheduling policies.

### Claim 16 (depends on 15)

The system of claim 15, wherein the set of instructions for placing the task in an application task queue comprises sets of instructions for:
identifying a sequence of execution for the application tasks based on said intra application scheduling policies; and
placing the tasks in the application task queue based on the identified sequence of execution.

### Claim 17 (depends on 15)

The system of claim 15, wherein the intra application scheduling policies are defined for each application, wherein the intra application scheduling policies comprise one of first come first served scheduling policy, round robin scheduling policy, priority-based scheduling policy, and weight-based scheduling policy.

### Claim 18 (depends on 15)

The system of claim 15, wherein the inter application scheduling policies defined across the plurality of applications comprise one of first come first served scheduling policy, round robin scheduling policy, priority-based scheduling policy, and weight-based scheduling policy.

### Claim 19 (depends on 15)

The system of claim 15, wherein a maximum number of threads are available for executing different tasks, wherein the set of instructions for scheduling the task from the identified application task queue comprises sets of instructions for determining that one or more threads are available to execute tasks, wherein the set of instructions for scheduling the task for execution comprises a set of instructions for assigning the task to one of the available threads to execute.

### Claim 20 (depends on 15)

The system of claim 15, wherein a maximum number of threads are available for executing different tasks, wherein the set of instructions for scheduling the task from the identified application task queue comprises a set of instructions for:
determining that no threads are available to execute tasks;
waiting for a next thread to become available;
receiving a notification that a thread is available to execute a task; and
wherein the set of instructions for scheduling the task for execution comprises a set of instructions for assigning the task to the available thread to execute.

### Claim 21 (depends on 15)

The system of claim 15, wherein a maximum number of threads are available for executing different tasks, wherein the set of instructions for scheduling the task from the identified application task queue comprises sets of instructions for:
determining that one or more threads are available to execute tasks;
determining that no tasks are available for execution;
waiting for a next task to become ready for execution;
receiving a notification that one or more tasks are available for execution; and
assigning the task to an available thread to execute.
