From: Jerome Marchand <jmarchan@redhat.com>
To: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Minchan Kim <minchan@kernel.org>, Nitin Gupta <ngupta@vflare.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCHv3 4/8] zram: use atomic64_t for all zram stats
Date: Thu, 16 Jan 2014 14:58:15 +0100 [thread overview]
Message-ID: <52D7E577.5020506@redhat.com> (raw)
In-Reply-To: <1389877936-15543-5-git-send-email-sergey.senozhatsky@gmail.com>
On 01/16/2014 02:12 PM, Sergey Senozhatsky wrote:
> This is a preparation patch for stats code duplication removal.
>
> 1) use atomic64_t for `pages_zero' and `pages_stored' zram stats.
> 2) `compr_size' and `pages_zero' struct zram_stats members did not
> follow the existing device attr naming scheme: zram_stats.ATTR has
> ATTR_show() function. rename them:
> -- compr_size -> compr_data_size
> -- pages_zero -> zero_pages
>
> Minchan Kim's note:
> If we really have trouble with atomic stat operation, we could
> change it with percpu_counter so that it could solve atomic overhead and
> unnecessary memory space by introducing unsigned long instead of 64bit
> atomic_t.
>
> Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Acked-by: Jerome Marchand <jmarchan@redhat.com>
> ---
> drivers/block/zram/zram_drv.c | 18 +++++++++---------
> drivers/block/zram/zram_drv.h | 6 +++---
> 2 files changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index c7c7789..0035d39 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -109,7 +109,7 @@ static ssize_t zero_pages_show(struct device *dev,
> {
> struct zram *zram = dev_to_zram(dev);
>
> - return sprintf(buf, "%u\n", atomic_read(&zram->stats.pages_zero));
> + return sprintf(buf, "%llu\n", (u64)atomic64_read(&zram->stats.zero_pages));
> }
>
> static ssize_t orig_data_size_show(struct device *dev,
> @@ -118,7 +118,7 @@ static ssize_t orig_data_size_show(struct device *dev,
> struct zram *zram = dev_to_zram(dev);
>
> return sprintf(buf, "%llu\n",
> - (u64)(atomic_read(&zram->stats.pages_stored)) << PAGE_SHIFT);
> + (u64)(atomic64_read(&zram->stats.pages_stored)) << PAGE_SHIFT);
> }
>
> static ssize_t compr_data_size_show(struct device *dev,
> @@ -127,7 +127,7 @@ static ssize_t compr_data_size_show(struct device *dev,
> struct zram *zram = dev_to_zram(dev);
>
> return sprintf(buf, "%llu\n",
> - (u64)atomic64_read(&zram->stats.compr_size));
> + (u64)atomic64_read(&zram->stats.compr_data_size));
> }
>
> static ssize_t mem_used_total_show(struct device *dev,
> @@ -301,15 +301,15 @@ static void zram_free_page(struct zram *zram, size_t index)
> */
> if (zram_test_flag(meta, index, ZRAM_ZERO)) {
> zram_clear_flag(meta, index, ZRAM_ZERO);
> - atomic_dec(&zram->stats.pages_zero);
> + atomic64_dec(&zram->stats.zero_pages);
> }
> return;
> }
>
> zs_free(meta->mem_pool, handle);
>
> - atomic64_sub(meta->table[index].size, &zram->stats.compr_size);
> - atomic_dec(&zram->stats.pages_stored);
> + atomic64_sub(meta->table[index].size, &zram->stats.compr_data_size);
> + atomic64_dec(&zram->stats.pages_stored);
>
> meta->table[index].handle = 0;
> meta->table[index].size = 0;
> @@ -452,7 +452,7 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
> zram_set_flag(meta, index, ZRAM_ZERO);
> write_unlock(&zram->meta->tb_lock);
>
> - atomic_inc(&zram->stats.pages_zero);
> + atomic64_inc(&zram->stats.zero_pages);
> ret = 0;
> goto out;
> }
> @@ -508,8 +508,8 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
> write_unlock(&zram->meta->tb_lock);
>
> /* Update stats */
> - atomic64_add(clen, &zram->stats.compr_size);
> - atomic_inc(&zram->stats.pages_stored);
> + atomic64_add(clen, &zram->stats.compr_data_size);
> + atomic64_inc(&zram->stats.pages_stored);
> out:
> if (locked)
> mutex_unlock(&meta->buffer_lock);
> diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h
> index 2f173cb..58d4ac5 100644
> --- a/drivers/block/zram/zram_drv.h
> +++ b/drivers/block/zram/zram_drv.h
> @@ -69,15 +69,15 @@ struct table {
> } __aligned(4);
>
> struct zram_stats {
> - atomic64_t compr_size; /* compressed size of pages stored */
> + atomic64_t compr_data_size; /* compressed size of pages stored */
> atomic64_t num_reads; /* failed + successful */
> atomic64_t num_writes; /* --do-- */
> atomic64_t failed_reads; /* should NEVER! happen */
> atomic64_t failed_writes; /* can happen when memory is too low */
> atomic64_t invalid_io; /* non-page-aligned I/O requests */
> atomic64_t notify_free; /* no. of swap slot free notifications */
> - atomic_t pages_zero; /* no. of zero filled pages */
> - atomic_t pages_stored; /* no. of pages currently stored */
> + atomic64_t zero_pages; /* no. of zero filled pages */
> + atomic64_t pages_stored; /* no. of pages currently stored */
> };
>
> struct zram_meta {
>
next prev parent reply other threads:[~2014-01-16 13:59 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-16 13:12 [PATCHv3 0/8] zram stats rework and code cleanup Sergey Senozhatsky
2014-01-16 13:12 ` [PATCHv3 1/8] zram: drop `init_done' struct zram member Sergey Senozhatsky
2014-01-16 13:12 ` [PATCHv3 2/8] zram: do not pass rw argument to __zram_make_request() Sergey Senozhatsky
2014-01-16 13:12 ` [PATCHv3 3/8] zram: remove good and bad compress stats Sergey Senozhatsky
2014-01-16 13:44 ` Jerome Marchand
2014-01-17 6:48 ` Minchan Kim
2014-01-16 13:12 ` [PATCHv3 4/8] zram: use atomic64_t for all zram stats Sergey Senozhatsky
2014-01-16 13:58 ` Jerome Marchand [this message]
2014-01-17 6:54 ` Minchan Kim
2014-01-16 13:12 ` [PATCHv3 5/8] zram: remove zram stats code duplication Sergey Senozhatsky
2014-01-17 6:54 ` Minchan Kim
2014-01-16 13:12 ` [PATCHv3 6/8] zram: report failed read and write stats Sergey Senozhatsky
2014-02-04 22:18 ` Andrew Morton
2014-02-05 9:52 ` Sergey Senozhatsky
2014-01-16 13:12 ` [PATCHv3 7/8] zram: drop not used table `count' member Sergey Senozhatsky
2014-01-16 13:52 ` Jerome Marchand
2014-01-16 14:17 ` Sergey Senozhatsky
2014-01-17 7:03 ` Minchan Kim
2014-01-16 13:12 ` [PATCHv3 8/8] zram: move zram size warning to documentation Sergey Senozhatsky
2014-01-17 7:08 ` Minchan Kim
2014-01-17 7:09 ` [PATCHv3 0/8] zram stats rework and code cleanup Minchan Kim
2014-01-20 4:42 ` 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=52D7E577.5020506@redhat.com \
--to=jmarchan@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=minchan@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).