All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wanpeng Li <liwanp@linux.vnet.ibm.com>
To: Dan Magenheimer <dan.magenheimer@oracle.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Seth Jennings <sjenning@linux.vnet.ibm.com>,
	Konrad Rzeszutek Wilk <konrad@darnok.org>,
	Minchan Kim <minchan@kernel.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/4] zcache: zero-filled pages awareness
Date: Thu, 14 Mar 2013 07:35:37 +0800	[thread overview]
Message-ID: <20130313233537.GA7635@hacker.(null)> (raw)
In-Reply-To: <9a45f4be-a80c-434d-ae7f-f8faaea5e4d4@default>

On Wed, Mar 13, 2013 at 09:53:48AM -0700, Dan Magenheimer wrote:
>> From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com]
>> Subject: [PATCH 2/4] zcache: zero-filled pages awareness
>> 
>> Compression of zero-filled pages can unneccessarily cause internal
>> fragmentation, and thus waste memory. This special case can be
>> optimized.
>> 
>> This patch captures zero-filled pages, and marks their corresponding
>> zcache backing page entry as zero-filled. Whenever such zero-filled
>> page is retrieved, we fill the page frame with zero.
>> 
>> Signed-off-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>
>> ---
>>  drivers/staging/zcache/tmem.c        |    4 +-
>>  drivers/staging/zcache/tmem.h        |    5 ++
>>  drivers/staging/zcache/zcache-main.c |   87 ++++++++++++++++++++++++++++++----
>>  3 files changed, 85 insertions(+), 11 deletions(-)
>> 
>> diff --git a/drivers/staging/zcache/tmem.c b/drivers/staging/zcache/tmem.c
>> index a2b7e03..62468ea 100644
>> --- a/drivers/staging/zcache/tmem.c
>> +++ b/drivers/staging/zcache/tmem.c
>> @@ -597,7 +597,9 @@ int tmem_put(struct tmem_pool *pool, struct tmem_oid *oidp, uint32_t index,
>>  	if (unlikely(ret == -ENOMEM))
>>  		/* may have partially built objnode tree ("stump") */
>>  		goto delete_and_free;
>> -	(*tmem_pamops.create_finish)(pampd, is_ephemeral(pool));
>> +	if (pampd != (void *)ZERO_FILLED)
>> +		(*tmem_pamops.create_finish)(pampd, is_ephemeral(pool));
>> +
>>  	goto out;
>> 
>>  delete_and_free:
>> diff --git a/drivers/staging/zcache/tmem.h b/drivers/staging/zcache/tmem.h
>> index adbe5a8..6719dbd 100644
>> --- a/drivers/staging/zcache/tmem.h
>> +++ b/drivers/staging/zcache/tmem.h
>> @@ -204,6 +204,11 @@ struct tmem_handle {
>>  	uint16_t client_id;
>>  };
>> 
>> +/*
>> + * mark pampd to special vaule in order that later
>> + * retrieve will identify zero-filled pages
>> + */
>> +#define ZERO_FILLED 0x2
>
>You can avoid changing tmem.[ch] entirely by moving this
>definition into zcache-main.c and by moving the check
>comparing pampd against ZERO_FILLED into zcache_pampd_create_finish()
>I think that would be cleaner...

Great point!

>
>If you change this and make the pageframe counter fix for PATCH 4/4,
>please add my ack for the next version:
>

Thanks Dan. :-)

Regards,
Wanpeng Li 

>Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com>
>
>--
>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>

--
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>

  parent reply	other threads:[~2013-03-13 23:35 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <<1363158321-20790-1-git-send-email-liwanp@linux.vnet.ibm.com>
     [not found] ` <<1363158321-20790-5-git-send-email-liwanp@linux.vnet.ibm.com>
2013-03-13 16:42   ` [PATCH 4/4] zcache: add pageframes count once compress zero-filled pages twice Dan Magenheimer
2013-03-13 16:42     ` Dan Magenheimer
2013-03-14  0:20     ` Wanpeng Li
2013-03-14  0:20     ` Wanpeng Li
2013-03-14 16:10       ` Dan Magenheimer
2013-03-14 16:10         ` Dan Magenheimer
2013-03-14 23:41         ` Wanpeng Li
2013-03-14 23:41         ` Wanpeng Li
     [not found] ` <<1363158321-20790-3-git-send-email-liwanp@linux.vnet.ibm.com>
2013-03-13 16:53   ` [PATCH 2/4] zcache: zero-filled pages awareness Dan Magenheimer
2013-03-13 16:53     ` Dan Magenheimer
2013-03-13 23:35     ` Wanpeng Li
2013-03-13 23:35     ` Wanpeng Li [this message]
2013-03-13  7:05 [PATCH 0/4] zcache: Support zero-filled pages more efficiently Wanpeng Li
2013-03-13  7:05 ` Wanpeng Li
2013-03-13  7:05 ` [PATCH 1/4] zcache: introduce zero-filled pages handler Wanpeng Li
2013-03-13  7:05   ` Wanpeng Li
2013-03-13  7:05 ` [PATCH 2/4] zcache: zero-filled pages awareness Wanpeng Li
2013-03-13  7:05   ` Wanpeng Li
2013-03-13  7:05 ` [PATCH 3/4] zcache: introduce zero-filled pages stat count Wanpeng Li
2013-03-13  7:05   ` Wanpeng Li
2013-03-13  7:05 ` [PATCH 4/4] zcache: add pageframes count once compress zero-filled pages twice Wanpeng Li
2013-03-13  7:05   ` Wanpeng Li

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='20130313233537.GA7635@hacker.(null)' \
    --to=liwanp@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=dan.magenheimer@oracle.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=konrad@darnok.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=sjenning@linux.vnet.ibm.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.