ObservabilityII · Production Monitoring FundamentalsMethodologies
USE Methodology: Utilisation, Saturation, Errors
What you'll learn
- Define utilisation, saturation, and errors precisely
- Apply USE to host and infrastructure components
- Recognise the boundary between USE-eligible and RED-eligible systems
- Choose between USE and RED for different classes of system
Prerequisites
Verified against Prometheus 2.55.x · Alertmanager 0.28.x · node_exporter 1.8.x · blackbox_exporter 0.26.x · Grafana 11.x · Loki 3.x · Tempo current · OpenTelemetry Collector 0.110.x · Grafana Alloy current · Docker Engine 28.x · Ubuntu 24.04 LTS · Debian 12 (Bookworm) · RHEL / Rocky / AlmaLinux 9.x · 2026-08-13
USE — Utilisation, Saturation, Errors — is a methodology invented by Brendan Gregg for systems where the bottleneck is a resource: CPU, memory, disk, network. Every resource is described by three questions: how busy is it, how much extra work is queued, and how often has it failed.
USE is the methodology for hosts. RED is the methodology for services. Both are useful; the two are not interchangeable.
What use is for
USE is a checklist. For every resource in the system:
- Utilisation. Fraction of time the resource is busy.
- Saturation. Amount of work queued because the resource is at capacity.
- Errors. Number of error events.
A complete USE pass on a Linux host produces, for each of CPU, memory, disk, network:
| Resource | Utilisation | Saturation | Errors |
|---|---|---|---|
| CPU | node_cpu_seconds_total{mode="idle"} complement | node_load_average | n/a (CPU does not error; it stalls) |
| Memory | node_memory_MemAvailable_bytes vs node_memory_MemTotal_bytes | node_vmstat_pgmajfault | OOM events from dmesg |
| Disk | node_disk_io_now (active I/O) | node_disk_io_seconds queue-depth proxy | node_disk_io_errors |
| Network | node_network_transmit_bytes vs link capacity | node_network_mtu drops, buffer overruns | node_network_receive_errs, node_network_transmit_errs |
USE produces a complete picture of the host’s resource state. The methodology is repeatable: any engineer can run the same checklist on any host and arrive at the same answer.
What use is not
USE is a resource-side methodology. It does not describe the user-visible state of a service. A host with all resources at 50% utilisation can still serve 5xx responses; USE does not surface that.
USE is also not the right fit for every system:
- Stateful in-memory services (Redis, Memcached). The resource is memory; the service is “what fraction of keys return successfully?” RED is more useful.
- Network-facing services (HTTP APIs, RPC handlers). The resource is the worker pool; the service is the request handling. RED is more useful.
- Distributed queues (Kafka, RabbitMQ). The resource is the broker; the service is end-to-end delivery. USE on the broker is useful but does not capture consumer behaviour.
For those classes of system, RED is the better fit.
How USE works on a Linux host
The canonical Linux metric set under node_exporter:
CPU utilisation:
1 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))
CPU saturation (load average over runnable processes):
node_load5 / count without (cpu, mode) (node_cpu_seconds_total{mode="idle"})
Memory utilisation (used / total):
1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)
Memory saturation (major page faults indicate RAM pressure):
rate(node_vmstat_pgmajfault[5m])
Disk utilisation (fraction of time doing I/O):
rate(node_disk_io_seconds_total[5m]) # per device
Disk saturation (queue depth approximation):
rate(node_disk_io_now[5m])
Disk errors:
rate(node_disk_io_errors_total[5m])
Network utilisation (depends on link capacity; often omitted in
favour of throughput):
rate(node_network_receive_bytes_total[5m])
Network saturation (drops):
rate(node_network_receive_drop_total[5m]) + rate(node_network_transmit_drop_total[5m])
Network errors:
rate(node_network_receive_errs_total[5m]) + rate(node_network_transmit_errs_total[5m])
The metrics are scraped by Prometheus. The PromQL composition is mechanical.
Burn-rate for USE
USE alerts are reactive, not SLO-based. The pattern is:
- 70% resource utilisation for >15 min → warn.
- 90% utilisation for >5 min → page.
- Saturation metric doubling in 5 min → warn.
- Errors metric nonzero → page (always — errors are non-recoverable events).
The threshold is determined by the resource type. CPU at 90% for 5 min is recoverable; disk at 90% utilisation is normal on a busy system but may indicate queue growth if sustained. Memory at 90% is dangerous if OOM is permitted.
When to use USE
USE is the right methodology when:
- The component is a host, a database, a storage backend, a network switch.
- The component has clearly bounded resources (CPU, RAM, disk, network).
- The failure mode is resource exhaustion (OOM, disk full, link saturation).
USE is the wrong methodology when:
- The component is an HTTP API or RPC service that scales horizontally.
- The component is a distributed queue whose capacity is dynamic.
- The failure mode is application logic, not resource exhaustion.
The two are complementary. A production platform uses both.
Production guidance
- Run USE on every host and every infrastructure component (databases, caches, message brokers).
- Tie USE alerts to thresholds derived from operational history, not arbitrary numbers.
- Pair every USE alert with a corresponding RED SLO alert for the user-facing service that depends on the resource.
- Review USE thresholds every quarter; the right threshold shifts as the system evolves.
Verification
You should be able to answer:
- What are the three USE dimensions?
- Which class of system is USE most useful for?
- Construct node_exporter-based PromQL for CPU utilisation.
- Why is USE insufficient as a sole methodology?
Quiz
Knowledge check · 8 questions
Q1. What is the primary purpose of use methodology: utilisation, saturation, errors?
Q2. Which failure mode of use methodology: utilisation, saturation, errors is most operationally costly?
Q3. Production verification should run on production hosts.
Q4. First response when use methodology: utilisation, saturation, errors misbehaves?
Q5. Name one signal that confirms use methodology: utilisation, saturation, errors is healthy.
Q6. Which of these are validation steps?
Q7. Right discipline when changing in production?
Q8. Telemetry usefulness requires:
Passing score: 75%. Answers are checked in this browser.