You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
title: Azure Functions Durable Task Scheduler work item throughput for Durable Functions (preview)
3
+
description: Learn about how the Azure Functions Durable Task Scheduler provides high work item throughput for use with Durable Functions.
4
+
ms.topic: conceptual
5
+
ms.date: 04/10/2025
6
+
---
7
+
8
+
# Azure Functions Durable Task Scheduler work item throughput (preview)
9
+
10
+
The Durable Task Scheduler was benchmarked against other storage providers, including the Azure Storage, MSSQL, and Netherite providers. The results show the Durable Task Scheduler provides better work item throughput than the other options, which translates into more orchestrator, entity, and activity tasks being processed in a given time period.
11
+
12
+
The following table shows the results of a series of benchmarks ran to compare the relative throughput of the Durable Task Scheduler provider vs. the default Azure Storage provider. The Azure Storage provider was chosen as the comparison because it's currently the default and most commonly used backend option for Durable Function apps.
13
+
14
+
:::image type="content" source="media/durable-task-scheduler/performance.png" alt-text="Bar chart comparing throughput of Durable Task Scheduler vs Azure Storage providers.":::
15
+
16
+
> [!NOTE]
17
+
> The results shown in the chart are for an early preview version of the Durable Task Scheduler feature, configured with the lowest available scale settings. The results are expected to improve as the backend provider matures and gets closer to general availability.
18
+
19
+
To test the relative throughput of the backend providers, these benchmarks were run using a standard orchestrator function that calls five activity functions, one for each city, in a sequence. Each activity simply returns a "Hello, {cityName}!" string value and doesn't do any other work.
20
+
21
+
The intent of the benchmark is to measure the overhead of each backend without doing anything too complicated. This type of sequential orchestration was chosen due to its commonality in function apps that include Durable Functions.
22
+
23
+
### Test details
24
+
25
+
The test consists of the following criteria:
26
+
27
+
- The function app used for this test runs on **one to four Elastic Premium EP2 instances**.
28
+
- The orchestration code was written in C# using the **.NET Isolated worker model on NET 8**.
29
+
- The same app was used for all storage providers, and the only change was the backend storage provider configuration.
30
+
- The test is triggered using an HTTP trigger which starts **5,000 orchestrations concurrently**.
31
+
32
+
After the test completes, the throughput is calculated by dividing the total number of completed orchestrations by the total execution time. The test was run multiple times for each storage provider configuration to ensure the results were consistent.
33
+
34
+
This benchmark showed that the Durable Task Scheduler is roughly **five times faster** than the Azure Storage provider. Your results might vary depending on:
35
+
36
+
- The complexity of your orchestrations and activities
37
+
- The number of orchestrations running concurrently
38
+
- The size of the data payloads being passed between orchestrations and activities
39
+
- Other factors such as the virtual machine size.
40
+
41
+
> [!NOTE]
42
+
> These results are meant to provide a rough comparison of the relative performance of the storage provider backends at the time the test was run. These results shouldn't be taken as definitive.
Copy file name to clipboardExpand all lines: articles/azure-functions/durable-task-scheduler/durable-task-scheduler.md
+13-44Lines changed: 13 additions & 44 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,33 +27,37 @@ You can use the Durable Task Scheduler with the following orchestration framewor
27
27
28
28
## Architecture
29
29
30
-
For all Durable Task Scheduler orchestration frameworks, instances of the Durable Task Scheduler can be created using Azure Resource Manager and are of type [Microsoft.DurableTask/scheduler](/azure/templates/microsoft.durabletask/schedulers). Each *scheduler* resource internally has its own dedicated compute and memory resources optimized for:
30
+
For all Durable Task Scheduler orchestration frameworks, you can create instances of the Durable Task Scheduler of type [Microsoft.DurableTask/scheduler](/azure/templates/microsoft.durabletask/schedulers) using Azure Resource Manager. Each *scheduler* resource internally has its own dedicated compute and memory resources optimized for:
31
31
32
32
- Dispatching orchestrator, activity, and entity work items
33
33
- Storing and querying history at scale with minimal latency
34
34
- Providing a rich monitoring experience through [the Durable Task Scheduler dashboard](./durable-task-scheduler-dashboard.md)
35
35
36
-
Unlike [the BYO storage providers](../durable/durable-functions-storage-providers.md), the Durable Task Scheduler provider is a purpose-built backend-as-a-service optimized for the specific needs of the Durable Task Framework.
36
+
Unlike [the BYO storage providers](../durable/durable-functions-storage-providers.md), the Durable Task Scheduler provider is a purpose-built backend-as-a-service optimized for the specific needs of the [Durable Task Framework](https://github.com/Azure/durabletask).
37
37
38
38
The following diagram shows the architecture of the Durable Task Scheduler backend and its interaction with connected apps.
39
39
40
40
:::image type="content" source="media/durable-task-scheduler/architecture.png" alt-text="Diagram of the Durable Task Scheduler architecture.":::
41
41
42
-
### Separation of concerns
42
+
### Operational separation
43
43
44
-
The Durable Task Scheduler runs in Azure as a separate resource from the app. This separation allows the scheduler to scale independently of the app and provides better isolation between the two components. This isolation is important for several reasons:
44
+
The Durable Task Scheduler runs in Azure as a separate resource from your app. This isolation is important for several reasons:
45
45
46
-
-**Reduced resource consumption:** BYO storage providers can consume a significant amount of CPU and memory resources. This resource consumption is due to the overhead of managing partitions and other complex state store interactions. Using a managed scheduler instead of a BYO storage provider allows your app instances to run more efficiently and with less resource contention.
46
+
-**Reduced resource consumption**
47
+
Using a managed scheduler like Durable Task Scheduler reduces CPU and memory resource consumption caused by the overhead of managing partitions and other complex state store interactions. Using a managed scheduler (instead of a BYO storage provider, for example) allows your app instances to run more efficiently with less resource contention.
47
48
48
-
-**Fault isolation:** Stability or availability issues in the Durable Task Scheduler won't affect the stability or availability of your connected apps. With BYO storage providers, instability in the backend provider (which is a complex component) can create instability in the app logic. By separating the scheduler from the app, you can reduce the risk of cascading failures and improve overall reliability.
49
+
-**Fault isolation**
50
+
when Durable Task Scheduler experiences stability or availability issues, it won't affect the stability or availability of your connected apps. By separating the scheduler from the app, you can reduce the risk of cascading failures and improve overall reliability.
49
51
50
-
-**Independent scaling:** The scheduler resource can be scaled independently of the app, allowing for better infrastructure resource management and cost optimization. For example, multiple apps can share the same scheduler resource, improving overall resource utilization. This capability is especially useful for organizations with multiple teams or projects that require Durable Functions.
52
+
-**Independent scaling**
53
+
The scheduler resource can be scaled independently of the app, allowing for better infrastructure resource management and cost optimization. For example, multiple apps can share the same scheduler resource, improving overall resource utilization. This capability is especially useful for organizations with multiple teams or projects.
51
54
52
-
-**Improved support experience:** The Durable Task Scheduler is a managed service, which means that Azure can provide better support and diagnostics for issues related to the scheduler. When using a BYO storage provider, you might need to troubleshoot issues related to the backend provider, which can be complex and time-consuming. A managed service allows Azure to take care of the underlying infrastructure and provide a more streamlined support experience.
55
+
-**Improved support experience**
56
+
The Durable Task Scheduler is a managed service, providing a more streamlined support and diagnostics for issues regarding the underlying infrastructure.
53
57
54
58
### App connectivity
55
59
56
-
Your Durable Function apps connect to the scheduler resource via a gRPC connection. The endpoint address is in the form `{scheduler-name}.{region}.durabletask.io`. For example, `myscheduler-123.westus2.durabletask.io`. The connection is secured using TLS and the app's identity is used to authenticate the connection.
60
+
Your apps connect to the scheduler resource via a gRPC connection, secured using TLS and authenticated by the app's identity. The endpoint address is in a format similar to `{scheduler-name}.{region}.durabletask.io`. For example, `myscheduler-123.westus2.durabletask.io`.
57
61
58
62
Work items are streamed from the scheduler to the app using a push model, removing the need for polling and improving end-to-end latency. Your apps can process multiple work items in parallel and send responses back to the scheduler when the corresponding orchestration, activity, or entity task is complete.
> The emulator internally stores orchestration and entity state in local memory, so it isn't suitable for production use.
94
98
95
-
## Work item throughput
96
-
97
-
The Durable Task Scheduler was benchmarked against other storage providers, including the Azure Storage, MSSQL, and Netherite providers. The results show the Durable Task Scheduler provides better work item throughput than the other options, which translates into more orchestrator, entity, and activity tasks being processed in a given time period.
98
-
99
-
The following table shows the results of a series of benchmarks ran to compare the relative throughput of the Durable Task Scheduler provider vs. the default Azure Storage provider. The Azure Storage provider was chosen as the comparison because it's currently the default and most commonly used backend option for Durable Function apps.
100
-
101
-
:::image type="content" source="media/durable-task-scheduler/performance.png" alt-text="Bar chart comparing throughput of Durable Task Scheduler vs Azure Storage providers.":::
102
-
103
-
> [!NOTE]
104
-
> The results shown in the chart are for an early preview version of the Durable Task Scheduler feature, configured with the lowest available scale settings. The results are expected to improve as the backend provider matures and gets closer to general availability.
105
-
106
-
To test the relative throughput of the backend providers, these benchmarks were run using a standard orchestrator function that calls five activity functions, one for each city, in a sequence. Each activity simply returns a "Hello, {cityName}!" string value and doesn't do any other work.
107
-
108
-
The intent of the benchmark is to measure the overhead of each backend without doing anything too complicated. This type of sequential orchestration was chosen due to its commonality in function apps that include Durable Functions.
109
-
110
-
### Test details
111
-
112
-
The test consists of the following criteria:
113
-
114
-
- The function app used for this test runs on **one to four Elastic Premium EP2 instances**.
115
-
- The orchestration code was written in C# using the **.NET Isolated worker model on NET 8**.
116
-
- The same app was used for all storage providers, and the only change was the backend storage provider configuration.
117
-
- The test is triggered using an HTTP trigger which starts **5,000 orchestrations concurrently**.
118
-
119
-
After the test completes, the throughput is calculated by dividing the total number of completed orchestrations by the total execution time. The test was run multiple times for each storage provider configuration to ensure the results were consistent.
120
-
121
-
This benchmark showed that the Durable Task Scheduler is roughly **five times faster** than the Azure Storage provider. Your results might vary depending on:
122
-
123
-
- The complexity of your orchestrations and activities
124
-
- The number of orchestrations running concurrently
125
-
- The size of the data payloads being passed between orchestrations and activities
126
-
- Other factors such as the virtual machine size.
127
-
128
-
> [!NOTE]
129
-
> These results are meant to provide a rough comparison of the relative performance of the storage provider backends at the time the test was run. These results shouldn't be taken as definitive.
0 commit comments