# Azure Batch Account

> Azure Batch bills for the VMs in its pools, and dedicated nodes keep billing between job runs. A pool holding 20 idle nodes pays for 20 VMs around the clock. ZopNight scales pools to 0 dedicated nodes on schedule and restores the saved size on start; autoscale-formula pools stay formula-governed.

Source: https://zop.dev/integrations/azure/azure-batch
Updated: 2026-08-19

---

Azure Batch runs large-scale parallel and high-performance computing jobs on managed pools of compute nodes. Pools that keep dedicated nodes allocated between job runs accrue full VM charges around the clock.

## Dedicated nodes bill between jobs

Batch itself is free to orchestrate. The charge is the compute nodes its pools allocate. Every dedicated node is a VM accruing compute charges for as long as it exists, entirely independent of whether a task is executing on it. A pool that finishes its nightly render at 2am and holds its nodes until the next evening pays for a full day of silence. Low-priority and Spot nodes soften the rate but not the principle: allocation, not activity, is what the meter reads.

## Pool resize as the scheduling verb

Because a Batch pool has no stop button, ZopNight's schedule action is a resize: dedicated nodes are scaled to 0 on stop, with the pool's prior size saved, and the saved size is restored on start. The pool object, its job queue, and its configuration all survive at zero nodes. Pending tasks simply wait for capacity to return. One boundary matters: pools governed by an autoscale formula are not captured by the resize action; the formula continues to decide node counts, so those pools should be tuned through their formula instead.

## Batch accounts through ZopNight's lens

Discovery arrives via Azure Resource Graph, pool configuration included. Cost Management attributes pool compute spend to the account, and recommendation rules single out pools holding idle dedicated nodes. Schedules then apply the resize during quiet hours.

## Idle pool patterns in Batch

The classics: a fixed-size pool provisioned for a monthly batch window and left allocated the other 29 days; oversized node SKUs chosen for one heavyweight job that no longer runs; and forgotten proof-of-concept pools in subscriptions nobody audits.

## Batch accounts in the portal

Azure portal → Batch accounts → select the account → Pools. Each pool row shows dedicated and low-priority node counts; any nonzero dedicated count outside a job window is money on the table.
