Why does Linux show high memory usage even when the server is healthy?
Linux uses memory for caches as well as applications. A low free value is not, by itself, a memory problem; available estimates how much can support new work without swapping. Assess memory pressure through trends, swap activity, application latency and out-of-memory evidence rather than aiming for an empty cache.
Before you start
- An authorised SSH session on the Linux server.
Instructions
1. Inspect the memory summary
Read total, available, buff/cache and swap together. Tool versions can calculate the used column differently, so prefer the documented meanings of the installed version.
free -hThe human-readable summary is a snapshot. Cache is often useful and should not be cleared as a routine performance remedy.
2. Look for sustained pressure
If the kernel exposes pressure-stall information, inspect memory stalls alongside repeated application measurements. This helps identify time lost waiting for resources rather than merely allocated bytes.
cat /proc/pressure/memoryavg10, avg60 and avg300 describe recent stall ratios. A missing file may mean PSI is unavailable or restricted in this environment.
Check the result
- Available memory and stall behaviour remain appropriate under representative load, with no unexpected OOM events or sustained swapping.
Troubleshooting
- Available memory falls steadily
- Compare process growth, workload concurrency, cache needs and configured limits over time.
- The host has free RAM but a service is killed
- The service or container may have a lower cgroup limit than the host total. Inspect the effective limit before adding memory blindly.
Official references
Use the documentation for your installed version when a flag, service name or platform feature differs.
