linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Minchan Kim <minchan@kernel.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC][PATCH 07/10] zsmalloc: introduce auto-compact support
Date: Thu, 4 Jun 2015 16:28:16 +0900	[thread overview]
Message-ID: <20150604072816.GB662@swordfish> (raw)
In-Reply-To: <20150604062712.GJ2241@blaptop>

On (06/04/15 15:27), Minchan Kim wrote:
[..]
> 
> The problem is migration/freeing old zspage/allocating new zspage is
> not a cheap, either.
> If the system has no problem with small fragmented space, there is
> no point to keep such overheads.
>
> So, ideal is we should trigger compaction once we realized system
> is trouble but I don't have any good idea to detect it.
> That's why i wanted to rely on the decision from user via
> compact_threshold_ratio.

that'll be extremly hard to understand knob.

well, we can do something like
-- don't let the number of "CLASS_ALMOST_EMPTY" to become N times greater
than "CLASS_ALMOST_FULL".

or

-- don't let the number of pages in ZS_ALMOST_EMPTY pages to contribute 70%
of class memory usage. that is 70% of all pages allocated for this class belong
to ZS_ALMOST_EMPTY zspages, thus potentially we can compact it.

> > 
> > > It's simple design of mm/compaction.c to prevent pointless overhead
> > > but historically it made pains several times and required more
> > > complicated logics but it's still painful.
> > > 
> > > Other thing I found recently is that it's not always win zsmalloc
> > > for zram is not fragmented. The fragmented space could be used
> > > for storing upcoming compressed objects although it is wasted space
> > > at the moment but if we don't have any hole(ie, fragment space)
> > > via frequent compaction, zsmalloc should allocate a new zspage
> > > which could be allocated on movable pageblock by fallback of
> > > nonmovable pageblock request on highly memory pressure system
> > > so it accelerates fragment problem of the system memory.
> > 
> > yes, but compaction almost always leave classes fragmented. I think
> > it's a corner case, when the number of unused allocated objects was
> > exactly the same as the number of objects that we migrated and the
> > number of migrated objects was exactly N*maxobj_per_zspage, so we
> > left the class w/o any unused objects (OBJ_ALLOCATED == OBJ_USED).
> > classes have 'holes' after compaction.
> > 
> > 
> > > So, I want to pass the policy to userspace.
> > > If we found it's really trobule on userspace, then, we need more
> > > thinking.
> > 
> > well, it can be under config "aggressive compaction" or "automatic
> > compaction" option.
> > 
> 
> If you really want to do it automatically without any feedback
> form the userspace, we should find better algorithm.

ok. I'll drop auto-compaction part for now and will resend
general/minor zsmalloc tweaks today.

	-ss

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

  parent reply	other threads:[~2015-06-04  7:27 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-29 15:05 [RFC][PATCH 00/10] zsmalloc auto-compaction Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 01/10] zsmalloc: drop unused variable `nr_to_migrate' Sergey Senozhatsky
2015-06-04  2:04   ` Minchan Kim
2015-06-04  2:10     ` Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 02/10] zsmalloc: always keep per-class stats Sergey Senozhatsky
2015-06-04  2:18   ` Minchan Kim
2015-06-04  2:34     ` Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 03/10] zsmalloc: introduce zs_can_compact() function Sergey Senozhatsky
2015-06-04  2:55   ` Minchan Kim
2015-06-04  3:15     ` Sergey Senozhatsky
2015-06-04  3:30       ` Minchan Kim
2015-06-04  3:42         ` Sergey Senozhatsky
2015-06-04  3:50           ` Minchan Kim
2015-06-04  4:19             ` Sergey Senozhatsky
2015-06-04  3:31       ` Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 04/10] zsmalloc: cosmetic compaction code adjustments Sergey Senozhatsky
2015-06-04  3:14   ` Minchan Kim
2015-05-29 15:05 ` [RFC][PATCH 05/10] zsmalloc: add `num_migrated' to zs_pool Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 06/10] zsmalloc: move compaction functions Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 07/10] zsmalloc: introduce auto-compact support Sergey Senozhatsky
2015-06-04  4:57   ` Minchan Kim
2015-06-04  5:30     ` Sergey Senozhatsky
2015-06-04  6:27       ` Minchan Kim
2015-06-04  7:04         ` Minchan Kim
2015-06-04 14:47           ` Sergey Senozhatsky
2015-06-04  7:28         ` Sergey Senozhatsky [this message]
2015-05-29 15:05 ` [RFC][PATCH 08/10] zsmalloc: export zs_pool `num_migrated' Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 09/10] zram: remove `num_migrated' from zram_stats Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 10/10] zsmalloc: lower ZS_ALMOST_FULL waterline Sergey Senozhatsky
2015-06-03  5:09 ` [RFC][PATCH 00/10] zsmalloc auto-compaction Sergey Senozhatsky

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=20150604072816.GB662@swordfish \
    --to=sergey.senozhatsky.work@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=sergey.senozhatsky@gmail.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).