Incorrect freemem report in docker containers
durigon opened this issue · 0 comments
durigon commented
When using the Erlang agent to monitor OS, I found that the free memory collection in the docker container was incorrect.
We use 'MemAvailable' to get a free memory in the linux system when using the erlang agent.
MemAvailable %lu (since Linux 3.14)
An estimate of how much memory is available for starting new applications, without swapping.
In a container, MemAvailable should be the sum of MemFree, Cached and Buffers, but it is the same as MemFree.
After all, we can be mistaken for a memory leak because it does not include Cached/Buffers memory.
docker-container# egrep "MemFree|MemAvail|^Cached|Buffers" /proc/meminfo
MemFree: 93009720 kB
MemAvailable: 93009720 kB
Buffers: 0 kB
Cached: 7712588 kB
docker-container# uname -r
4.19.55
In a Host machine, MemAvailable is MemFree + Buffers + Cached.
host-machine# egrep "MemFree|MemAvail|^Cached|Buffers" /proc/meminfo
MemFree: 339513028 kB
MemAvailable: 381096504 kB
Buffers: 15072 kB
Cached: 37029112 kB
host-machine# uname -r
4.19.55