Memory shows ninety percent: is it full, or does it only look full

Free memory is wasted memory, so a high percentage on its own is not a sign of trouble. The right question is not how full it is but who is holding it.

AtlasPVE ·

This entry answers

  • proxmox ram full
  • proxmox high memory usage
  • proxmox zfs ram usage
  • what is proxmox ballooning
  • how much ram does proxmox need

You look at the panel and memory is at ninety percent. The instinct is to add RAM immediately. Most of the time there is no need.

Free memory is wasted memory. The operating system treats unused memory as cache and gives it back when it is needed. So a high percentage on its own is not a sign of a fault.

On Proxmox there are two further sources that muddy this picture.

First source: the storage cache

If you use ZFS, it keeps the data it reads in memory for fast access, and that share can be large. It releases it under pressure. But until then it shows as "in use".

This is not a leak, it is the design itself. On a system that keeps reading the same data, this cache is the cheapest speed-up there is, and it lowers disk wear too.

The subtle part is this: when it releases, it may not release instantly. So a sudden demand for memory can meet a short delay. That is why on very tight setups it makes sense to put a ceiling on the cache; but do it by measuring, not out of "memory is filling up" panic.

Second source: the memory guests hold

If you gave a virtual machine eight gigabytes, that machine can appear to be holding eight gigabytes from the server's side even while it sits idle inside. The reason is simple: memory that has been touched once stays allocated unless the guest knows how to give it back.

Giving it back only works if the guest cooperates. If the component that makes that possible is not present inside the guest, the memory you handed over went one way. If you expect the memory you promised to come back, first make sure that component is installed.

The right question: not how full, but who is holding it

The percentage says nothing on its own. The meaningful split is this: how much of that fullness is your guests, and how much is the server itself?

If it is the guests, the situation is normal; they are using the memory you gave them. If it is the server side and it keeps growing, then there is something to look at.

The real warning sign is not the percentage, it is swap

If the server has started using the swap area, that is a genuine signal. Ninety percent full may not be a problem, but a server that swaps constantly is slow and wears out its disk too.

The test: do not panic at the percentage, act on swap activity.

Promising too much

You can promise your virtual machines more memory in total than the server actually has. It works most of the time, because they do not all peak at once.

But there is one rule and it has no exceptions: do not include the server's own share in what you promise. When the server runs out of memory, not one machine but everything goes at once, panel included. Sharing among guests can be flexible; the server's own breathing room cannot.

What Atlas does

Atlas does not show the memory chart as a single percentage, it splits it in three: what the server itself uses, what the guests use, and swap.

And it makes that split by calculation rather than guesswork: the sum of the guests is subtracted from total used memory, and what remains counts as the server's share. So you answer the real question above at a glance: is this fullness my machines, or the server itself?

A small but meaningful detail: for the chart's ceiling, the last known value of total memory is used, not the one at the start of the series. The reason: over long views total memory can change, and using the old value as the ceiling shows the chart as something other than it is. So on the day you add RAM to the machine, the chart does not keep drawing the old ceiling and mislead you.

Sources

Proxmox's own documentation. In English, and it has the final word on this subject.

Related entries

How does this look inside Atlas?

Go to the product page