From: Heesub Shin <heesub.shin@samsung.com>
To: Minchan Kim <minchan@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Hugh Dickins <hughd@google.com>, Shaohua Li <shli@kernel.org>,
Jerome Marchand <jmarchan@redhat.com>,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Dan Streetman <ddstreet@ieee.org>,
Nitin Gupta <ngupta@vflare.org>,
Luigi Semenzato <semenzato@google.com>
Subject: Re: [RFC 3/3] zram: add swap_get_free hint
Date: Thu, 04 Sep 2014 15:26:14 +0900 [thread overview]
Message-ID: <54080606.3050106@samsung.com> (raw)
In-Reply-To: <1409794786-10951-4-git-send-email-minchan@kernel.org>
Hello Minchan,
First of all, I agree with the overall purpose of your patch set.
On 09/04/2014 10:39 AM, Minchan Kim wrote:
> This patch implement SWAP_GET_FREE handler in zram so that VM can
> know how many zram has freeable space.
> VM can use it to stop anonymous reclaiming once zram is full.
>
> Signed-off-by: Minchan Kim <minchan@kernel.org>
> ---
> drivers/block/zram/zram_drv.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index 88661d62e46a..8e22b20aa2db 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -951,6 +951,22 @@ static int zram_slot_free_notify(struct block_device *bdev,
> return 0;
> }
>
> +static int zram_get_free_pages(struct block_device *bdev, long *free)
> +{
> + struct zram *zram;
> + struct zram_meta *meta;
> +
> + zram = bdev->bd_disk->private_data;
> + meta = zram->meta;
> +
> + if (!zram->limit_pages)
> + return 1;
> +
> + *free = zram->limit_pages - zs_get_total_pages(meta->mem_pool);
Even if 'free' is zero here, there may be free spaces available to store
more compressed pages into the zs_pool. I mean calculation above is not
quite accurate and wastes memory, but have no better idea for now.
heesub
> +
> + return 0;
> +}
> +
> static int zram_swap_hint(struct block_device *bdev,
> unsigned int hint, void *arg)
> {
> @@ -958,6 +974,8 @@ static int zram_swap_hint(struct block_device *bdev,
>
> if (hint == SWAP_SLOT_FREE)
> ret = zram_slot_free_notify(bdev, (unsigned long)arg);
> + else if (hint == SWAP_GET_FREE)
> + ret = zram_get_free_pages(bdev, arg);
>
> return ret;
> }
>
--
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: Heesub Shin <heesub.shin@samsung.com>
To: Minchan Kim <minchan@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Hugh Dickins <hughd@google.com>, Shaohua Li <shli@kernel.org>,
Jerome Marchand <jmarchan@redhat.com>,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Dan Streetman <ddstreet@ieee.org>,
Nitin Gupta <ngupta@vflare.org>,
Luigi Semenzato <semenzato@google.com>
Subject: Re: [RFC 3/3] zram: add swap_get_free hint
Date: Thu, 04 Sep 2014 15:26:14 +0900 [thread overview]
Message-ID: <54080606.3050106@samsung.com> (raw)
In-Reply-To: <1409794786-10951-4-git-send-email-minchan@kernel.org>
Hello Minchan,
First of all, I agree with the overall purpose of your patch set.
On 09/04/2014 10:39 AM, Minchan Kim wrote:
> This patch implement SWAP_GET_FREE handler in zram so that VM can
> know how many zram has freeable space.
> VM can use it to stop anonymous reclaiming once zram is full.
>
> Signed-off-by: Minchan Kim <minchan@kernel.org>
> ---
> drivers/block/zram/zram_drv.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index 88661d62e46a..8e22b20aa2db 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -951,6 +951,22 @@ static int zram_slot_free_notify(struct block_device *bdev,
> return 0;
> }
>
> +static int zram_get_free_pages(struct block_device *bdev, long *free)
> +{
> + struct zram *zram;
> + struct zram_meta *meta;
> +
> + zram = bdev->bd_disk->private_data;
> + meta = zram->meta;
> +
> + if (!zram->limit_pages)
> + return 1;
> +
> + *free = zram->limit_pages - zs_get_total_pages(meta->mem_pool);
Even if 'free' is zero here, there may be free spaces available to store
more compressed pages into the zs_pool. I mean calculation above is not
quite accurate and wastes memory, but have no better idea for now.
heesub
> +
> + return 0;
> +}
> +
> static int zram_swap_hint(struct block_device *bdev,
> unsigned int hint, void *arg)
> {
> @@ -958,6 +974,8 @@ static int zram_swap_hint(struct block_device *bdev,
>
> if (hint == SWAP_SLOT_FREE)
> ret = zram_slot_free_notify(bdev, (unsigned long)arg);
> + else if (hint == SWAP_GET_FREE)
> + ret = zram_get_free_pages(bdev, arg);
>
> return ret;
> }
>
next prev parent reply other threads:[~2014-09-04 6:25 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-04 1:39 [RFC 0/3] make vm aware of zram-swap Minchan Kim
2014-09-04 1:39 ` Minchan Kim
2014-09-04 1:39 ` [RFC 1/3] zram: generalize swap_slot_free_notify Minchan Kim
2014-09-04 1:39 ` Minchan Kim
2014-09-04 1:39 ` [RFC 2/3] mm: add swap_get_free hint for zram Minchan Kim
2014-09-04 1:39 ` Minchan Kim
2014-09-13 19:01 ` Dan Streetman
2014-09-13 19:01 ` Dan Streetman
2014-09-15 0:30 ` Minchan Kim
2014-09-15 0:30 ` Minchan Kim
2014-09-15 14:53 ` Dan Streetman
2014-09-15 14:53 ` Dan Streetman
2014-09-16 0:33 ` Minchan Kim
2014-09-16 0:33 ` Minchan Kim
2014-09-16 15:09 ` Dan Streetman
2014-09-16 15:09 ` Dan Streetman
2014-09-17 7:14 ` Minchan Kim
2014-09-17 7:14 ` Minchan Kim
2014-09-04 1:39 ` [RFC 3/3] zram: add swap_get_free hint Minchan Kim
2014-09-04 1:39 ` Minchan Kim
2014-09-04 6:26 ` Heesub Shin [this message]
2014-09-04 6:26 ` Heesub Shin
2014-09-04 23:59 ` Minchan Kim
2014-09-04 23:59 ` Minchan Kim
2014-09-13 19:39 ` Dan Streetman
2014-09-13 19:39 ` Dan Streetman
2014-09-15 0:57 ` Minchan Kim
2014-09-15 0:57 ` Minchan Kim
2014-09-15 16:00 ` Dan Streetman
2014-09-15 16:00 ` Dan Streetman
2014-09-16 1:21 ` Minchan Kim
2014-09-16 1:21 ` Minchan Kim
2014-09-16 15:58 ` Dan Streetman
2014-09-16 15:58 ` Dan Streetman
2014-09-17 7:44 ` Minchan Kim
2014-09-17 7:44 ` Minchan Kim
2014-09-17 16:28 ` Dan Streetman
2014-09-17 16:28 ` Dan Streetman
2014-09-19 6:14 ` Minchan Kim
2014-09-19 6:14 ` Minchan Kim
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=54080606.3050106@samsung.com \
--to=heesub.shin@samsung.com \
--cc=akpm@linux-foundation.org \
--cc=ddstreet@ieee.org \
--cc=hughd@google.com \
--cc=jmarchan@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=minchan@kernel.org \
--cc=ngupta@vflare.org \
--cc=semenzato@google.com \
--cc=sergey.senozhatsky@gmail.com \
--cc=shli@kernel.org \
/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.