IP Library Granted Patent US 10,545,789
Granted Patent B2
US 10,545,789 · App. 15/963,060 · Granted Jan 28, 2020

Task scheduling for highly concurrent analytical and transaction workloads

Inventors: Anastasia Ailamaki (Geneva, CH); Tobias Scheuer (Walldorf, DE); Iraklis Psaroudakis (Geneva, CH); Norman May (Walldorf, DE)
Assignee: SAP SE
G06F9/466G06F9/4843G06F9/505G06F9/5038G06F9/5066G06F16/24532G06F16/24542G06F17/2705G06F2209/5018Y02D10/22
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,545,789
App. No.
15/963,060
Granted
Jan 28, 2020
Kind
B2
Abstract

Systems and method for a task scheduler with dynamic adjustment of concurrency levels and task granularity are disclosed for improved execution of highly concurrent analytical and transactional systems. The task scheduler can avoid both over commitment and underutilization of computing resources by monitoring and controlling the number of active worker threads. The number of active worker threads can be adapted to avoid underutilization of computing resources by giving the OS control of additional worker threads processing blocked application tasks. The task scheduler can dynamically determine a number of parallel operations for a particular task based on the number of available threads. The number of available worker threads can be determined based on the average availability of worker threads in the recent history of the application. Based on the number of available worker threads, the partitionable operation can be partitioned into a number of sub operations and executed in parallel.

Claims (58)

1. A method, executable by a computer system, comprising:

processing, by a database management system (DBMS) operating on the computer system, a query in a first thread in a plurality of worker threads to generate a parsing task associated with the query;

parsing, by a parser of the DBMS operating on the computer system, the query based on the parsing task to generate an execution plan comprising a plurality of ordered operations for answering the query;

generating, by the parser of the DBMS operating on the computer system, a task graph based on the execution plan, the task graph comprising a plurality of task nodes corresponding to the plurality of ordered operations;

identifying, by the DBMS operating on the computer system, a first task node in the plurality of task nodes corresponding to a first ordered operation in the plurality of ordered operations determined to be partitionable into sub operations for execution in parallel; and

generating, by an optimizer of the DBMS operating on the computer system, a plurality of partitioned tasks for execution in parallel based on the first task node and a number of available worker threads in the plurality of worker threads.

2. The method of claim 1 further comprising:

executing, by the DBMS operating on the computer system, the plurality of partitioned tasks in the plurality of worker threads;

executing, by the DBMS operating on the computer system, the plurality of task nodes in the plurality of worker threads; and

tracking, by the DBMS operating on the computer system, the availability of worker threads while the plurality of partitioned tasks and the plurality of task nodes are executing.

3. The method of claim 1 , wherein processing the query is performed in response to receiving the query from a client, the method further comprising sending results of the query to the client.

4. The method of claim 1 , wherein generating the plurality of partitioned tasks is further based on a state of the query.

5. The method of claim 1 , wherein the query is an SQL query for information contained in a database.

6. The method of claim 1 , wherein the number of available worker threads in the plurality of worker threads is a first number of available worker threads in the plurality of worker threads, wherein the plurality of partitioned tasks is a first plurality of partitioned tasks, wherein the method further comprises:

identifying, by the DBMS operating on the computer system, a second task node in the plurality of task nodes corresponding to a second ordered operation in the plurality of ordered operations determined to be partitionable into sub operations for execution in parallel; and

generating, by the optimizer of the DBMS operating on the computer system, a second plurality of partitioned tasks for execution in parallel based on the second task node and a second number of available worker threads in the plurality of worker threads.

7. The method of claim 6 further comprising:

executing, by the DBMS operating on the computer system, the second plurality of partitioned tasks in the plurality of worker threads; and

tracking, by the DBMS operating on the computer system, the availability of worker threads while the second plurality of partitioned tasks are executing.

8. A non-transitory computer readable medium storing a program executable by at least one processing unit of a computing system, the program comprising sets of instructions for:

processing, by a database management system (DBMS) operating on the computing system, a query in a first thread in a plurality of worker threads to generate a parsing task associated with the query;

parsing, by a parser of the DBMS operating on the computing system, the query based on the parsing task to generate an execution plan comprising a plurality of ordered operations for answering the query;

generating, by the parser of the DBMS operating on the computing system, a task graph based on the execution plan, the task graph comprising a plurality of task nodes corresponding to the plurality of ordered operations;

identifying, by the DBMS operating on the computing system, a first task node in the plurality of task nodes corresponding to a first ordered operation in the plurality of ordered operations determined to be partitionable into sub operations for execution in parallel; and

generating, by a optimizer of the DBMS operating on the computing system, a plurality of partitioned tasks for execution in parallel based on the first task node and the concurrency level value.

9. The non-transitory computer readable medium of claim 8 , wherein the program further comprises sets of instructions for:

