From: Minchan Kim <minchan@kernel.org>
To: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: 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 03/10] zsmalloc: introduce zs_can_compact() function
Date: Thu, 4 Jun 2015 12:30:14 +0900 [thread overview]
Message-ID: <20150604033014.GG2241@blaptop> (raw)
In-Reply-To: <20150604031514.GE1951@swordfish>
On Thu, Jun 04, 2015 at 12:15:14PM +0900, Sergey Senozhatsky wrote:
> On (06/04/15 11:55), Minchan Kim wrote:
> > > [ 3303.108960] class-3072 objs:24652 inuse:24628 objs-per-page:4 pages-tofree:6
> >
> > maxobjs-per-zspage?
> >
>
> yeah, I shortened it to be more of less "80 chars" friendly.
>
>
> [..]
>
> > > + * calculate how many unused allocated objects we
> >
> > c should be captital.
> >
> > I hope you will fix all of english grammer in next spin
> > because someone(like me) who is not a native will learn the
> > wrong english. :)
>
> sure, will fix. yeah, I'm a native broken english speaker :-)
>
> > > + * have and see if we can free any zspages. otherwise,
> > > + * compaction can just move objects back and forth w/o
> > > + * any memory gain.
> > > + */
> > > + unsigned long ret = zs_stat_get(class, OBJ_ALLOCATED) -
> > > + zs_stat_get(class, OBJ_USED);
> > > +
> >
> > I prefer obj_wasted to "ret".
>
> ok.
>
> I'm still thinking how good it should be.
>
> for automatic compaction we don't want to uselessly move objects between
> pages and I tend to think that it's better to compact less, than to waste
> more cpu cycless.
>
>
> on the other hand, this policy will miss cases like:
>
> -- free objects in class: 5 (free-objs class capacity)
> -- page1: inuse 2
> -- page2: inuse 2
> -- page3: inuse 3
> -- page4: inuse 2
What scenario do you have a cocern?
Could you describe this example more clear?
Thanks.
>
> so total "insuse" is greater than free-objs class capacity. but, it's
> surely possible to compact this class. partial inuse summ <= free-objs class
> capacity (a partial summ is a ->inuse summ of any two of class pages:
> page1 + page2, page2 + page3, etc.).
>
> otoh, these partial sums will badly affect performance. may be for automatic
> compaction (the one that happens w/o user interaction) we can do zs_can_compact()
> and for manual compaction (the one that has been triggered by a user) we can
> old "full-scan".
>
> anyway, zs_can_compact() looks like something that we can optimize
> independently later.
>
> -ss
>
> > > + ret /= get_maxobj_per_zspage(class->size,
> > > + class->pages_per_zspage);
> > > + return ret > 0;
> > > +}
> > > +
> > > static unsigned long __zs_compact(struct zs_pool *pool,
> > > struct size_class *class)
> > > {
> > > @@ -1686,6 +1708,9 @@ static unsigned long __zs_compact(struct zs_pool *pool,
> > >
> > > BUG_ON(!is_first_page(src_page));
> > >
> > > + if (!zs_can_compact(class))
> > > + break;
> > > +
> > > cc.index = 0;
> > > cc.s_page = src_page;
> > >
> > > --
> > > 2.4.2.337.gfae46aa
> > >
> >
> > --
> > Kind regards,
> > Minchan Kim
> >
--
Kind regards,
Minchan Kim
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Minchan Kim <minchan@kernel.org>
To: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: 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 03/10] zsmalloc: introduce zs_can_compact() function
Date: Thu, 4 Jun 2015 12:30:14 +0900 [thread overview]
Message-ID: <20150604033014.GG2241@blaptop> (raw)
In-Reply-To: <20150604031514.GE1951@swordfish>
On Thu, Jun 04, 2015 at 12:15:14PM +0900, Sergey Senozhatsky wrote:
> On (06/04/15 11:55), Minchan Kim wrote:
> > > [ 3303.108960] class-3072 objs:24652 inuse:24628 objs-per-page:4 pages-tofree:6
> >
> > maxobjs-per-zspage?
> >
>
> yeah, I shortened it to be more of less "80 chars" friendly.
>
>
> [..]
>
> > > + * calculate how many unused allocated objects we
> >
> > c should be captital.
> >
> > I hope you will fix all of english grammer in next spin
> > because someone(like me) who is not a native will learn the
> > wrong english. :)
>
> sure, will fix. yeah, I'm a native broken english speaker :-)
>
> > > + * have and see if we can free any zspages. otherwise,
> > > + * compaction can just move objects back and forth w/o
> > > + * any memory gain.
> > > + */
> > > + unsigned long ret = zs_stat_get(class, OBJ_ALLOCATED) -
> > > + zs_stat_get(class, OBJ_USED);
> > > +
> >
> > I prefer obj_wasted to "ret".
>
> ok.
>
> I'm still thinking how good it should be.
>
> for automatic compaction we don't want to uselessly move objects between
> pages and I tend to think that it's better to compact less, than to waste
> more cpu cycless.
>
>
> on the other hand, this policy will miss cases like:
>
> -- free objects in class: 5 (free-objs class capacity)
> -- page1: inuse 2
> -- page2: inuse 2
> -- page3: inuse 3
> -- page4: inuse 2
What scenario do you have a cocern?
Could you describe this example more clear?
Thanks.
>
> so total "insuse" is greater than free-objs class capacity. but, it's
> surely possible to compact this class. partial inuse summ <= free-objs class
> capacity (a partial summ is a ->inuse summ of any two of class pages:
> page1 + page2, page2 + page3, etc.).
>
> otoh, these partial sums will badly affect performance. may be for automatic
> compaction (the one that happens w/o user interaction) we can do zs_can_compact()
> and for manual compaction (the one that has been triggered by a user) we can
> old "full-scan".
>
> anyway, zs_can_compact() looks like something that we can optimize
> independently later.
>
> -ss
>
> > > + ret /= get_maxobj_per_zspage(class->size,
> > > + class->pages_per_zspage);
> > > + return ret > 0;
> > > +}
> > > +
> > > static unsigned long __zs_compact(struct zs_pool *pool,
> > > struct size_class *class)
> > > {
> > > @@ -1686,6 +1708,9 @@ static unsigned long __zs_compact(struct zs_pool *pool,
> > >
> > > BUG_ON(!is_first_page(src_page));
> > >
> > > + if (!zs_can_compact(class))
> > > + break;
> > > +
> > > cc.index = 0;
> > > cc.s_page = src_page;
> > >
> > > --
> > > 2.4.2.337.gfae46aa
> > >
> >
> > --
> > Kind regards,
> > Minchan Kim
> >
--
Kind regards,
Minchan Kim
next prev parent reply other threads:[~2015-06-04 3:30 UTC|newest]
Thread overview: 60+ 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 ` Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 01/10] zsmalloc: drop unused variable `nr_to_migrate' Sergey Senozhatsky
2015-05-29 15:05 ` Sergey Senozhatsky
2015-06-04 2:04 ` Minchan Kim
2015-06-04 2:04 ` Minchan Kim
2015-06-04 2:10 ` Sergey Senozhatsky
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-05-29 15:05 ` Sergey Senozhatsky
2015-06-04 2:18 ` Minchan Kim
2015-06-04 2:18 ` Minchan Kim
2015-06-04 2:34 ` Sergey Senozhatsky
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-05-29 15:05 ` Sergey Senozhatsky
2015-06-04 2:55 ` Minchan Kim
2015-06-04 2:55 ` Minchan Kim
2015-06-04 3:15 ` Sergey Senozhatsky
2015-06-04 3:15 ` Sergey Senozhatsky
2015-06-04 3:30 ` Minchan Kim [this message]
2015-06-04 3:30 ` Minchan Kim
2015-06-04 3:42 ` Sergey Senozhatsky
2015-06-04 3:42 ` Sergey Senozhatsky
2015-06-04 3:50 ` Minchan Kim
2015-06-04 3:50 ` Minchan Kim
2015-06-04 4:19 ` Sergey Senozhatsky
2015-06-04 4:19 ` Sergey Senozhatsky
2015-06-04 3:31 ` 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-05-29 15:05 ` Sergey Senozhatsky
2015-06-04 3:14 ` Minchan Kim
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 ` Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 06/10] zsmalloc: move compaction functions Sergey Senozhatsky
2015-05-29 15:05 ` Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 07/10] zsmalloc: introduce auto-compact support Sergey Senozhatsky
2015-05-29 15:05 ` Sergey Senozhatsky
2015-06-04 4:57 ` Minchan Kim
2015-06-04 4:57 ` Minchan Kim
2015-06-04 5:30 ` Sergey Senozhatsky
2015-06-04 5:30 ` Sergey Senozhatsky
2015-06-04 6:27 ` Minchan Kim
2015-06-04 6:27 ` Minchan Kim
2015-06-04 7:04 ` Minchan Kim
2015-06-04 7:04 ` Minchan Kim
2015-06-04 14:47 ` Sergey Senozhatsky
2015-06-04 14:47 ` Sergey Senozhatsky
2015-06-04 7:28 ` Sergey Senozhatsky
2015-06-04 7:28 ` Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 08/10] zsmalloc: export zs_pool `num_migrated' Sergey Senozhatsky
2015-05-29 15:05 ` 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 ` Sergey Senozhatsky
2015-05-29 15:05 ` [RFC][PATCH 10/10] zsmalloc: lower ZS_ALMOST_FULL waterline Sergey Senozhatsky
2015-05-29 15:05 ` Sergey Senozhatsky
2015-06-03 5:09 ` [RFC][PATCH 00/10] zsmalloc auto-compaction Sergey Senozhatsky
2015-06-03 5:09 ` 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=20150604033014.GG2241@blaptop \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=sergey.senozhatsky.work@gmail.com \
--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 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.