Skip to content

Commit

Permalink
Merge pull request #54 from calimeroteknik/realfree
Browse files Browse the repository at this point in the history
Fix size of the reported "buffers/cache" memory.
  • Loading branch information
brndnmtthws committed Jul 24, 2014
2 parents eef323e + 3e85698 commit 689b404
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion src/linux.cc
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ int update_meminfo(void)
/* unsigned int a; */
char buf[256];

unsigned long long shmem = 0, sreclaimable = 0;

info.mem = info.memwithbuffers = info.memmax = info.memdirty = info.swap = info.swapfree = info.swapmax =
info.bufmem = info.buffers = info.cached = info.memfree = info.memeasyfree = 0;

Expand All @@ -197,14 +199,27 @@ int update_meminfo(void)
sscanf(buf, "%*s %llu", &info.cached);
} else if (strncmp(buf, "Dirty:", 6) == 0) {
sscanf(buf, "%*s %llu", &info.memdirty);
} else if (strncmp(buf, "Shmem:", 6) == 0) {
sscanf(buf, "%*s %llu", &shmem);
} else if (strncmp(buf, "SReclaimable:", 13) == 0) {
sscanf(buf, "%*s %llu", &sreclaimable);
}
}

info.mem = info.memwithbuffers = info.memmax - info.memfree;
info.memeasyfree = info.memfree;
info.swap = info.swapmax - info.swapfree;

info.bufmem = info.cached + info.buffers;
/* Reclaimable memory: does not include shared memory, which is part of cached but unreclaimable.
Includes the reclaimable part of the Slab cache though.
Note: when shared memory is swapped out, shmem decreases and swapfree decreases - we want this.
*/
info.bufmem = (info.cached - shmem) + info.buffers + sreclaimable;

/* Now (info.mem - info.bufmem) is the *really used* (aka unreclaimable) memory.
When this value reaches the size of the physical RAM, and swap is full or non-present, OOM happens.
Therefore this is the value users want to monitor, regarding their RAM.
*/

fclose(meminfo_fp);
return 0;
Expand Down

0 comments on commit 689b404

Please sign in to comment.