The Proxmox VM summary memory usage is higher than guest because it’s not reading the guest’s own number. It’s showing the host-side RSS of the KVM process, which includes overhead the guest can’t see. That gap is normal, but it’s worth knowing what’s actually in it.

Where the summary number comes from
Open the VM’s Summary tab in the Proxmox web UI and you’ll see a Memory usage graph. That number is pulled from the QEMU process running on the host, not from inside the guest. Specifically, it’s the resident set size (RSS) of the kvm process for that VM. You can see the same value on the host with ps:
ps -o rss= -p $(cat /var/run/qemu-server/100.pid)
That gives you kilobytes. The web UI just converts it to a human-readable number. RSS counts all pages of memory that process currently has mapped, including the guest’s RAM, QEMU’s own overhead, and any shared pages that happen to be counted against it.
Why the guest reports less
Inside the VM, free -h or Task Manager shows what the guest kernel thinks is used. That’s a completely different accounting. The guest doesn’t know about QEMU’s overhead, and it may be using memory for page cache that the host can reclaim under pressure. So the host RSS is often higher, sometimes by a few hundred MB, sometimes more.
Ballooning can make the gap even weirder. If the balloon driver is active, the guest may report less memory than it’s actually been given, because the balloon has inflated and the guest thinks that memory is gone. But the host still sees the full allocation in RSS. So the summary number can be higher than the guest’s free output even when nothing is wrong.

What actually moves the number
If you want the summary memory usage to drop, you have to reduce what the host process holds. That means either giving the VM less RAM in its config, or using ballooning to reclaim memory back to the host. Enabling KSM (Kernel Same-page Merging) can also reduce the host’s overall memory pressure, but it won’t change the RSS number shown for a single VM by much.
Don’t bother trying to “free” memory inside the guest to make the Proxmox number go down. The guest’s page cache is reclaimable, but the host still counts those pages as part of the process RSS until the guest actually returns them. If you want to see the balloon’s effect, check balloon in the VM’s monitor or use the guest agent if it’s installed.
So is the gap a problem?
Usually not. If the host has plenty of free memory, the gap between Proxmox VM summary memory usage and guest-reported usage is just accounting. It’s only a problem if the host is swapping or OOM-killing things. In that case, look at the host’s free -h and the per-VM RSS to see which VM is actually hogging memory. The guest’s own number is less useful for that.
If you’re trying to reclaim memory on the host, ballooning is the knob that actually moves the summary number down. Everything else is just noise.