Skip to content

Commit

Permalink
proc: fix MemAvailable in /proc/meminfo to exclude tmpfs files
Browse files Browse the repository at this point in the history
The "total_cache" from memory.stat of cgroup includes
the memory used by tmpfs files ("total_shmem"). Considering
it as available memory is wrong because files created
on a tmpfs file system cannot be simply reclaimed.

So the available memory is calculated with the sum of:
 * Memory the kernel knows is free
 * Memory that contained in the kernel active file LRU,
   that can be reclaimed if necessary
 * Memory that is contained in the kernel non-active file
   LRU, that can be reclaimed if necessary

Signed-off-by: Kyeong Yoo <[email protected]>
  • Loading branch information
kyeongy committed Oct 3, 2023
1 parent 87a2fe9 commit 5340b27
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/proc_fuse.c
Original file line number Diff line number Diff line change
Expand Up @@ -1351,7 +1351,7 @@ static int proc_meminfo_read(char *buf, size_t size, off_t offset,
snprintf(lbuf, 100, "MemFree: %8" PRIu64 " kB\n", memlimit - memusage);
printme = lbuf;
} else if (startswith(line, "MemAvailable:")) {
snprintf(lbuf, 100, "MemAvailable: %8" PRIu64 " kB\n", memlimit - memusage + mstat.total_cache / 1024);
snprintf(lbuf, 100, "MemAvailable: %8" PRIu64 " kB\n", memlimit - memusage + (mstat.total_active_file + mstat.total_inactive_file) / 1024);
printme = lbuf;
} else if (startswith(line, "SwapTotal:")) {
if (wants_swap) {
Expand Down

0 comments on commit 5340b27

Please sign in to comment.