Glossary · U

USE Method

A resource-level performance checklist by Brendan Gregg: check Utilization, Saturation and Errors for every resource.

By Obseria Editorial TeamUpdated

Definition

The USE Method is a performance analysis checklist by Brendan Gregg: for every resource, such as CPU, memory, disk, network interface or connection pool, check Utilization (how busy it is), Saturation (how much work is queued or waiting) and Errors (failure events). It quickly narrows down which resource is the bottleneck.

What is the USE Method?

The USE Method is a methodology for analysing system performance, introduced by Brendan Gregg. Its rule fits in one sentence: for every resource, check utilization, saturation and errors. Instead of starting with whichever metrics a tool happens to show, you first list the resources of a system and then ask the same three questions for each one. That turns a vague "the server is slow" into a structured search that rarely misses the bottleneck.

Where the RED Method looks at services from the outside (requests, errors, duration), the USE Method looks inside, at the hardware and software resources that do the work. The two are complementary.

Utilization, saturation and errors

  • Utilization is the share of time a resource was busy, or the share of its capacity in use. A CPU at 90 % utilization was busy 90 % of the interval; a memory utilization of 80 % means 80 % of capacity is allocated.
  • Saturation is the extra work a resource cannot serve right now and has to queue, such as the run queue length for CPUs, swapping for memory or the wait queue of a disk. Saturation is often the earliest sign of trouble, because latency rises as soon as work starts waiting.
  • Errors are counts of error events: disk I/O errors, dropped network packets, failed allocations, rejected connections.

A resource can be a problem even at moderate average utilization. Short bursts at 100 % hide inside one-minute averages, and saturation appears whenever demand briefly exceeds capacity.

Typical resources and metrics

ResourceUtilizationSaturationErrors
CPUBusy time per coreRun queue length, CPU throttling in containersMachine check errors (rare)
MemoryUsed vs. availableSwapping, page scanning, OOM killsFailed allocations
DiskDevice busy timeI/O wait queue lengthDevice I/O errors
Network interfaceThroughput vs. link speedDropped or queued packetsInterface errors
Connection or thread poolConnections in use vs. maximumCallers waiting for a connectionTimeouts, rejections

The last row shows that USE is not limited to hardware. Software resources such as thread pools, database connections, locks and message queues have the same three properties and are frequent bottlenecks in cloud-native systems.

Gregg also recommends drawing a simple functional diagram of the system, including buses, interconnects and controllers, before starting. Every box and every arrow is a resource that can be checked. Resources that are hard to measure are worth noting explicitly as "unknown", because an unknown is a finding in itself: it shows where additional instrumentation is needed.

Example: USE checks for a Kubernetes node

With Prometheus node exporter and cAdvisor metrics, an illustrative first pass could look like this:

# CPU utilization per node
1 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))

# CPU saturation: load average per core
node_load1 / count by (instance) (node_cpu_seconds_total{mode="idle"})

# Container CPU throttling (saturation signal)
rate(container_cpu_cfs_throttled_periods_total[5m])
/ rate(container_cpu_cfs_periods_total[5m])

# Network errors
rate(node_network_receive_errs_total[5m])

On Linux hosts, the same checks can be done interactively with tools like vmstat, mpstat, iostat and sar. On Linux, the pressure stall information files under /proc/pressure also report how long tasks waited for CPU, memory or I/O, a direct saturation measure.

Best practices

  • Start from a resource list, not from available metrics. Gaps in the list show where you are blind.
  • Look at saturation first when latency rises. Queues explain slowdowns better than utilization alone.
  • Use short intervals for utilization. Bursts disappear in long averages.
  • Combine with RED. Alert on user-facing RED signals and use USE to locate the cause.
  • Feed results into capacity planning, since sustained high utilization and recurring saturation indicate where to scale.

Common mistakes

  • Checking only utilization and declaring a resource healthy because it is "only at 60 %".
  • Forgetting software resources such as connection pools, file descriptors or locks.
  • Ignoring container limits: a pod can be throttled while the node still has idle CPU.
  • Paging on high utilization alone, which often produces noise without user impact.

How Obseria helps

Obseria collects host, container and runtime metrics over OpenTelemetry and Prometheus, so utilization, saturation and error signals for nodes, pods, databases and pools sit next to the service signals that depend on them. Kubernetes monitoring includes throttling and resource limits, and Obseria TopoGraph shows which services run on a saturated resource, which shortens the path from symptom to cause.

Frequently asked questions

USE stands for Utilization, Saturation and Errors. The method asks you to check all three for every resource in a system.

The USE Method was developed and published by Brendan Gregg, known for his work on systems performance, Linux tracing and flame graphs.

Utilization says how busy a resource is. Saturation says how much work is waiting because the resource is busy. A resource can be heavily utilized without saturation, but saturation usually means added latency.

Both. RED describes service health from the caller's perspective and is well suited for alerting. USE examines the resources underneath and is the faster way to find a bottleneck once a RED signal degrades.

Put these concepts into practice

Try Obseria free for 14 days, with OpenTelemetry and no proprietary agents.