# US 12,761,950 B2 · Task prioritization based on current conditions

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

- Number: US 12,761,950 B2
- Document ID: US12761950B2
- Status: Granted
- Kind: B2
- Application number: 18/165,740
- Filed: 2023-02-07
- Published: 2024-08-08
- Granted: 2026-10-13
- Earliest claimed: 2023-02-07
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Ram Mohan Yaratapally; Vaibhav Goyal; Kristam Raghavendra; Chalapathirao Annapragada; Vishwa Prasad
- Web page: https://patentgrep.com/patent/US12761950B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system continually or periodically computes priority scores for unexecuted tasks. The system selects and executes tasks based on respective priority scores. The priority score for a particular unexecuted task may be computed as a function of a set of tasks that currently depend on the particular unexecuted task. The priority score for the particular unexecuted task may increase or decrease as the set of tasks, that depend on the particular unexecuted task, increase or decrease.

## Claims

### Claim 1

A non-transitory computer readable medium comprising instructions which, when executed by one or more hardware processors, causes performance of operations comprising:
for each particular task of a plurality of tasks to be executed, identifying one or more dependent tasks for the particular task such that the particular task must be executed prior to executing the one or more dependent tasks for the particular task;
identifying a first task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the first task;
identifying a second task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the second task;
identifying (a) a first set of dependent tasks that depend on execution of the first task and (b) a second set of dependent tasks that depend on execution of the second task;
determining that a first number of dependent tasks in the first set of dependent tasks is less than a second number of dependent tasks in the second set of dependent tasks; and
responsive at least to determining that the first number of dependent tasks is less than the second number of dependent tasks, executing the second task prior to executing the first task.

### Claim 2 (depends on 1)

The medium of claim 1, wherein the operations further comprise:
identifying a third task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the first task;
identifying a fourth task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the second task;
determining that (a) an execution time of the fourth task is more than (b) an execution time of the third task; and
responsive at least to determining that the execution time of the fourth task is more than the execution time of the third task, executing the fourth task prior to executing the third task.

### Claim 3 (depends on 1)

The medium of claim 1, wherein the operations further comprise:
identifying a third task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the first task;
identifying a fourth task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the second task;
determining that (a) an execution time of the fourth task is less than (b) an execution time of the third task; and
responsive at least to determining that the execution time of the fourth task is less than the execution time of the third task, executing the fourth task prior to executing the third task.

### Claim 4 (depends on 1)

The medium of claim 1, wherein the operations further comprise determining that the first task is ready to be executed in response to determining that each of a third set of tasks, upon which the first task depends, have been executed.

### Claim 5 (depends on 1)

The medium of claim 1, wherein the operations further comprise recalculating dependency relationships between tasks in the plurality of tasks prior to determining the first set of dependent tasks and the second set of dependent tasks.

### Claim 6 (depends on 1)

The medium of claim 1, wherein the operations further comprise recalculating dependency relationships prior to each selection operation for selecting tasks, from the plurality of tasks, for execution.

### Claim 7 (depends on 1)

The medium of claim 1, wherein the operations further comprise recalculating dependency relationships in response to (a) addition of tasks to the plurality of tasks, (b) removal of tasks from the plurality of tasks, or (c) execution of tasks in the plurality of tasks.

### Claim 8 (depends on 1)

The medium of claim 1, wherein executing the second task prior to executing the first task comprises queuing the second task in an execution queue prior to the first task.

### Claim 9 (depends on 8)

The medium of claim 8, wherein the operations further comprise increasing or decreasing a number of executors being used to execute tasks in the execution queue based on a number of tasks currently in the execution queue.

### Claim 10 (depends on 9)

The medium of claim 9, wherein the operations further comprise:
inserting the first task into a queue subsequent to a third task and prior to a fourth task based on the first set of dependent tasks for the first task being less than a third set of dependent tasks for the third task and greater than a fourth set of dependent tasks for the fourth task.

### Claim 11 (depends on 1)

The medium of claim 1, wherein the operations further comprise:
generating a directed acyclic graph wherein each node in the directed acyclic graph corresponds to a task, and wherein each edge in the directed acyclic graph corresponds to a dependency between a pair of tasks,
wherein determining the first set of dependent tasks for the first task comprises determining a number of outbound edges from a first node in the acyclic graph that represents the first task.

