From: Bob Liu <bob.liu@oracle.com>
To: "changkun.li" <xfishcoder@gmail.com>
Cc: sjenning@linux.vnet.ibm.com, linux-mm@kvack.org, luyi@360.cn,
lichangkun@360.cn, linux-kernel@vger.kernel.org
Subject: Re: [Patch 3.11.7 1/1]mm: remove and free expired data in time in zswap
Date: Fri, 08 Nov 2013 18:28:52 +0800 [thread overview]
Message-ID: <527CBCE4.3080106@oracle.com> (raw)
In-Reply-To: <1383904203.2715.2.camel@ubuntu>
On 11/08/2013 05:50 PM, changkun.li wrote:
> In zswap, store page A to zbud if the compression ratio is high, insert
> its entry into rbtree. if there is a entry B which has the same offset
> in the rbtree.Remove and free B before insert the entry of A.
>
> case:
> if the compression ratio of page A is not high, return without checking
> the same offset one in rbtree.
>
> if there is a entry B which has the same offset in the rbtree. Now, we
> make sure B is invalid or expired. But the entry and compressed memory
> of B are not freed in time.
>
> Because zswap spaces data in memory, it makes the utilization of memory
> lower. the other valid data in zbud is writeback to swap device more
> possibility, when zswap is full.
>
> So if we make sure a entry is expired, free it in time.
>
> Signed-off-by: changkun.li<xfishcoder@gmail.com>
> ---
> mm/zswap.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/mm/zswap.c b/mm/zswap.c
> index cbd9578..90a2813 100644
> --- a/mm/zswap.c
> +++ b/mm/zswap.c
> @@ -596,6 +596,7 @@ fail:
> return ret;
> }
>
> +static void zswap_frontswap_invalidate_page(unsigned type, pgoff_t
> offset);
> /*********************************
> * frontswap hooks
> **********************************/
> @@ -614,7 +615,7 @@ static int zswap_frontswap_store(unsigned type,
> pgoff_t offset,
>
> if (!tree) {
> ret = -ENODEV;
> - goto reject;
> + goto nodev;
> }
>
> /* reclaim space if needed */
> @@ -695,6 +696,8 @@ freepage:
> put_cpu_var(zswap_dstmem);
> zswap_entry_cache_free(entry);
> reject:
> + zswap_frontswap_invalidate_page(type, offset);
I'm afraid when arrives here zswap_rb_search(offset) will always return
NULL entry. So most of the time, it's just waste time to call
zswap_frontswap_invalidate_page() to search rbtree.
--
Regards,
-Bob
--
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: Bob Liu <bob.liu@oracle.com>
To: "changkun.li" <xfishcoder@gmail.com>
Cc: sjenning@linux.vnet.ibm.com, linux-mm@kvack.org, luyi@360.cn,
lichangkun@360.cn, linux-kernel@vger.kernel.org
Subject: Re: [Patch 3.11.7 1/1]mm: remove and free expired data in time in zswap
Date: Fri, 08 Nov 2013 18:28:52 +0800 [thread overview]
Message-ID: <527CBCE4.3080106@oracle.com> (raw)
In-Reply-To: <1383904203.2715.2.camel@ubuntu>
On 11/08/2013 05:50 PM, changkun.li wrote:
> In zswap, store page A to zbud if the compression ratio is high, insert
> its entry into rbtree. if there is a entry B which has the same offset
> in the rbtree.Remove and free B before insert the entry of A.
>
> case:
> if the compression ratio of page A is not high, return without checking
> the same offset one in rbtree.
>
> if there is a entry B which has the same offset in the rbtree. Now, we
> make sure B is invalid or expired. But the entry and compressed memory
> of B are not freed in time.
>
> Because zswap spaces data in memory, it makes the utilization of memory
> lower. the other valid data in zbud is writeback to swap device more
> possibility, when zswap is full.
>
> So if we make sure a entry is expired, free it in time.
>
> Signed-off-by: changkun.li<xfishcoder@gmail.com>
> ---
> mm/zswap.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/mm/zswap.c b/mm/zswap.c
> index cbd9578..90a2813 100644
> --- a/mm/zswap.c
> +++ b/mm/zswap.c
> @@ -596,6 +596,7 @@ fail:
> return ret;
> }
>
> +static void zswap_frontswap_invalidate_page(unsigned type, pgoff_t
> offset);
> /*********************************
> * frontswap hooks
> **********************************/
> @@ -614,7 +615,7 @@ static int zswap_frontswap_store(unsigned type,
> pgoff_t offset,
>
> if (!tree) {
> ret = -ENODEV;
> - goto reject;
> + goto nodev;
> }
>
> /* reclaim space if needed */
> @@ -695,6 +696,8 @@ freepage:
> put_cpu_var(zswap_dstmem);
> zswap_entry_cache_free(entry);
> reject:
> + zswap_frontswap_invalidate_page(type, offset);
I'm afraid when arrives here zswap_rb_search(offset) will always return
NULL entry. So most of the time, it's just waste time to call
zswap_frontswap_invalidate_page() to search rbtree.
--
Regards,
-Bob
next prev parent reply other threads:[~2013-11-08 10:29 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-08 9:50 [Patch 3.11.7 1/1]mm: remove and free expired data in time in zswap changkun.li
2013-11-08 9:50 ` changkun.li
2013-11-08 10:28 ` Bob Liu [this message]
2013-11-08 10:28 ` Bob Liu
2013-11-08 10:53 ` changkun.li
2013-11-18 7:06 ` Weijie Yang
2013-11-18 7:06 ` Weijie Yang
2014-01-10 9:43 ` Weijie Yang
2014-01-10 9:43 ` Weijie Yang
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=527CBCE4.3080106@oracle.com \
--to=bob.liu@oracle.com \
--cc=lichangkun@360.cn \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luyi@360.cn \
--cc=sjenning@linux.vnet.ibm.com \
--cc=xfishcoder@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.