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.
[How to improve]
Use the sum of MemFree, Cached, and Buffers as real available memory instead of MemAvailable
to improve the absence of MemAvailable field in old linux kernel version(prior to 3.14)
or to improve the incorrect MemAvailable in docker containers.
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.
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.
In a Host machine, MemAvailable is MemFree + Buffers + Cached.
[How to improve] Use the sum of MemFree, Cached, and Buffers as real available memory instead of MemAvailable to improve the absence of MemAvailable field in old linux kernel version(prior to 3.14) or to improve the incorrect MemAvailable in docker containers.
This PR solves issue #376