Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1334868

Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count

From Dave Chinner <david@fromorbit.com>
Newsgroups linux.kernel
Subject Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count
Date 2016-02-16 00:10 +0100
Message-ID <r2Arg-7MI-13@gated-at.bofh.it> (permalink)
References <r1sm5-3kI-1@gated-at.bofh.it> <r2cff-8he-7@gated-at.bofh.it> <r2w4j-4N8-35@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Mon, Feb 15, 2016 at 10:19:54AM -0800, Daniel Walker wrote:
> On 02/14/2016 01:18 PM, Dave Chinner wrote:
> >On Fri, Feb 12, 2016 at 12:14:39PM -0800, Daniel Walker wrote:
> >>From: Khalid Mughal <khalidm@cisco.com>
> >>
> >>Currently there is no way to figure out the droppable pagecache size
> >>from the meminfo output. The MemFree size can shrink during normal
> >>system operation, when some of the memory pages get cached and is
> >>reflected in "Cached" field. Similarly for file operations some of
> >>the buffer memory gets cached and it is reflected in "Buffers" field.
> >>The kernel automatically reclaims all this cached & buffered memory,
> >>when it is needed elsewhere on the system. The only way to manually
> >>reclaim this memory is by writing 1 to /proc/sys/vm/drop_caches. But
> >>this can have performance impact. Since it discards cached objects,
> >>it may cause high CPU & I/O utilization to recreate the dropped
> >>objects during heavy system load.
> >>This patch computes the droppable pagecache count, using same
> >>algorithm as "vm/drop_caches". It is non-destructive and does not
> >>drop any pages. Therefore it does not have any impact on system
> >>performance. The computation does not include the size of
> >>reclaimable slab.
> >Why, exactly, do you need this? You've described what the patch
> >does (i.e. redundant, because we can read the code), and described
> >that the kernel already accounts this reclaimable memory elsewhere
> >and you can already read that and infer the amount of reclaimable
> >memory from it. So why isn't that accounting sufficient?
> 
> We need it to determine accurately what the free memory in the
> system is. If you know where we can get this information already
> please tell, we aren't aware of it. For instance /proc/meminfo isn't
> accurate enough.

What you are proposing isn't accurate, either, because it will be
stale by the time the inode cache traversal is completed and the
count returned to userspace. e.g. pages that have already been
accounted as droppable can be reclaimed or marked dirty and hence
"unreclaimable".

IOWs, the best you are going to get is an approximate point-in-time
indication of how much memory is available for immediate reclaim.
We're never going to get an accurate measure in userspace unless we
accurately account for it in the kernel itself. Which, I think it
has already been pointed out, is prohibitively expensive so isn't
done.

As for a replacement, looking at what pages you consider "droppable"
is really only file pages that are not under dirty or under
writeback. i.e. from /proc/meminfo:

Active(file):     220128 kB
Inactive(file):    60232 kB
Dirty:                 0 kB
Writeback:             0 kB

i.e. reclaimable file cache = Active + inactive - dirty - writeback.

And while you are there, when you drop slab caches:

SReclaimable:      66632 kB

some amount of that may be freed. No guarantees can be made about
the amount, though.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] kernel: fs: drop_caches: add dds drop_caches_count Daniel Walker <danielwa@cisco.com> - 2016-02-12 21:20 +0100
  Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Dave Chinner <david@fromorbit.com> - 2016-02-14 22:20 +0100
    Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Daniel Walker <danielwa@cisco.com> - 2016-02-15 19:30 +0100
      Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Dave Chinner <david@fromorbit.com> - 2016-02-16 00:10 +0100
        Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Daniel Walker <danielwa@cisco.com> - 2016-02-16 01:00 +0100
          Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Theodore Ts'o <tytso@mit.edu> - 2016-02-16 01:50 +0100
            Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count "Nag Avadhanam (nag)" <nag@cisco.com> - 2016-02-16 04:10 +0100
              Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Dave Chinner <david@fromorbit.com> - 2016-02-16 06:40 +0100
                Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Nag Avadhanam <nag@cisco.com> - 2016-02-16 08:20 +0100
                Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Dave Chinner <david@fromorbit.com> - 2016-02-16 09:40 +0100
              Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Vladimir Davydov <vdavydov@virtuozzo.com> - 2016-02-16 09:50 +0100
                Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Nag Avadhanam <nag@cisco.com> - 2016-02-16 19:40 +0100
          Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Dave Chinner <david@fromorbit.com> - 2016-02-16 06:30 +0100
            Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Nag Avadhanam <nag@cisco.com> - 2016-02-16 07:10 +0100
              Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Dave Chinner <david@fromorbit.com> - 2016-02-16 09:30 +0100
            Re: [PATCH] kernel: fs: drop_caches: add dds drop_caches_count Rik van Riel <riel@redhat.com> - 2016-02-16 17:20 +0100

csiph-web