From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>,
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:31:18 +0900 [thread overview]
Message-ID: <20150604033118.GG1951@swordfish> (raw)
In-Reply-To: <20150604031514.GE1951@swordfish>
On (06/04/15 12:15), Sergey Senozhatsky wrote:
> 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
>
> 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.
>
so what I'm thinking of right now, is:
-- first do "if we have enough free objects to free at least one page"
check. compact if true.
-- if false, then we can do on a per-page basis
"if page->inuse <= class free-objs capacity" then compact it,
else select next almost_empty page.
here would be helpful to have pages ordered by ->inuse. but this
is far to expensive.
I have a patch that I will post later that introduces weak/partial
page ordering within fullness_list (really inexpensive: just one int
compare to add a page with a higher ->inuse to list head instead of
list tail).
-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>
WARNING: multiple messages have this Message-ID (diff)
From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>,
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:31:18 +0900 [thread overview]
Message-ID: <20150604033118.GG1951@swordfish> (raw)
In-Reply-To: <20150604031514.GE1951@swordfish>
On (06/04/15 12:15), Sergey Senozhatsky wrote:
> 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
>
> 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.
>
so what I'm thinking of right now, is:
-- first do "if we have enough free objects to free at least one page"
check. compact if true.
-- if false, then we can do on a per-page basis
"if page->inuse <= class free-objs capacity" then compact it,
else select next almost_empty page.
here would be helpful to have pages ordered by ->inuse. but this
is far to expensive.
I have a patch that I will post later that introduces weak/partial
page ordering within fullness_list (really inexpensive: just one int
compare to add a page with a higher ->inuse to list head instead of
list tail).
-ss
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
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 [this message]
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=20150604033118.GG1951@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 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.