IP Library Granted Patent US 10,120,721
Granted Patent B2
US 10,120,721 · App. 14/926,478 · Granted Nov 6, 2018

Pluggable engine for application specific schedule control

Inventors: Naveen Ramaswamy (Pune, IN); Dimal Baby (Pune, IN)
Assignee: VMware, Inc.
G06F9/5038
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,120,721
App. No.
14/926,478
Granted
Nov 6, 2018
Kind
B2
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 (73)

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.

2. 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.

3. 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.

4. 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.

5. 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.

6. 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.

7. 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.

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.

9. 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.

10. 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.

11. 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.

12. 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.

13. 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.

14. 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.

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.

16. 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.

17. 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.

18. 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.

19. 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.

20. 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.

21. 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.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2015
From: RAMASWAMY, NAVEEN; BABY, DIMAL
To: VMWARE, INC.
Reel/Frame 036917/0428 →
Priority Claims (1)
IN 4531/CHE/2015 · Aug 28, 2015 · national
Continuity (1)
Related Publication 20170060641A1 · Mar 2, 2017