# Virtual Warehouse

> Snowflake virtual warehouses bill credits for every second they run, and each size step doubles the rate: XS burns 1 credit per hour, Small 2, Medium 4, Large 8. Auto-suspend and auto-resume settings decide most of the bill, which is why ZopNight suspends idle warehouses on schedule outside working hours.

Source: https://zop.dev/integrations/snowflake/warehouse
Updated: 2026-08-19

---

A virtual warehouse is the only compute meter Snowflake has: a resizable cluster that executes queries, bills credits for every second it runs, and bills nothing the moment it suspends. Almost everything else on the invoice is storage or serverless overhead. The warehouse line is where Snowflake bills are won or lost.

## Credits double at every size step

Warehouse sizes form a geometric ladder. An X-Small consumes 1 credit per hour of runtime, a Small 2, a Medium 4, a Large 8, an X-Large 16, doubling at each further step. The dollar value of a credit varies by edition and region, but the ratios never do: resizing one step up always doubles the burn rate, and a warehouse two sizes larger than its queries need wastes three quarters of every second it runs. Multi-cluster warehouses compound this: each additional running cluster meters at the full per-size rate.

## Auto-suspend and auto-resume decide the bill

A warehouse with a long auto-suspend window keeps billing through every idle gap between queries; one that someone leaves resumed overnight bills for nothing at all. Together the two settings determine how closely billed seconds track actual work. Discovery records both from `SHOW WAREHOUSES`, alongside size, state, min and max cluster counts, scaling policy, statement timeout, owner, and any attached resource monitor. Those are the exact fields the RC-2100 rule series evaluates for auto-suspend, resize, cluster-count, and statement-timeout guardrails.

## How scheduled suspension works

On schedule, ZopNight issues `ALTER WAREHOUSE ... SUSPEND`, but only after checking `WAREHOUSE_LOAD_HISTORY` for queries in flight during the previous 5 minutes. A busy warehouse is soft-skipped rather than yanked out from under running work. Wake-up uses `RESUME IF SUSPENDED`, so a warehouse a human already resumed is left untouched. Warehouses whose names begin with `SYSTEM$` are Snowflake-managed and never scheduled.

## Reading the meter yourself

```sql
SELECT warehouse_name, SUM(credits_used) AS credits_7d
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time > DATEADD('day', -7, CURRENT_TIMESTAMP())
GROUP BY warehouse_name
ORDER BY credits_7d DESC;
```

`ACCOUNT_USAGE` views trail live activity by roughly 45 minutes to 3 hours, so treat the most recent rows as provisional. A warehouse burning credits at 3 a.m. on this report is the case for a schedule.
