Forum Discussion
Minimising Pipeline Overhead
Hi team,
I'm seeing what I would consider significant pipeline overhead where a pipeline continues to run for 10-30% of the time it's child tasks took to complete. I am wondering if this is something I can address with config or if it's a "just the way it is" scenario.
- The bottom red pipeline runs another pipeline and a dbt job
- Bottom orange pipeline runs the two other pipelines
- Blue and Green pipelines run their respective Copy Jobs
In all cases the parent pipeline's run time exceeds the sum run time of it's child components by a significant amount, nearly 10 minutes in some cases where the pipeline is just sitting there, doing nothing (or at least 'visibly' doing nothing).
Hi iShaymus ,
The overhead you're seeing is expected behavior with nested pipelines. Each Execute Pipeline activity introduces scheduling latency typically 1–3 minutes per level due to activity state polling, metadata persistence, and checkpoint writes between parent and child runs. This cost is partially fixed: it doesn't scale with your data volume, but it does compound with nesting depth.
In your case, with 3 levels of nesting (orange - red - blue/green), you're accumulating that latency at each hop. That's likely where most of your 10-minute gap is coming from.
A few approaches that can help reduce it :
- Reduce nesting depth
Flatten your orchestration where possible. Instead of parent - child - grandchild, bring Copy Jobs and dbt execution into a single pipeline level using ForEach (parallel = true). Fewer hops = less overhead. - Group related activities into parameterized child pipelines
Instead of many nearly identical pipelines, use a small number of parameterized ones called from one orchestrator. Reduces both nesting and maintenance overhead. - Use metadata-driven orchestration
A config table can replace multiple similar pipelines. We've used this pattern to onboard dozens of sources while keeping the orchestration layer flat and fast. - Monitor before optimizing
Check the Monitoring Hub first sometimes the real bottleneck is Spark startup time, source latency, or SQL workload rather than pipeline scheduling itself.
Useful reference : https://learn.microsoft.com/en-us/fabric/data-factory/pipeline-runs
Out of curiosity are you mainly trying to reduce execution time, capacity consumption, or operational complexity? The answer could lead to different recommendations.
- Reduce nesting depth
3 Replies
- Tamanchu
Super User
Hi iShaymus ,
The overhead you're seeing is expected behavior with nested pipelines. Each Execute Pipeline activity introduces scheduling latency typically 1–3 minutes per level due to activity state polling, metadata persistence, and checkpoint writes between parent and child runs. This cost is partially fixed: it doesn't scale with your data volume, but it does compound with nesting depth.
In your case, with 3 levels of nesting (orange - red - blue/green), you're accumulating that latency at each hop. That's likely where most of your 10-minute gap is coming from.
A few approaches that can help reduce it :
- Reduce nesting depth
Flatten your orchestration where possible. Instead of parent - child - grandchild, bring Copy Jobs and dbt execution into a single pipeline level using ForEach (parallel = true). Fewer hops = less overhead. - Group related activities into parameterized child pipelines
Instead of many nearly identical pipelines, use a small number of parameterized ones called from one orchestrator. Reduces both nesting and maintenance overhead. - Use metadata-driven orchestration
A config table can replace multiple similar pipelines. We've used this pattern to onboard dozens of sources while keeping the orchestration layer flat and fast. - Monitor before optimizing
Check the Monitoring Hub first sometimes the real bottleneck is Spark startup time, source latency, or SQL workload rather than pipeline scheduling itself.
Useful reference : https://learn.microsoft.com/en-us/fabric/data-factory/pipeline-runs
Out of curiosity are you mainly trying to reduce execution time, capacity consumption, or operational complexity? The answer could lead to different recommendations.
- iShaymusNew Member
Thanks for the resposne. I'm not looking to resolve it with any specific lens, I simply know how long they approximately take to run if I run the copy jobs individually vs what I was seeing with a full pipeline run. I was seeking to understand the reason for the additional overhead and where possible, improve it.
- Reduce nesting depth
- v-prasare
Community Support
Hi iShaymus ,
We would like to confirm if our community members answer resolves your query or if you need further help. If you still have any questions or need more support, please feel free to let us know. We are happy to help you.
Tamanchu ,Thanks for your prompt responseThank you for your patience and look forward to hearing from you.
Best Regards,
Prashanth Are
MS Fabric community support