From: Minchan Kim <minchan@kernel.org>
To: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Chao Yu <chao2.yu@samsung.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
ngupta@vflare.org, 'Jerome Marchand' <jmarchan@redhat.com>,
'Andrew Morton' <akpm@linux-foundation.org>
Subject: Re: [PATCH] zram: add num_discards for discarded pages stat
Date: Fri, 22 Aug 2014 15:18:05 +0900 [thread overview]
Message-ID: <20140822061805.GI17372@bbox> (raw)
In-Reply-To: <20140821130504.GB946@swordfish>
Hi Sergey,
On Thu, Aug 21, 2014 at 10:05:04PM +0900, Sergey Senozhatsky wrote:
> On (08/21/14 17:09), Chao Yu wrote:
> [cut]
> > >
> > > I hope I'm not discouraging. :)
> >
> > Nope, please let me try again, :)
> >
> > Since we have supported handling discard request in this commit
> > f4659d8e620d08bd1a84a8aec5d2f5294a242764 (zram: support REQ_DISCARD), zram got
> > one more chance to free unused memory whenever received discard request. But
> > without stating for discard request, there is no method for user to know whether
> > discard request has been handled by zram or how many blocks were discarded by
> > zram when user wants to know the effect of discard.
> >
> > In this patch, we add num_discards to stat discarded pages, and export it to
> > sysfs for users.
> >
>
> In other words, here is my proposal:
>
> -----8<-----8<-----
>
> Subject: [PATCH] zram: use notify_free to account all free notifications
>
> notify_free device attribute accounts the number of slot free notifications
> and internally represents the number of zram_free_page() calls. Slot free
> notifications are sent only when device is used as a swap device, hence
> notify_free is used only for swap devices. Since f4659d8e620d08 (zram:
> support REQ_DISCARD) ZRAM handles yet another one free notification (also
> via zram_free_page() call) -- REQ_DISCARD requests, which are sent by a
> filesystem, whenever some data blocks are discarded. However, there is no
> way to know the number of notifications in the latter case.
>
> Use notify_free to account the number of pages freed in zram_free_page(),
> instead of accounting only swap_slot_free_notify() calls (each
> zram_slot_free_notify() call frees one page).
>
> This means that depending on usage scenario notify_free represents:
> a) the number of pages freed because of slot free notifications, which is
> equal to the number of swap_slot_free_notify() calls, so there is no
> behaviour change
>
> b) the number of pages freed because of REQ_DISCARD notifications
IMO, it would be better to separate it because zram-swap does both
free notify and discard but trigger timing is different so we could
measure which one is better if we want to replace swap_slot_free_notify
with discard. So I'd like to keep both and then we could remove
notify_free later once we prove discard alone is enough.
What do you think about it?
>
> Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
> ---
> Documentation/ABI/testing/sysfs-block-zram | 13 ++++++++-----
> drivers/block/zram/zram_drv.c | 2 +-
> 2 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/ABI/testing/sysfs-block-zram b/Documentation/ABI/testing/sysfs-block-zram
> index 70ec992..73ed400 100644
> --- a/Documentation/ABI/testing/sysfs-block-zram
> +++ b/Documentation/ABI/testing/sysfs-block-zram
> @@ -77,11 +77,14 @@ What: /sys/block/zram<id>/notify_free
> Date: August 2010
> Contact: Nitin Gupta <ngupta@vflare.org>
> Description:
> - The notify_free file is read-only and specifies the number of
> - swap slot free notifications received by this device. These
> - notifications are sent to a swap block device when a swap slot
> - is freed. This statistic is applicable only when this disk is
> - being used as a swap disk.
> + The notify_free file is read-only. Depending on device usage
> + scenario it may account a) the number of swap slot free
> + notifications or b) the number of REQ_DISCARD requests sent
> + by bio. The former ones are sent to a swap block device when a
> + swap slot is freed, which implies that this disk is being used
> + as a swap disk. The latter ones are sent by filesystem mounted
> + with discard option, whenever some data blocks are getting
> + discarded.
>
> What: /sys/block/zram<id>/zero_pages
> Date: August 2010
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index d00831c..c2e7127 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -344,6 +344,7 @@ static void zram_free_page(struct zram *zram, size_t index)
> atomic64_sub(zram_get_obj_size(meta, index),
> &zram->stats.compr_data_size);
> atomic64_dec(&zram->stats.pages_stored);
> + atomic64_inc(&zram->stats.notify_free);
>
> meta->table[index].handle = 0;
> zram_set_obj_size(meta, index, 0);
> @@ -843,7 +844,6 @@ static void zram_slot_free_notify(struct block_device *bdev,
> bit_spin_lock(ZRAM_ACCESS, &meta->table[index].value);
> zram_free_page(zram, index);
> bit_spin_unlock(ZRAM_ACCESS, &meta->table[index].value);
> - atomic64_inc(&zram->stats.notify_free);
> }
>
> static const struct block_device_operations zram_devops = {
> --
> 2.1.0.233.g9eef2c8
>
> --
> 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>
--
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@gmail.com>
Cc: Chao Yu <chao2.yu@samsung.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
ngupta@vflare.org, "'Jerome Marchand'" <jmarchan@redhat.com>,
"'Andrew Morton'" <akpm@linux-foundation.org>
Subject: Re: [PATCH] zram: add num_discards for discarded pages stat
Date: Fri, 22 Aug 2014 15:18:05 +0900 [thread overview]
Message-ID: <20140822061805.GI17372@bbox> (raw)
In-Reply-To: <20140821130504.GB946@swordfish>
Hi Sergey,
On Thu, Aug 21, 2014 at 10:05:04PM +0900, Sergey Senozhatsky wrote:
> On (08/21/14 17:09), Chao Yu wrote:
> [cut]
> > >
> > > I hope I'm not discouraging. :)
> >
> > Nope, please let me try again, :)
> >
> > Since we have supported handling discard request in this commit
> > f4659d8e620d08bd1a84a8aec5d2f5294a242764 (zram: support REQ_DISCARD), zram got
> > one more chance to free unused memory whenever received discard request. But
> > without stating for discard request, there is no method for user to know whether
> > discard request has been handled by zram or how many blocks were discarded by
> > zram when user wants to know the effect of discard.
> >
> > In this patch, we add num_discards to stat discarded pages, and export it to
> > sysfs for users.
> >
>
> In other words, here is my proposal:
>
> -----8<-----8<-----
>
> Subject: [PATCH] zram: use notify_free to account all free notifications
>
> notify_free device attribute accounts the number of slot free notifications
> and internally represents the number of zram_free_page() calls. Slot free
> notifications are sent only when device is used as a swap device, hence
> notify_free is used only for swap devices. Since f4659d8e620d08 (zram:
> support REQ_DISCARD) ZRAM handles yet another one free notification (also
> via zram_free_page() call) -- REQ_DISCARD requests, which are sent by a
> filesystem, whenever some data blocks are discarded. However, there is no
> way to know the number of notifications in the latter case.
>
> Use notify_free to account the number of pages freed in zram_free_page(),
> instead of accounting only swap_slot_free_notify() calls (each
> zram_slot_free_notify() call frees one page).
>
> This means that depending on usage scenario notify_free represents:
> a) the number of pages freed because of slot free notifications, which is
> equal to the number of swap_slot_free_notify() calls, so there is no
> behaviour change
>
> b) the number of pages freed because of REQ_DISCARD notifications
IMO, it would be better to separate it because zram-swap does both
free notify and discard but trigger timing is different so we could
measure which one is better if we want to replace swap_slot_free_notify
with discard. So I'd like to keep both and then we could remove
notify_free later once we prove discard alone is enough.
What do you think about it?
>
> Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
> ---
> Documentation/ABI/testing/sysfs-block-zram | 13 ++++++++-----
> drivers/block/zram/zram_drv.c | 2 +-
> 2 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/ABI/testing/sysfs-block-zram b/Documentation/ABI/testing/sysfs-block-zram
> index 70ec992..73ed400 100644
> --- a/Documentation/ABI/testing/sysfs-block-zram
> +++ b/Documentation/ABI/testing/sysfs-block-zram
> @@ -77,11 +77,14 @@ What: /sys/block/zram<id>/notify_free
> Date: August 2010
> Contact: Nitin Gupta <ngupta@vflare.org>
> Description:
> - The notify_free file is read-only and specifies the number of
> - swap slot free notifications received by this device. These
> - notifications are sent to a swap block device when a swap slot
> - is freed. This statistic is applicable only when this disk is
> - being used as a swap disk.
> + The notify_free file is read-only. Depending on device usage
> + scenario it may account a) the number of swap slot free
> + notifications or b) the number of REQ_DISCARD requests sent
> + by bio. The former ones are sent to a swap block device when a
> + swap slot is freed, which implies that this disk is being used
> + as a swap disk. The latter ones are sent by filesystem mounted
> + with discard option, whenever some data blocks are getting
> + discarded.
>
> What: /sys/block/zram<id>/zero_pages
> Date: August 2010
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index d00831c..c2e7127 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -344,6 +344,7 @@ static void zram_free_page(struct zram *zram, size_t index)
> atomic64_sub(zram_get_obj_size(meta, index),
> &zram->stats.compr_data_size);
> atomic64_dec(&zram->stats.pages_stored);
> + atomic64_inc(&zram->stats.notify_free);
>
> meta->table[index].handle = 0;
> zram_set_obj_size(meta, index, 0);
> @@ -843,7 +844,6 @@ static void zram_slot_free_notify(struct block_device *bdev,
> bit_spin_lock(ZRAM_ACCESS, &meta->table[index].value);
> zram_free_page(zram, index);
> bit_spin_unlock(ZRAM_ACCESS, &meta->table[index].value);
> - atomic64_inc(&zram->stats.notify_free);
> }
>
> static const struct block_device_operations zram_devops = {
> --
> 2.1.0.233.g9eef2c8
>
> --
> 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>
--
Kind regards,
Minchan Kim
next prev parent reply other threads:[~2014-08-22 6:17 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-15 3:27 [PATCH] zram: add num_discards for discarded pages stat Chao Yu
2014-08-15 3:27 ` Chao Yu
2014-08-15 6:11 ` Sergey Senozhatsky
2014-08-15 6:11 ` Sergey Senozhatsky
2014-08-19 5:45 ` Chao Yu
2014-08-19 5:45 ` Chao Yu
2014-08-19 11:25 ` Sergey Senozhatsky
2014-08-19 11:25 ` Sergey Senozhatsky
2014-08-20 2:09 ` Minchan Kim
2014-08-20 2:09 ` Minchan Kim
2014-08-20 8:20 ` Chao Yu
2014-08-20 8:20 ` Chao Yu
2014-08-21 1:18 ` Minchan Kim
2014-08-21 1:18 ` Minchan Kim
2014-08-21 9:09 ` Chao Yu
2014-08-21 9:09 ` Chao Yu
2014-08-21 13:05 ` Sergey Senozhatsky
2014-08-21 13:05 ` Sergey Senozhatsky
2014-08-22 6:18 ` Minchan Kim [this message]
2014-08-22 6:18 ` Minchan Kim
2014-08-26 2:43 ` Chao Yu
2014-08-26 2:43 ` Chao Yu
2014-08-26 12:44 ` Sergey Senozhatsky
2014-08-26 12:44 ` Sergey Senozhatsky
2014-08-22 6:08 ` Minchan Kim
2014-08-22 6:08 ` 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=20140822061805.GI17372@bbox \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=chao2.yu@samsung.com \
--cc=jmarchan@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ngupta@vflare.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.