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 4/4] zcache: add pageframes count once compress zero-filled pages twice
Date: Thu, 14 Mar 2013 08:20:56 +0800 [thread overview]
Message-ID: <20130314002056.GA10062@hacker.(null)> (raw)
In-Reply-To: <634487ea-fbbd-4eb9-9a18-9206edc4e0d2@default>
On Wed, Mar 13, 2013 at 09:42:16AM -0700, Dan Magenheimer wrote:
>> From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com]
>> Sent: Wednesday, March 13, 2013 1:05 AM
>> To: Andrew Morton
>> Cc: Greg Kroah-Hartman; Dan Magenheimer; Seth Jennings; Konrad Rzeszutek Wilk; Minchan Kim; linux-
>> mm@kvack.org; linux-kernel@vger.kernel.org; Wanpeng Li
>> Subject: [PATCH 4/4] zcache: add pageframes count once compress zero-filled pages twice
>
>Hi Wanpeng --
>
>Thanks for taking on this task from the drivers/staging/zcache TODO list!
>
>> Since zbudpage consist of two zpages, two zero-filled pages compression
>> contribute to one [eph|pers]pageframe count accumulated.
>
Hi Dan,
>I'm not sure why this is necessary. The [eph|pers]pageframe count
>is supposed to be counting actual pageframes used by zcache. Since
>your patch eliminates the need to store zero pages, no pageframes
>are needed at all to store zero pages, so it's not necessary
>to increment zcache_[eph|pers]_pageframes when storing zero
>pages.
>
Great point! It seems that we also don't need to caculate
zcache_[eph|pers]_zpages for zero-filled pages. I will fix
it in next version. :-)
>Or am I misunderstanding your intent?
>
Regards,
Wanpeng Li
>Thanks,
>Dan
>
>> Signed-off-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>
>> ---
>> drivers/staging/zcache/zcache-main.c | 25 +++++++++++++++++++++++--
>> 1 files changed, 23 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c
>> index dd52975..7860ff0 100644
>> --- a/drivers/staging/zcache/zcache-main.c
>> +++ b/drivers/staging/zcache/zcache-main.c
>> @@ -544,6 +544,8 @@ static struct page *zcache_evict_eph_pageframe(void);
>> static void *zcache_pampd_eph_create(char *data, size_t size, bool raw,
>> struct tmem_handle *th)
>> {
>> + static ssize_t second_eph_zero_page;
>> + static atomic_t second_eph_zero_page_atomic = ATOMIC_INIT(0);
>> void *pampd = NULL, *cdata = data;
>> unsigned clen = size;
>> bool zero_filled = false;
>> @@ -561,7 +563,14 @@ static void *zcache_pampd_eph_create(char *data, size_t size, bool raw,
>> clen = 0;
>> zero_filled = true;
>> zcache_pages_zero++;
>> - goto got_pampd;
>> + second_eph_zero_page = atomic_inc_return(
>> + &second_eph_zero_page_atomic);
>> + if (second_eph_zero_page % 2 == 1)
>> + goto got_pampd;
>> + else {
>> + atomic_sub(2, &second_eph_zero_page_atomic);
>> + goto count_zero_page;
>> + }
>> }
>> kunmap_atomic(user_mem);
>>
>> @@ -597,6 +606,7 @@ static void *zcache_pampd_eph_create(char *data, size_t size, bool raw,
>> create_in_new_page:
>> pampd = (void *)zbud_create_prep(th, true, cdata, clen, newpage);
>> BUG_ON(pampd == NULL);
>> +count_zero_page:
>> zcache_eph_pageframes =
>> atomic_inc_return(&zcache_eph_pageframes_atomic);
>> if (zcache_eph_pageframes > zcache_eph_pageframes_max)
>> @@ -621,6 +631,8 @@ out:
>> static void *zcache_pampd_pers_create(char *data, size_t size, bool raw,
>> struct tmem_handle *th)
>> {
>> + static ssize_t second_pers_zero_page;
>> + static atomic_t second_pers_zero_page_atomic = ATOMIC_INIT(0);
>> void *pampd = NULL, *cdata = data;
>> unsigned clen = size, zero_filled = 0;
>> struct page *page = (struct page *)(data), *newpage;
>> @@ -644,7 +656,15 @@ static void *zcache_pampd_pers_create(char *data, size_t size, bool raw,
>> clen = 0;
>> zero_filled = 1;
>> zcache_pages_zero++;
>> - goto got_pampd;
>> + second_pers_zero_page = atomic_inc_return(
>> + &second_pers_zero_page_atomic);
>> + if (second_pers_zero_page % 2 == 1)
>> + goto got_pampd;
>> + else {
>> + atomic_sub(2, &second_pers_zero_page_atomic);
>> + goto count_zero_page;
>> + }
>> +
>> }
>> kunmap_atomic(user_mem);
>>
>> @@ -698,6 +718,7 @@ create_pampd:
>> create_in_new_page:
>> pampd = (void *)zbud_create_prep(th, false, cdata, clen, newpage);
>> BUG_ON(pampd == NULL);
>> +count_zero_page:
>> zcache_pers_pageframes =
>> atomic_inc_return(&zcache_pers_pageframes_atomic);
>> if (zcache_pers_pageframes > zcache_pers_pageframes_max)
>> --
>> 1.7.7.6
--
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>
next prev parent reply other threads:[~2013-03-14 0:21 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 [this message]
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
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='20130314002056.GA10062@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.