tsung icon indicating copy to clipboard operation
tsung copied to clipboard

Incorrect freemem report in docker containers

Open durigon opened this issue 5 years ago • 0 comments
trafficstars

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

durigon avatar Jul 22 '20 03:07 durigon