Direct answer: at the Azure Retail Prices API on 9 November 2026 (eastus, USD, excluding tax/discounts), Azure Batch itself is free; the bill comes from underlying resources: VMs, storage and networking. For Linux D-series: D2s_v3 $0.096/hour (2 vCPU, about $0.048/vCPU-hour), D4s_v3 $0.192 (4 vCPU), D8s_v3 $0.384 (8 vCPU); Spot/Low Priority is about $0.01919/$0.038381/$0.076762, roughly 20% of on-demand (80% off). By vCPU-hour: 100 vCPU-h = $4.80 on-demand / $0.96 Spot, 1,000 = $48.00/$9.60, 10,000 = $480.00/$95.95. Node startup, idle time and start tasks all bill; storage/network are extra; Spot can be evicted for capacity, so checkpoint/retry is required.
This guide is for architects, platform/SRE, finance and procurement teams evaluating large-scale parallel, HPC, rendering, image/data batch processing or Monte Carlo workloads. It explains Batch's "free service + resource billing" model, D2s_v3/D4s_v3/D8s_v3 on-demand vs Spot, 100/1,000/10,000 vCPU-hour TCO, autoscale/idle/start tasks, and the Batch vs Functions/Container Apps/AKS/CycleCloud boundary. Prices come from the Azure Batch pricing page, Azure Retail Prices API and Microsoft Learn (eastus, 9 November 2026). Official price facts, editorial calculations and exclusions are kept separate. This is not procurement advice.
(1) Batch itself is free; the bill = VM + storage + network, so don't look for a "Batch service fee". (2) Spot/Low Priority saves about 80% but can be evicted for capacity; use it only for short, checkpointable, retryable tasks. (3) Node startup, idle time and start tasks all bill; set autoscale minimums and formulas to avoid idle spend.
Billing structure: Batch free, resources paid
Azure Batch provides job scheduling and pool management at no extra charge; you pay only for the underlying resources: compute node VMs, storage (input/output/application packages) and networking (egress/VNet). Nodes are standard Azure VMs billed at VM prices; Spot/Low Priority nodes bill at Spot prices. The Batch account itself is free but has a core (vCPU) quota; if a pool cannot reach its target, check the quota first.
| Item | Billing | Note |
|---|---|---|
| Batch service | 0 | Job scheduling/pool management free |
| Compute node VM | VM price | Bills while node exists, including startup/idle |
| Spot/Low Priority | Spot price | About 20% of on-demand |
| Storage | Azure Storage standard | Input/output/application packages |
| Network | Standard | Egress/VNet/load balancer |
| Start task | Node runtime | Runs on join/restart/reimage |
Sources: Azure Batch pricing page and Learn "What is Azure Batch" (9 November 2026). Microsoft states "no extra charge to use Batch"; only VM/storage/network are paid.
D-series on-demand vs Spot: about 80% off
Linux D-series has similar per-vCPU pricing: D2s_v3 $0.096/hour (2 vCPU), D4s_v3 $0.192 (4), D8s_v3 $0.384 (8), about $0.048/vCPU-hour; Spot is $0.01919/$0.038381/$0.076762, about $0.0096/vCPU-hour, an 80% saving. Spot prices vary by capacity/region/time; this uses an eastus 9 November 2026 snapshot. Low Priority is priced similarly but has different billing/eviction behavior.
| SKU | vCPU/RAM | On-demand/hour | Spot/hour | Spot discount | On-demand/Spot per vCPU-h |
|---|---|---|---|---|---|
| D2s_v3 | 2 / 8 GB | 0.096 | 0.01919 | 80.0% | 0.048 / 0.0096 |
| D4s_v3 | 4 / 16 GB | 0.192 | 0.038381 | 80.0% | 0.048 / 0.0096 |
| D8s_v3 | 8 / 32 GB | 0.384 | 0.076762 | 80.0% | 0.048 / 0.0096 |
Sources: Azure Retail Prices API (eastus, 9 November 2026); Linux prices, excluding tax/discounts. Spot prices vary by capacity/region/time; Low Priority is similar but has different billing/eviction behavior.
100 / 1,000 / 10,000 vCPU-hour TCO
Using D2s_v3 (2 vCPU): 100 vCPU-h = 50 node-hours = $4.80 on-demand / $0.96 Spot; 1,000 vCPU-h = 500 node-hours = $48.00/$9.60; 10,000 vCPU-h = 5,000 node-hours = $480.00/$95.95. Because per-vCPU pricing is similar, D4s_v3/D8s_v3 give almost the same result at the same vCPU-hours; choose by per-task memory/cores/startup time. A 50% on-demand + 50% Spot mix at 1,000 vCPU-h is about $28.80.
| vCPU-hours | D2s_v3 node-hours | On-demand/month | Spot/month | Spot saving |
|---|---|---|---|---|
| 100 | 50 | 4.80 | 0.96 | 80.0% |
| 1,000 | 500 | 48.00 | 9.60 | 80.0% |
| 10,000 | 5,000 | 480.00 | 95.95 | 80.0% |
Editorial calculation: D2s_v3 $0.096/hour, Spot $0.01919; linear by vCPU-hour; excludes storage, network, start task/idle, tax and discounts. Spot price/availability varies with capacity.
Spot/Low Priority: the cost of saving 80%
Spot uses Azure surplus capacity: cheap but can be evicted for capacity. Batch Spot does not support a max price or price-based eviction; only capacity-based eviction. An evicted VM may be restored within 48 hours, but success is not guaranteed; tasks need checkpoint/retry/short duration. Spot also does not support ephemeral OS disks (the service-managed eviction policy is Stop-Deallocate). Keep dedicated nodes or a mixed pool for tight deadlines or non-interruptible work.
| Item | Rule/impact |
|---|---|
| Eviction | Capacity-based, can happen anytime |
| Max price | Batch Spot does not support max price/price eviction |
| Restore | Attempted within 48 hours, not guaranteed |
| Checkpoint | Must be retryable/resumable |
| Ephemeral OS | Not supported with Spot |
| Mixed pool | Dedicated + Spot can coexist |
| Deadline | Keep dedicated nodes for tight deadlines |
Sources: Learn "Use Spot VMs with Batch workloads" (9 November 2026). Spot availability/price varies; not for non-interruptible long tasks.
Autoscale, idle and start tasks: a free service can still burn money
Batch autoscale uses a formula to add/remove nodes by metrics, but a node bills while it exists, including startup, start task, idle time and waiting between tasks. Common waste: high pool minimum, non-converging formulas, long start tasks, task retries, core quota preventing the pool from reaching target and forgetting to scale down/delete a pool. Use min nodes, queue-length formulas and deallocation policies to cut the "idle tax".
| Lever | Cost impact | Control |
|---|---|---|
| Autoscale formula | Nodes follow load | RunningTasks/queue with min/max |
| Idle nodes | Bill while present | Scale down/delete pool/low priority |
| Start task | Node startup time | Prebuilt image/application package |
| Task retries | Repeated compute | Checkpoint/idempotency |
| Core quota | Pool cannot reach target | Request quota early |
| Pool minimum | Fixed cost | min nodes=0/low |
| Forgotten pool | Continues billing | Lifecycle/auto-cleanup |
Sources: Learn "Autoscale compute nodes" and "Nodes and pools" (9 November 2026). Nodes bill at VM rates while running/starting/idle.
Batch vs Functions vs Container Apps vs AKS vs CycleCloud
Choose by scheduling model: Batch for large parallel/HPC/rendering/independent tasks/MPI, paying for VMs; Functions for event-driven short tasks billed per execution; Container Apps for containerized APIs/jobs billed by vCPU/memory; AKS for Kubernetes orchestration/microservices; CycleCloud for existing Slurm/PBS workflows. Batch's advantage is "scheduling as a service + pooled VMs", not replacing every compute platform.
| Scenario | Prefer | Why/check first |
|---|---|---|
| Large parallel/HPC/rendering | Batch | VM+Spot, pool/task model |
| Event-driven/short tasks | Functions | Per-execution/cold start |
| Containerized APIs/jobs | Container Apps | vCPU/memory/replicas |
| Kubernetes/microservices | AKS | Node pools/scheduling |
| Existing Slurm/PBS | CycleCloud | Keep scheduler model |
| Tightly coupled MPI | Batch/CycleCloud | InfiniBand/node communication |
| Simple timers | Logic Apps/Functions | No pool needed |
Editorial selection framework, not a vendor recommendation; features/quota/regions follow official docs. Sources: Learn Batch/HPC docs (9 November 2026).
Hidden costs and 90-day checklist
Seven extra costs: storage (input/output/application packages), network egress/VNet, node startup/idle, start task, failed retries, rerun after Spot eviction and core quota. 90 days: weeks 1–2 inventory tasks/duration/vCPU-hours, data volume and deadlines; weeks 2–4 compare D2s_v3 on-demand vs Spot at 100/1,000/10,000 vCPU-h; weeks 4–6 run a Spot PoC with checkpointing; weeks 6–8 tune autoscale/pool minimum/start task; weeks 8–10 compare Functions/Container Apps/AKS/CycleCloud; weeks 10–12 review storage/network bills and request quota.
FAQ
How is Azure Batch billed?
Batch itself is free; you pay for underlying VMs, storage and networking. Nodes are standard Azure VMs billed at VM/Spot prices; the Batch account is free but has a vCPU quota. There is no "Batch service fee".
Why is Batch free but the bill high?
Because nodes bill while they exist: startup, start task, idle time and waiting between tasks all count, plus storage, egress, failed retries and Spot-eviction reruns. High pool minimums, forgotten pools and non-converging formulas are common waste.
How much does Spot save?
eastus D2s_v3 on-demand is $0.096/hour and Spot $0.01919, about 80% off; D4s_v3/D8s_v3 scale similarly. Spot prices vary by capacity/region/time and can be evicted; use for short/checkpointable/retryable tasks.
How much is 1,000 vCPU-hours?
D2s_v3 (2 vCPU) 500 node-hours: $48.00 on-demand, $9.60 Spot; a 50/50 mix is about $28.80. Excludes storage/network/start task/idle/tax.
What happens when Spot is evicted?
Tasks must checkpoint/retry/idempotent; Batch Spot does not support max price and only evicts for capacity; an evicted VM is restored only within 48 hours and not guaranteed. Keep dedicated nodes or a mixed pool for tight deadlines.
How should autoscale be set?
Use a formula based on RunningTasks/queue length/time windows with min/max and deallocation policy; a core quota shortfall prevents reaching the target. Set pool minimum to 0 or low to avoid idle tax; delete unused pools.
How are storage and network charged?
Input/output/application packages use Azure Storage standard rates; egress/VNet/load balancer use standard network rates. They are outside the Batch service fee and must be estimated separately; large datasets/cross-region transfer can exceed VM cost.
Batch vs Functions/Container Apps/AKS?
Choose Batch for large parallel/HPC/rendering/MPI; Functions for event-driven/short tasks; Container Apps for containerized APIs/jobs; AKS for Kubernetes/microservices; CycleCloud for existing Slurm/PBS. Choose by scheduling model and billing unit, not unit price alone.
Research method and limitations
This article separates "official price facts" from "editorial calculations": Batch free, only VM/storage/network paid, Spot/Low Priority, autoscale/start task/core quota come from the Azure Batch pricing page and Microsoft Learn; D2s_v3 $0.096/Spot $0.01919, D4s_v3 $0.192/$0.038381, D8s_v3 $0.384/$0.076762 come from the Azure Retail Prices API (eastus, 9 November 2026); the 100/1,000/10,000 vCPU-hour TCO is editorial.
Eight limitations: (1) only eastus Linux list prices, excluding tax/CSP/enterprise discounts/Windows; (2) Spot prices vary by capacity/region/time, and the example is a snapshot; (3) the main TCO excludes storage/network/start task/idle/retries/tax; (4) no real task/scheduler/HPC benchmark; (5) GPU/InfiniBand/MPI-specific SKUs are not covered; (6) Low Priority vs Spot billing/eviction differences are not fully modelled; (7) core quota/regional availability affect actual pool size; (8) prices/features change, so recheck official pages and bills before purchase.
Sources and basis
- Microsoft Azure, Batch Pricing: azure.microsoft.com/en-us/pricing/details/batch. Batch free, VM/Spot, Low Priority. Accessed 9 November 2026.
- Azure Retail Prices API (armSkuName D2s_v3/D4s_v3/D8s_v3, eastus): prices.azure.com/api/retail/prices. $0.096/$0.01919, $0.192/$0.038381, $0.384/$0.076762. Accessed 9 November 2026.
- Microsoft Learn, What is Azure Batch: learn.microsoft.com/en-us/azure/batch/batch-technical-overview. "No extra charge to use Batch", only VM/storage/network, Batch vs CycleCloud. Accessed 9 November 2026.
- Microsoft Learn, Nodes and pools / Autoscale / Spot: nodes-and-pools, batch-automatic-scaling, batch-low-pri-vms. Start task, autoscale formulas, Spot eviction/48h/checkpoint. Accessed 9 November 2026.
Data cut-off 9 November 2026; prices/availability follow Microsoft official pages and bills; this is not procurement, commercial or legal advice.