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.

Three rules to remember

(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.

ItemBillingNote
Batch service0Job scheduling/pool management free
Compute node VMVM priceBills while node exists, including startup/idle
Spot/Low PrioritySpot priceAbout 20% of on-demand
StorageAzure Storage standardInput/output/application packages
NetworkStandardEgress/VNet/load balancer
Start taskNode runtimeRuns 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.

SKUvCPU/RAMOn-demand/hourSpot/hourSpot discountOn-demand/Spot per vCPU-h
D2s_v32 / 8 GB0.0960.0191980.0%0.048 / 0.0096
D4s_v34 / 16 GB0.1920.03838180.0%0.048 / 0.0096
D8s_v38 / 32 GB0.3840.07676280.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-hoursD2s_v3 node-hoursOn-demand/monthSpot/monthSpot saving
100504.800.9680.0%
1,00050048.009.6080.0%
10,0005,000480.0095.9580.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.

ItemRule/impact
EvictionCapacity-based, can happen anytime
Max priceBatch Spot does not support max price/price eviction
RestoreAttempted within 48 hours, not guaranteed
CheckpointMust be retryable/resumable
Ephemeral OSNot supported with Spot
Mixed poolDedicated + Spot can coexist
DeadlineKeep 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".

LeverCost impactControl
Autoscale formulaNodes follow loadRunningTasks/queue with min/max
Idle nodesBill while presentScale down/delete pool/low priority
Start taskNode startup timePrebuilt image/application package
Task retriesRepeated computeCheckpoint/idempotency
Core quotaPool cannot reach targetRequest quota early
Pool minimumFixed costmin nodes=0/low
Forgotten poolContinues billingLifecycle/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.

ScenarioPreferWhy/check first
Large parallel/HPC/renderingBatchVM+Spot, pool/task model
Event-driven/short tasksFunctionsPer-execution/cold start
Containerized APIs/jobsContainer AppsvCPU/memory/replicas
Kubernetes/microservicesAKSNode pools/scheduling
Existing Slurm/PBSCycleCloudKeep scheduler model
Tightly coupled MPIBatch/CycleCloudInfiniBand/node communication
Simple timersLogic Apps/FunctionsNo 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

Data cut-off 9 November 2026; prices/availability follow Microsoft official pages and bills; this is not procurement, commercial or legal advice.

Turn VM/Spot, vCPU-hours, idle time and storage/network into a checkable budget

Bring task count/duration/vCPU-hours, data volume, deadlines and checkpoint needs; we turn Azure Batch cost into a checkable budget.

Book a Batch cost review