linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Seth Jennings <sjenning@linux.vnet.ibm.com>
To: Bob Liu <lliubbo@gmail.com>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org, ngupta@vflare.org,
	minchan@kernel.org, konrad.wilk@oracle.com,
	dan.magenheimer@oracle.com, rcj@linux.vnet.ibm.com,
	mgorman@suse.de, riel@redhat.com, dave@sr71.net,
	hughd@google.com, Bob Liu <bob.liu@oracle.com>
Subject: Re: [RFC PATCH] zswap: add zswap shrinker
Date: Tue, 21 May 2013 13:57:20 -0500	[thread overview]
Message-ID: <20130521185720.GA3398@medulla> (raw)
In-Reply-To: <1369117567-26704-1-git-send-email-bob.liu@oracle.com>

On Tue, May 21, 2013 at 02:26:07PM +0800, Bob Liu wrote:
> In my understanding, currenlty zswap have a few problems.
> 1. The zswap pool size is 20% of total memory that's too random and once it
> gets full the performance may even worse because everytime pageout() an anon
> page two disk-io write ops may happend instead of one.

Just to clarify, 20% is a default maximum amount that zswap can occupy.

Also, in the steady over-the-limit state, the average number of writebacks is
equal to the number of pages coming into zswap.  The description above makes it
sound like there is a reclaim amplification effect (two writebacks per zswap
store) when, on average, there is none. The 2:1 effect only happens on one or
two store operations right after the pool becomes full.

This is unclear though, mostly because the pool limit is enforced in
zswap.  A situation exists where there might be an unbuddied zbud page with
room for the upcoming allocation but, because we are over the pool limit,
reclaim is done during that store anyway. I'm working on a clean way to fix
that up, probably by moving the limit enforcement into zbud as suggested by
Mel.

> 2. The reclaim hook will only be triggered in frontswap_store().
> It may be result that the zswap pool size can't be adjusted in time which may
> caused 20% memory lose for other users.
> 
> This patch introduce a zswap shrinker, it make the balance that the zswap
> pool size will be the same as anon pages in use.

Using zbud, with 2 zpages per zbud page, that would mean that up to 2/3 of anon
pages could be compressed while 1/3 remain uncompressed.

How did you conclude that this is the right balance?

If nr_reclaim in the shrinker became very large due to global_anon_pages_inuse
suddenly dropping, we could be writing back a LOT of pages all at once.

Having already looked at the patch, I can say that this isn't going to be the
way to do this.  I agree that there should be some sort of dynamic sizing, but
IMHO using a shrinker isn't the way.  Dave Chinner would not be happy about
this since it is based on the zcache shrinker logic and he didn't have many
kind words to say about it: https://lkml.org/lkml/2012/11/27/552

Seth

--
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>

  reply	other threads:[~2013-05-21 18:57 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-21  6:26 [RFC PATCH] zswap: add zswap shrinker Bob Liu
2013-05-21 18:57 ` Seth Jennings [this message]
2013-05-22  4:03   ` Bob Liu
2013-05-22  6:05     ` Bob Liu
2013-05-22 14:08     ` Seth Jennings
2013-05-23  1:56       ` Bob Liu

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=20130521185720.GA3398@medulla \
    --to=sjenning@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=bob.liu@oracle.com \
    --cc=dan.magenheimer@oracle.com \
    --cc=dave@sr71.net \
    --cc=hughd@google.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-mm@kvack.org \
    --cc=lliubbo@gmail.com \
    --cc=mgorman@suse.de \
    --cc=minchan@kernel.org \
    --cc=ngupta@vflare.org \
    --cc=rcj@linux.vnet.ibm.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).