Fabric Capacity & Cost Management
How Fabric capacity SKUs, Capacity Units, and smoothing work, and how to manage cost as workloads grow.
Fabric Capacity & Cost Management
Every Fabric workload — Lakehouse Spark jobs, Warehouse queries, Direct Lake framing, Power BI report queries — draws from a shared pool of compute called a capacity, sized by SKU and measured in Capacity Units (CUs).
Fabric Capacity (e.g. F64)
|
+-- Workspace A
| +-- Lakehouse Spark job -> consumes CUs
| +-- Power BI report query -> consumes CUs
|
+-- Workspace B
+-- Warehouse query -> consumes CUs
+-- Direct Lake framing -> consumes CUsUnlike Power BI Pro, which licenses individual users, capacity is a shared resource that every workload assigned to it competes for.
Capacity SKUs
Fabric capacity comes in SKUs from F2 up through F2048, each roughly double the Capacity Units of the one before it.
F2 -> F4 -> F8 -> F16 -> F32 -> F64 -> F128 -> ... -> F2048F64 is commonly treated as roughly equivalent to the old Power BI Premium P1 SKU in terms of capacity, which is a useful anchor point when estimating what size a workload that previously ran on Premium would need on Fabric.
Smoothing and Bursting
Fabric doesn't charge every operation at face value the instant it runs. Background operations (like scheduled refreshes or Spark jobs) are smoothed over a 24-hour window, and interactive operations get short-term burst capacity beyond the SKU's baseline.
Background operation (e.g. a large refresh)
|
| cost smoothed across 24 hours, not charged all at once
|
Interactive operation (e.g. a user opening a report)
|
| can briefly burst above baseline capacity for responsivenessThis is why a single heavy job doesn't necessarily throttle the capacity outright — but sustained, consistent overuse across many operations will.
Throttling
When a capacity is consistently over its available Capacity Units, Fabric throttles it — starting with delaying background operations, and escalating to rejecting interactive requests if the overage continues.
Capacity usage over time
|
| briefly over -> smoothed, minimal impact
|
| consistently over -> background operations delayed
|
| still over -> interactive operations rejectedThrottling is the practical signal that a capacity is undersized for its assigned workloads, not just a temporary spike worth ignoring.
Autoscale and Pausing
Capacity doesn't have to run at a fixed size all the time.
Autoscale — automatically increases capacity size temporarily during sustained overage
Pause — stops billing entirely for a capacity that isn't in active usePausing a development or test capacity outside of working hours, and relying on autoscale for a production capacity with unpredictable peak load, are both common ways to avoid paying for headroom that sits idle most of the time.
Migrating from Power BI Premium
Power BI Premium (P SKUs) is being phased out in favor of Fabric capacity (F SKUs). Existing Premium capacities can be migrated to an equivalent Fabric capacity from the admin portal, generally without needing to rebuild workspaces or content.
Power BI Premium (P1, P2, P3, ...)
|
| admin portal migration
|
Fabric Capacity (F64, F128, F256, ...)Workspaces assigned to the old Premium capacity carry over to the new Fabric capacity, keeping the same reports, datasets, and permissions in place.
Monitoring Usage
The Fabric Capacity Metrics app, installed from the admin portal, shows Capacity Unit consumption broken out by workspace, item, and operation type (background vs. interactive), which is the main tool for understanding what's actually driving a capacity's usage.
Fabric Capacity Metrics app
|
+-- Usage by workspace
+-- Usage by item (which Lakehouse, which report)
+-- Background vs. interactive breakdown
+-- Throttling historyReviewing this regularly is what turns "the capacity feels slow" into a specific, actionable finding — a particular Spark job, a particular report, or a particular refresh schedule.
Best Practices
- Size capacity based on actual measured usage from the Capacity Metrics app, not a guess extrapolated from Premium sizing alone.
- Pause non-production capacities outside of active working hours.
- Use autoscale for production capacities with unpredictable peaks, rather than permanently over-provisioning a fixed size to cover worst case.
- Review the Capacity Metrics app regularly, not just when something is already noticeably slow.
Common Mistakes
Sizing Capacity Once and Never Revisiting It
Workloads grow as more teams and reports land on a capacity. A SKU sized correctly at launch can become undersized months later without anyone noticing until throttling starts.
Leaving Dev/Test Capacity Running Around the Clock
A development capacity used only during business hours but left running 24/7 pays for idle time that pausing would have avoided entirely.
Diagnosing Slowness Without the Metrics App
Guessing which workload is causing throttling, instead of checking the Capacity Metrics app's breakdown by workspace and item, wastes time chasing the wrong fix.
Fabric Capacity Checklist
- Capacity size is based on measured usage, reviewed periodically.
- Non-production capacities are paused when not in active use.
- Autoscale is enabled for production capacities with unpredictable peak load.
- The Capacity Metrics app is checked regularly, not only after a slowdown is reported.
Next Steps
Continue exploring Microsoft Fabric: