Thread (21 messages) 21 messages, 5 authors, 2016-02-12

Re: computing drop-able caches

From: Khalid Mughal (khalidm) <hidden>
Date: 2016-02-12 18:01:53
Also in: linux-fsdevel, lkml

I did an experiment on our system. I added a small kernel patch, as
mentioned by Daniel in first email of this thread, to compute the
droppable pagecache without actually dropping it. Using this value I
computed the Available memory by adding droppable-page count to memFree
count. Then used a test application to analyze the difference between
memAvailable, and dropcacheinfo output.
The application creates 32 threads. Each allocates 64MB block using
malloc(). There is 5 second interval between each allocation, which allows
me to gather data. After all allocation is done, the threads then write
data to these blocks, using memset. This is also done incrementally,
allowing me track meminfo and dropcacheinfo.
If you look at the attached pdf, you will notice that OOM messages start
to appear when memAvailable is showing 253MB (259228 KB) Free, memFree is
13.5MB (14008 KB) Free, and dropcache based calculation ³Available memory²
is showing 21MB (21720 KB) Free.

So, it appears that memAvailable is not as accurate, especially if data is
used to warn user about system running low on memory.

-KM



On 2/11/16, 2:11 PM, "Rik van Riel" [off-list ref] wrote:
On Wed, 2016-02-10 at 11:11 -0800, Daniel Walker wrote:
quoted
On 02/10/2016 10:13 AM, Dave Hansen wrote:
quoted
On 02/10/2016 10:04 AM, Daniel Walker wrote:
quoted
quoted
[Linux_0:/]$ echo 3 > /proc/sys/vm/drop_caches
[Linux_0:/]$ cat /proc/meminfo
MemTotal:        3977836 kB
MemFree:         1095012 kB
MemAvailable:    1434148 kB
I suspect MemAvailable takes into account more than just the
droppable
caches. For instance, reclaimable slab is included, but I don't
think
drop_caches drops that part.
There's a bit for page cache and a bit for slab, see:

	https://kernel.org/doc/Documentation/sysctl/vm.txt
Ok, then this looks like a defect then. I would think MemAvailable
would 
always be smaller then MemFree (after echo 3 >
/proc/sys/vm/drop_caches).. Unless there is something else be
accounted 
for that we aren't aware of.
echo 3 > /proc/sys/vm/drop_caches will only
drop unmapped page cache, IIRC

The system may still have a number of page
cache pages left that are mapped in processes,
but will be reclaimable if the VM needs the
memory for something else.

-- 
All rights reversed
  

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help