HashiCorp Nomad Memory Calculator
Nomad places tasks according to their memory reservation. With memory oversubscription enabled,
memory_max lets a task grow past that reservation, up to a hard limit, whenever its client has
memory to spare — the same idea as Kubernetes requests and limits. This calculator sizes both from real usage.
01 Usage data
Which query should I paste?
With telemetry's publish_allocation_metrics and prometheus_metrics on, use a range query over a representative period (a week is a good default) for one task:
nomad_client_allocs_memory_usage{job="web", task="api"}
Paste the Prometheus UI table output, the HTTP API JSON, or a Grafana CSV export.
Enter observed usage directly, in MiB (Nomad's "MB").
02 Workload profile
Advanced: margins and defaults
Values the result relies on that are our own defaults, or vendor defaults your setup may change. Each “?” says how one moves the result; the guide says where it comes from.
03 Sizing gauge
04 Nomad job (task resources)
—
05 How this was derived
How every number is calculated, with sources and assumptions (opens in a new tab) ↗
Result looks wrong? Report it
memory, memory_max and oversubscription in short
memory is the memory the task requires, in MB. Without memory_max it is also the hard limit; with it set, memory becomes the reservation and memory_max the hard limit. Nomad's own advice is the typical usage for memory and memory_max to absorb unexpected load spikes. Nomad docs
So the calculator sizes memory from the average and memory_max from the peak, with margins that are MemoryLimit's own defaults, not vendor figures; you can change them under Advanced.
memory_max only works when memory oversubscription is enabled in the scheduler configuration. It is off by default and enabled once per cluster. Without it, memory is the hard limit, so a task sized from the average would be killed at that value; the note under the result says to set memory to the memory_max value in that case. Nomad docs
Common input mistakes
- Filtering by job only: filter by both job and task, or another job's task of the same name is mixed in.
- Pasting from a cluster whose telemetry has
publish_allocation_metricsoff: Nomad publishes allocation metrics only when it is on. - A window that misses the busiest times:
memory_maxcomes out too low.
Full derivation, warnings and every assumption: how the Nomad calculator works. The shared formula and margin tables: the sizing model.
Related calculators: