1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-11-17 18:45:10 +00:00

Update linux.cc

This commit is contained in:
nihilix-melix 2020-11-07 14:16:49 +01:00 committed by Brenden Matthews
parent 8ce3855b50
commit c2c9e07afc

View File

@ -248,7 +248,23 @@ int update_meminfo(void) {
curmem -= curbufmem; curmem -= curbufmem;
cureasyfree += curbufmem; cureasyfree += curbufmem;
#else #else
curmem = info.memmax - memavail; # curmem = info.memmax - memavail;
/* The memory available field is describe in /proc man page as :
* "An estimate of how much memory is available for starting new applications, without swapping."
* We can see in page_alloc.c in the linux kernel that :
* "Not all the page cache can be freed, otherwise the system will start swapping.
* Assume at least half of the page cache, or the low watermark worth of cache, needs to stay."
* There is a difference between the system starts swapping and OOM happens even if there is no swap
* on the system.
* People think they will find the same amount of used RAM with the free program.
* From man free, we can see :
* used Used memory (calculated as total - free - buffers - cache)
* free Unused memory (MemFree and SwapFree in /proc/meminfo)
* buffers Memory used by kernel buffers (Buffers in /proc/meminfo)
* cache Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo)
* So, curmem should be calculate as follow to find the same amount of memory in conky and free.
*/
curmem = info.memmax - (info.memfree + info.buffers + info.cached + sreclaimable);
cureasyfree += curbufmem; cureasyfree += curbufmem;
#endif #endif
} }