executing, by the DBMS operating on the computing system, the plurality of partitioned tasks in the plurality of worker threads;

executing, by the DBMS operating on the computing system, the plurality of task nodes in the plurality of worker threads; and

tracking, by the DBMS operating on the computing system, the availability of worker threads while the plurality of partitioned tasks and the plurality of task nodes are executing.

10. The non-transitory computer readable medium of claim 8 , wherein the set of instructions for processing the query is performed in response to receiving the query from a client, wherein the program further comprises a set of instructions for sending results of the query to the client.

11. The non-transitory computer readable medium of claim 8 , wherein generating the plurality of partitioned tasks is further based on a state of the query.

12. The non-transitory computer readable medium of claim 8 , wherein the query is an SQL query for information contained in a database.

13. The non-transitory computer readable medium of claim 8 , wherein the number of available worker threads in the plurality of worker threads is a first number of available worker threads in the plurality of worker threads, wherein the plurality of partitioned tasks is a first plurality of partitioned tasks, wherein the program further comprises sets of instructions for:

identifying, by the DBMS operating on the computer system, a second task node in the plurality of task nodes corresponding to a second ordered operation in the plurality of ordered operations determined to be partitionable into sub operations for execution in parallel; and

generating, by the optimizer of the DBMS operating on the computer system, a second plurality of partitioned tasks for execution in parallel based on the second task node and the a second number of available worker threads in the plurality of worker threads.

14. The non-transitory computer readable medium of claim 13 , wherein the program further comprises sets of instructions for:

executing, by the DBMS operating on the computer system, the second plurality of partitioned tasks in the plurality of worker threads; and

tracking, by the DBMS operating on the computer system, the availability of worker threads while the second plurality of partitioned tasks are executing.

15. A system comprising:

a set of processing units;

a non-transitory computer readable medium coupled to the set of processing units and comprising instructions, that when executed by at least one processing unit cause the at least one processing unit to be configured to:

process, by a database management system (DBMS) operating on the system, a query in a first thread in a plurality of worker threads to generate a parsing task associated with the query;

parse, by a parser of the DBMS operating on the system, the query based on the parsing task to generate an execution plan comprising a plurality of ordered operations for answering the query;

generate, by the parser of the DBMS operating on the system, a task graph based on the execution plan, the task graph comprising a plurality of task nodes corresponding to the plurality of ordered operations;

identify, by the DBMS operating on the system, a first task node in the plurality of task nodes corresponding to a first ordered operation in the plurality of ordered operations determined to be partitionable into sub operations for execution in parallel; and

generate, by an optimizer of the DBMS operating on the system, a plurality of partitioned tasks for execution in parallel based on the first task node and a number of available worker threads in the plurality of worker threads.

16. The system of claim 15 , wherein the instructions further cause the at least one processing unit to be configured to:

execute, by the DBMS operating on the system, the plurality of partitioned tasks in the plurality of worker threads;

execute, by the DBMS operating on the system, the plurality of task nodes in the plurality of task nodes; and

track, by the DBMS operating on the system, the availability of worker threads while the plurality of partitioned tasks and the plurality of task nodes execute.

17. The system of claim 15 , wherein processing the query is performed in response to receiving the query from a client, wherein the instructions further cause the at least one processing unit to be configured to send results of the query to the client.

18. The system of claim 15 , wherein the plurality of partitioned tasks is further based on a state of the query.

19. The system of claim 15 , wherein the number of available worker threads in the plurality of worker threads is a first number of available worker threads in the plurality of worker threads, wherein the plurality of partitioned tasks is a first plurality of partitioned tasks, wherein the instructions further cause the at least one processing unit to be configured to:

identify, by the DBMS operating on the system, a second task node in the plurality of task nodes corresponding to a second ordered operation in the plurality of ordered operations determined to be partitionable into sub operations for execution in parallel; and

generate, by the optimizer of the DBMS operating on the system, a second plurality of partitioned tasks for execution in parallel based on the second task node and a second number of available worker threads in the plurality of worker threads.

20. The system of claim 15 , wherein the instructions further cause the at least one processing unit to be configured to:

execute, by the DBMS operating on the system, the second plurality of partitioned tasks in the plurality of worker threads; and

track, by the DBMS operating on the system, the availability of worker threads while the second plurality of partitioned tasks are executing.

Assignments (2)
CHANGE OF NAME Recorded May 8, 2019
From: SAP AG
To: SAP SE
Reel/Frame 049115/0609 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2019
From: AILAMAKI, ANASTASIA; SCHEUER, TOBIAS; PSAROUDAKIS, IRAKLIS; MAY, NORMAN
To: SAP AG
Reel/Frame 049093/0986 →
Continuity (3)
Continuation 15088810 · Apr 1, 2016
Continuation 13925629 · Jun 24, 2013
Related Publication 20180246755A1 · Aug 30, 2018