From: Minchan Kim <minchan@kernel.org>
To: Josef Bacik <josef@toxicpanda.com>
Cc: hannes@cmpxchg.org, riel@redhat.com, akpm@linux-foundation.org,
linux-mm@kvack.org, kernel-team@fb.com,
Josef Bacik <jbacik@fb.com>
Subject: Re: [PATCH 1/2] mm: use slab size in the slab shrinking ratio calculation
Date: Wed, 14 Jun 2017 15:40:45 +0900 [thread overview]
Message-ID: <20170614064045.GA19843@bbox> (raw)
In-Reply-To: <20170613120156.GA16003@destiny>
On Tue, Jun 13, 2017 at 08:01:57AM -0400, Josef Bacik wrote:
> On Tue, Jun 13, 2017 at 02:28:02PM +0900, Minchan Kim wrote:
> > Hello,
> >
> > On Thu, Jun 08, 2017 at 03:19:05PM -0400, josef@toxicpanda.com wrote:
> > > From: Josef Bacik <jbacik@fb.com>
> > >
> > > When testing a slab heavy workload I noticed that we often would barely
> > > reclaim anything at all from slab when kswapd started doing reclaim.
> > > This is because we use the ratio of nr_scanned / nr_lru to determine how
> > > much of slab we should reclaim. But in a slab only/mostly workload we
> > > will not have much page cache to reclaim, and thus our ratio will be
> > > really low and not at all related to where the memory on the system is.
> >
> > I want to understand this clearly.
> > Why nr_scanned / nr_lru is low if system doesnt' have much page cache?
> > Could you elaborate it a bit?
> >
>
> Yeah so for example on my freshly booted test box I have this
>
> Active: 58840 kB
> Inactive: 46860 kB
>
> Every time we do a get_scan_count() we do this
>
> scan = size >> sc->priority
>
> where sc->priority starts at DEF_PRIORITY, which is 12. The first loop through
> reclaim would result in a scan target of 2 pages to 11715 total inactive pages,
> and 3 pages to 14710 total active pages. This is a really really small target
> for a system that is entirely slab pages. And this is super optimistic, this
> assumes we even get to scan these pages. We don't increment sc->nr_scanned
> unless we 1) isolate the page, which assumes it's not in use, and 2) can lock
> the page. Under pressure these numbers could probably go down, I'm sure there's
> some random pages from daemons that aren't actually in use, so the targets get
> even smaller.
>
> We have to get sc->priority down a lot before we start to get to the 1:1 ratio
> that would even start to be useful for reclaim in this scenario. Add to this
> that most shrinkable slabs have this idea that their objects have to loop
> through the LRU twice (no longer icache/dcache as Al took my patch to fix that
> thankfully) and you end up spending a lot of time looping and reclaiming
> nothing. Basing it on actual slab usage makes more sense logically and avoids
> this kind of problem. Thanks,
Thanks. I got understood now.
As I see your change, it seems to be rather aggressive to me.
node_slab = lruvec_page_state(lruvec, NR_SLAB_RECLAIMABLE);
shrink_slab(,,, node_slab >> sc->priority, node_slab);
The point is when we finish reclaiming from direct/background(ie, kswapd),
it makes sure that VM scanned slab object up to twice of the size which
is consistent with LRU pages.
What do you think about this?
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-06-14 6:40 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-08 19:19 [PATCH 1/2] mm: use slab size in the slab shrinking ratio calculation josef
2017-06-08 19:19 ` [PATCH 2/2] mm: make kswapd try harder to keep active pages in cache josef
2017-06-13 5:28 ` [PATCH 1/2] mm: use slab size in the slab shrinking ratio calculation Minchan Kim
2017-06-13 12:01 ` Josef Bacik
2017-06-14 6:40 ` Minchan Kim [this message]
2017-06-19 15:11 ` Josef Bacik
2017-06-20 2:46 ` Minchan Kim
2017-06-27 13:59 ` Josef Bacik
2017-06-30 2:17 ` Minchan Kim
2017-06-30 15:03 ` Josef Bacik
2017-07-02 1:58 ` Dave Chinner
2017-07-03 13:52 ` Josef Bacik
2017-07-03 1:33 ` Minchan Kim
2017-07-03 13:50 ` Josef Bacik
2017-07-04 3:01 ` Minchan Kim
2017-07-04 13:21 ` Josef Bacik
2017-07-04 22:57 ` Dave Chinner
2017-07-05 4:59 ` Minchan Kim
2017-07-05 23:58 ` Dave Chinner
2017-07-06 3:56 ` Minchan Kim
2017-07-05 13:33 ` Josef Bacik
2017-07-05 23:30 ` Dave Chinner
2017-07-05 4:43 ` Minchan Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170614064045.GA19843@bbox \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=jbacik@fb.com \
--cc=josef@toxicpanda.com \
--cc=kernel-team@fb.com \
--cc=linux-mm@kvack.org \
--cc=riel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.