[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170121084338.GA405@jagdpanzerIV.localdomain>
Date: Sat, 21 Jan 2017 17:43:38 +0900
From: Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>
To: zhouxianrong@...wei.com
Cc: linux-mm@...ck.org, linux-kernel@...r.kernel.org,
akpm@...ux-foundation.org, sergey.senozhatsky@...il.com,
minchan@...nel.org, ngupta@...are.org, Mi.Sophia.Wang@...wei.com,
zhouxiyu@...wei.com, weidu.du@...wei.com, zhangshiming5@...wei.com,
won.ho.park@...wei.com
Subject: Re: [PATCH] mm: extend zero pages to same element pages for zram
Hello,
On (01/13/17 16:29), zhouxianrong@...wei.com wrote:
[..]
> --- a/Documentation/ABI/testing/sysfs-block-zram
> +++ b/Documentation/ABI/testing/sysfs-block-zram
> @@ -86,21 +86,21 @@ Description:
> ones are sent by filesystem mounted with discard option,
> whenever some data blocks are getting discarded.
>
> -What: /sys/block/zram<id>/zero_pages
> +What: /sys/block/zram<id>/same_pages
[..]
> -zero_pages RO the number of zero filled pages written to this disk
> +same_pages RO the number of same element filled pages written to this disk
[..]
> - zero_pages
> + same_pages
> num_migrated
> +}
we removed deprecated sysfs attrs. zero_pages does not exist anymore.
> static size_t zram_get_obj_size(struct zram_meta *meta, u32 index)
> {
> return meta->table[index].value & (BIT(ZRAM_FLAG_SHIFT) - 1);
> @@ -158,31 +169,76 @@ static inline void update_used_max(struct zram *zram,
> } while (old_max != cur_max);
> }
>
> -static bool page_zero_filled(void *ptr)
> +static inline void zram_fill_page(char *ptr, unsigned long value)
> +{
> + int i;
> + unsigned long *page = (unsigned long *)ptr;
> +
> + if (likely(value == 0)) {
> + clear_page(ptr);
> + } else {
> + for (i = PAGE_SIZE / sizeof(unsigned long) - 1; i >= 0; i--)
> + page[i] = value;
> + }
any particular reason not to use memset() here?
memset() can be faster that that, right?
[..]
> /* Flags for zram pages (table[page_no].value) */
> enum zram_pageflags {
> - /* Page consists entirely of zeros */
> - ZRAM_ZERO = ZRAM_FLAG_SHIFT,
> + /* Page consists entirely of same elements */
> + ZRAM_SAME = ZRAM_FLAG_SHIFT,
> ZRAM_ACCESS, /* page is now accessed */
[..]
> @@ -83,7 +86,7 @@ struct zram_stats {
> 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 */
> - atomic64_t zero_pages; /* no. of zero filled pages */
> + atomic64_t same_pages; /* no. of same element filled pages */
not like this rename is particularity important, but ok. works for me.
-ss
Powered by blists - more mailing lists