free: use SReclaimable in cached

The previous commit added all of slab into the cache value. The
thing was is cached in this context is something you can get
back and reclaim if under memory pressure.

The problem was slab parameter includes both reclaimable and
unreclaimable values which doesn't make sense in this context.
This commit make cached only use the reclaimable component.

References:
 http://www.freelists.org/post/procps/OmegaPhilxxxxxxxxxxxxx-Bug799716-free-considers-cached-to-include-SUnreclaim
 https://github.com/brndnmtthws/conky/issues/130
 https://bugs.debian.org/799716

Commits:
 6cb75efef8
This commit is contained in:
Craig Small 2015-10-24 14:15:07 +11:00
parent 9fda3da0ad
commit 05d751c4f0
2 changed files with 2 additions and 2 deletions

2
free.1
View File

@ -32,7 +32,7 @@ kernels 2.6.32, displayed as zero if not available)
Memory used by kernel buffers (Buffers in /proc/meminfo) Memory used by kernel buffers (Buffers in /proc/meminfo)
.TP .TP
\fBcache\fR \fBcache\fR
Memory used by the page cache and slabs (Cached and Slab in /proc/meminfo) Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo)
.TP .TP
\fBbuff/cache\fR \fBbuff/cache\fR
Sum of \fBbuffers\fR and \fBcache\fR Sum of \fBbuffers\fR and \fBcache\fR

View File

@ -704,7 +704,7 @@ nextline:
if(kb_inactive==~0UL){ if(kb_inactive==~0UL){
kb_inactive = kb_inact_dirty + kb_inact_clean + kb_inact_laundry; kb_inactive = kb_inact_dirty + kb_inact_clean + kb_inact_laundry;
} }
kb_main_cached = kb_page_cache + kb_slab; kb_main_cached = kb_page_cache + kb_slab_reclaimable;
kb_swap_used = kb_swap_total - kb_swap_free; kb_swap_used = kb_swap_total - kb_swap_free;
/* if kb_main_available is greater than kb_main_total or our calculation of /* if kb_main_available is greater than kb_main_total or our calculation of