### Claim 12

A method comprising:
for each particular task of a plurality of tasks to be executed, identifying one or more dependent tasks for the particular task such that the particular task must be executed prior to executing the one or more dependent tasks for the particular task;
identifying a first task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the first task;
identifying a second task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the second task;
identifying (a) a first set of dependent tasks that depend on execution of the first task and (b) a second set of dependent tasks that depend on execution of the second task;
determining that a first number of dependent tasks in the first set of dependent tasks is less than a second number of dependent tasks in the second set of dependent tasks; and
responsive at least to determining that the first number of dependent tasks is less than the second number of dependent tasks, executing the second task prior to executing the first task.

### Claim 13 (depends on 12)

The method of claim 12 further comprising:
identifying a third task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the first task;
identifying a fourth task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the second task;
determining that (a) an execution time of the fourth task is more than (b) an execution time of the third task; and
responsive at least to determining that the execution time of the fourth task is more than the execution time of the third task, executing the fourth task prior to executing the third task.

### Claim 14 (depends on 12)

The method of claim 12 further comprising:
identifying a third task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the first task;
identifying a fourth task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the second task;
determining that (a) an execution time of the fourth task is less than (b) an execution time of the third task; and
responsive at least to determining that the execution time of the fourth task is less than the execution time of the third task, executing the fourth task prior to executing the third task.

### Claim 15 (depends on 12)

The method of claim 12 further comprising determining that the first task is ready to be executed in response to determining that each of a third set of tasks, upon which the first task depends, have been executed.

### Claim 16 (depends on 12)

The method of claim 12 further comprising recalculating dependency relationships between tasks in the plurality of tasks prior to determining the first set of dependent tasks and the second set of dependent tasks.

### Claim 17 (depends on 12)

The method of claim 12 further comprising recalculating dependency relationships prior to each selection operation for selecting tasks, from the plurality of tasks, for execution.

### Claim 18 (depends on 12)

The method of claim 12 further comprising recalculating dependency relationships in response to (a) addition of tasks to the plurality of tasks, (b) removal of tasks from the plurality of tasks, or (c) execution of tasks in the plurality of tasks.

### Claim 19 (depends on 12)

The method of claim 12, wherein executing the second task prior to executing the first task comprises queuing the second task in an execution queue prior to the first task.

### Claim 20 (depends on 19)

The method of claim 19 further comprising increasing or decreasing a number of executors being used to execute tasks in the execution queue based on a number of tasks currently in the execution queue.

### Claim 21 (depends on 20)

The method of claim 20 further comprising:
inserting the first task into a queue subsequent to a third task and prior to a fourth task based on the first set of dependent tasks for the first task being less than a third set of dependent tasks for the third task and greater than a fourth set of dependent tasks for the fourth task.

### Claim 22 (depends on 12)

The method of claim 12 further comprising:
generating a directed acyclic graph wherein each node in the directed acyclic graph corresponds to a task, and wherein each edge in the directed acyclic graph corresponds to a dependency between a pair of tasks,
wherein determining the first set of dependent tasks for the first task comprises determining a number of outbound edges from a first node in the acyclic graph that represents the first task.

### Claim 23

A system comprising:
at least one device including a hardware processor; and
a non-transitory computer-readable storage device storing program instructions that, when executed by the hardware processor, configure the system to perform operations comprising:
for each particular task of a plurality of tasks to be executed, identifying one or more dependent tasks for the particular task such that the particular task must be executed prior to executing the one or more dependent tasks for the particular task;
identifying a first task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the first task;
identifying a second task, of the plurality of tasks, that is ready to be executed and does not require any other tasks of the plurality of tasks to be executed prior to execution of the second task;
identifying (a) a first set of dependent tasks that depend on execution of the first task and (b) a second set of dependent tasks that depend on execution of the second task;
determining that a first number of dependent tasks in the first set of dependent tasks is less than a second number of dependent tasks in the second set of dependent tasks; and
responsive at least to determining that the first number of dependent tasks is less than the second number of dependent tasks, executing the second task prior to executing the first task.
