linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: zhouxianrong <zhouxianrong@huawei.com>
To: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: <linux-mm@kvack.org>, <linux-kernel@vger.kernel.org>,
	<akpm@linux-foundation.org>, <sergey.senozhatsky@gmail.com>,
	<minchan@kernel.org>, <ngupta@vflare.org>,
	<Mi.Sophia.Wang@huawei.com>, <zhouxiyu@huawei.com>,
	<weidu.du@huawei.com>, <zhangshiming5@huawei.com>,
	<won.ho.park@huawei.com>
Subject: Re: [PATCH] mm: extend zero pages to same element pages for zram
Date: Sun, 22 Jan 2017 10:58:38 +0800	[thread overview]
Message-ID: <84073d07-6939-b22d-8bda-4fa2a9127555@huawei.com> (raw)
In-Reply-To: <20170121084338.GA405@jagdpanzerIV.localdomain>

1. memset is just set a int value but i want to set a long value.
2. using clear_page rather than memset MAYBE due to in arm64 arch
    it is a 64-bytes operations.

6.6.4. Data Cache Zero

The ARMv8-A architecture introduces a Data Cache Zero by Virtual Address (DC ZVA) instruction. This enables a block of 64
bytes in memory, aligned to 64 bytes in size, to be set to zero. If the DC ZVA instruction misses in the cache, it clears main
memory, without causing an L1 or L2 cache allocation.

but i only consider the arm64 arch, other archs need to be reviewed.

On 2017/1/21 16:43, Sergey Senozhatsky wrote:
> Hello,
>
> On (01/13/17 16:29), zhouxianrong@huawei.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
>
> .
>

  reply	other threads:[~2017-01-22  3:02 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-06  8:42 [PATCH] mm: extend zero pages to same element pages for zram zhouxianrong
2017-01-09 23:41 ` Minchan Kim
2017-01-13  4:24   ` Sergey Senozhatsky
2017-01-13  6:23     ` Minchan Kim
2017-01-13  6:36       ` Sergey Senozhatsky
2017-01-13  6:47         ` Minchan Kim
2017-01-13  7:02           ` Sergey Senozhatsky
2017-01-13  8:03             ` Minchan Kim
2017-01-13  8:29 ` zhouxianrong
2017-01-21  8:43   ` Sergey Senozhatsky
2017-01-22  2:58     ` zhouxianrong [this message]
2017-01-22  4:45       ` Sergey Senozhatsky
2017-01-23  2:58       ` Joonsoo Kim
2017-01-23  3:32         ` zhouxianrong
2017-01-23  4:03         ` Sergey Senozhatsky
2017-01-23  6:27           ` Joonsoo Kim
2017-01-23  7:13             ` Sergey Senozhatsky
2017-01-23  7:40               ` Minchan Kim
2017-01-24  7:58                 ` zhouxianrong
2017-01-25  1:29                   ` Minchan Kim
2017-01-25  1:32                     ` Sergey Senozhatsky
2017-01-25  2:48                       ` Matthew Wilcox
2017-01-25  4:18                         ` Sergey Senozhatsky
2017-01-25  4:51                           ` Minchan Kim
2017-01-25  5:38                             ` Sergey Senozhatsky
2017-01-25  5:44                               ` Minchan Kim
2017-01-23  6:26       ` Matthew Wilcox
2017-01-23  6:32         ` 答复: " zhouxianrong
2017-02-03  8:34 ` zhouxianrong
2017-02-03  8:42 ` zhouxianrong
2017-02-03 15:33   ` Matthew Wilcox
2017-02-04  3:33     ` zhouxianrong
2017-02-05 14:21   ` Minchan Kim
2017-02-06  1:28     ` zhouxianrong
2017-02-06 14:14       ` Matthew Wilcox
2017-02-06 23:48       ` Minchan Kim
2017-02-07  2:20         ` zhouxianrong
2017-02-07  2:54           ` Minchan Kim
2017-02-07  3:24             ` zhouxianrong
2017-02-07  4:57               ` 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=84073d07-6939-b22d-8bda-4fa2a9127555@huawei.com \
    --to=zhouxianrong@huawei.com \
    --cc=Mi.Sophia.Wang@huawei.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=ngupta@vflare.org \
    --cc=sergey.senozhatsky.work@gmail.com \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=weidu.du@huawei.com \
    --cc=won.ho.park@huawei.com \
    --cc=zhangshiming5@huawei.com \
    --cc=zhouxiyu@huawei.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).