Skip to main content
rightsizing · snowflake

Warehouses pinning a second cluster their concurrency never demanded

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

MIN_CLUSTER_COUNT of 2 or more multiplies a warehouse's credit rate whenever it runs (a Large goes from 8 to 16 credits per hour), yet a 14-day peak- cluster measurement below 1.5 shows the pinned extra cluster never served real concurrency. Dropping the floor to 1 restores demand-driven scale-out.

Signal and threshold

How ZopNight evaluates Warehouses pinning a second cluster their concurrency never demanded.
Field Value
Rule IDssnowflake_wh_multicluster_min_too_high
Categoryrightsizing
Severitymedium
Metricnone — pure configuration read
Sourcesignals/rightsize/snowflake-wh-multicluster-min.yaml

The floor multiplies the meter

Multi-cluster warehouses bill per running cluster: a Large at 8 credits per hour becomes 16 with two clusters up, 24 with three. MAX_CLUSTER_COUNT is harmless capacity: extra clusters resume only when queries queue. MIN_CLUSTER_COUNT is the opposite: every cluster in the floor runs whenever the warehouse runs, demand or not. Pinning the minimum at 2 doubles the cost of every active hour, bought as insurance against queueing that, for the warehouses this rule flags, never actually materialized.

What a peak below 1.5 establishes

The rule applies to warehouses whose min_cluster_count attribute is not 1, then checks the measured cluster series: the maximum of snowflake.warehouse.cluster_count_avg over 14 days must be under 1.5 to fire. The series records, per day, the highest cluster number that started, so a window maximum below 1.5 means cluster 2 was never observed starting in two full weeks. The paid-for second cluster did no distinguishable work.

Check which clusters actually started

Terminal window
SELECT warehouse_name,
DATE_TRUNC('day', timestamp) AS day_bucket,
MAX(cluster_number) AS highest_cluster_started
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_EVENTS_HISTORY
WHERE timestamp >= DATEADD('day', -14, CURRENT_TIMESTAMP())
AND event_name = 'RESUME_CLUSTER'
GROUP BY 1, 2
ORDER BY 1, 2;

A flat column of 1s for a warehouse configured with a minimum of 2 is this finding in raw form.

Let queueing make the decision

Terminal window
ALTER WAREHOUSE bi_wh SET MIN_CLUSTER_COUNT = 1;

Nothing about capacity changes. The maximum stays where it was, and the auto-scaler adds cluster 2 within seconds of real queueing. What changes is who decides: with the floor at 1, concurrency demand triggers the second meter; with the floor at 2, a config line from months ago does. Warehouses with hard latency SLAs during known concurrency peaks are the legitimate exception, and they should be able to show cluster 2 starting in the event history.

Data the verdict depends on

No RESUME_CLUSTER events in the window means no datapoint and no finding. The rule does not treat a quiet fortnight as proof. The events view lags a few hours, which the 14-day horizon renders irrelevant. One boundary case worth knowing: a floor of 2 with a measured peak of exactly 2 does not fire either, since the window maximum sits above the 1.5 threshold. The rule only ever flags floors the workload demonstrably never used, never floors that were merely questionable.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·