All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ric Mason <ric.masonn@gmail.com>
To: Wanpeng Li <liwanp@linux.vnet.ibm.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dan Magenheimer <dan.magenheimer@oracle.com>,
	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 v4 0/8] staging: zcache: Support zero-filled pages more efficiently
Date: Wed, 20 Mar 2013 07:34:02 +0800	[thread overview]
Message-ID: <5148F5EA.3020904@gmail.com> (raw)
In-Reply-To: <1363685150-18303-1-git-send-email-liwanp@linux.vnet.ibm.com>

On 03/19/2013 05:25 PM, Wanpeng Li wrote:
> Hi Greg,
>
> Since you have already merge 1/8, feel free to merge 2/8~8/8, I have already
> rebased against staging-next.
>
> Changelog:
>   v3 -> v4:
>    * handle duplication in page_is_zero_filled, spotted by Bob
>    * fix zcache writeback in dubugfs
>    * fix pers_pageframes|_max isn't exported in debugfs
>    * fix static variable defined in debug.h but used in multiple C files
>    * rebase on Greg's staging-next
>   v2 -> v3:
>    * increment/decrement zcache_[eph|pers]_zpages for zero-filled pages, spotted by Dan
>    * replace "zero" or "zero page" by "zero_filled_page", spotted by Dan
>   v1 -> v2:
>    * avoid changing tmem.[ch] entirely, spotted by Dan.
>    * don't accumulate [eph|pers]pageframe and [eph|pers]zpages for
>      zero-filled pages, spotted by Dan
>    * cleanup TODO list
>    * add Dan Acked-by.
>
> Motivation:
>
> - Seth Jennings points out compress zero-filled pages with LZO(a lossless
>    data compression algorithm) will waste memory and result in fragmentation.
>    https://lkml.org/lkml/2012/8/14/347
> - Dan Magenheimer add "Support zero-filled pages more efficiently" feature
>    in zcache TODO list https://lkml.org/lkml/2013/2/13/503
>
> Design:
>
> - For store page, capture zero-filled pages(evicted clean page cache pages and
>    swap pages), but don't compress them, set pampd which store zpage address to
>    0x2(since 0x0 and 0x1 has already been ocuppied) to mark special zero-filled
>    case and take advantage of tmem infrastructure to transform handle-tuple(pool
>    id, object id, and an index) to a pampd. Twice compress zero-filled pages will
>    contribute to one zcache_[eph|pers]_pageframes count accumulated.
> - For load page, traverse tmem hierachical to transform handle-tuple to pampd
>    and identify zero-filled case by pampd equal to 0x2 when filesystem reads
>    file pages or a page needs to be swapped in, then refill the page to zero
>    and return.
>
> Test:
>
> dd if=/dev/zero of=zerofile bs=1MB count=500
> vmtouch -t zerofile
> vmtouch -e zerofile
>
> formula:
> - fragmentation level = (zcache_[eph|pers]_pageframes * PAGE_SIZE - zcache_[eph|pers]_zbytes)
>    * 100 / (zcache_[eph|pers]_pageframes * PAGE_SIZE)
> - memory zcache occupy = zcache_[eph|pers]_zbytes
>
> Result:
>
> without zero-filled awareness:
> - fragmentation level: 98%
> - memory zcache occupy: 238MB
> with zero-filled awareness:
> - fragmentation level: 0%
> - memory zcache occupy: 0MB
>
> Wanpeng Li (8):
>    introduce zero filled pages handler
>    zero-filled pages awareness
>    handle zcache_[eph|pers]_pages for zero-filled page
>    fix pers_pageframes|_max aren't exported in debugfs
>    fix zcache writeback in debugfs
>    fix static variables are defined in debug.h but use in multiple C files
>    introduce zero-filled page stat count
>    clean TODO list

You can add Reviewed-by: Ric Mason <ric.masonn@gmail.com> to this patchset.

>
>   drivers/staging/zcache/TODO          |    3 +-
>   drivers/staging/zcache/debug.c       |    5 +-
>   drivers/staging/zcache/debug.h       |   77 +++++++++++++---------
>   drivers/staging/zcache/zcache-main.c |  147 ++++++++++++++++++++++++++++++----
>   4 files changed, 185 insertions(+), 47 deletions(-)
>

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

WARNING: multiple messages have this Message-ID (diff)
From: Ric Mason <ric.masonn@gmail.com>
To: Wanpeng Li <liwanp@linux.vnet.ibm.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dan Magenheimer <dan.magenheimer@oracle.com>,
	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 v4 0/8] staging: zcache: Support zero-filled pages more efficiently
Date: Wed, 20 Mar 2013 07:34:02 +0800	[thread overview]
Message-ID: <5148F5EA.3020904@gmail.com> (raw)
In-Reply-To: <1363685150-18303-1-git-send-email-liwanp@linux.vnet.ibm.com>

On 03/19/2013 05:25 PM, Wanpeng Li wrote:
> Hi Greg,
>
> Since you have already merge 1/8, feel free to merge 2/8~8/8, I have already
> rebased against staging-next.
>
> Changelog:
>   v3 -> v4:
>    * handle duplication in page_is_zero_filled, spotted by Bob
>    * fix zcache writeback in dubugfs
>    * fix pers_pageframes|_max isn't exported in debugfs
>    * fix static variable defined in debug.h but used in multiple C files
>    * rebase on Greg's staging-next
>   v2 -> v3:
>    * increment/decrement zcache_[eph|pers]_zpages for zero-filled pages, spotted by Dan
>    * replace "zero" or "zero page" by "zero_filled_page", spotted by Dan
>   v1 -> v2:
>    * avoid changing tmem.[ch] entirely, spotted by Dan.
>    * don't accumulate [eph|pers]pageframe and [eph|pers]zpages for
>      zero-filled pages, spotted by Dan
>    * cleanup TODO list
>    * add Dan Acked-by.
>
> Motivation:
>
> - Seth Jennings points out compress zero-filled pages with LZO(a lossless
>    data compression algorithm) will waste memory and result in fragmentation.
>    https://lkml.org/lkml/2012/8/14/347
> - Dan Magenheimer add "Support zero-filled pages more efficiently" feature
>    in zcache TODO list https://lkml.org/lkml/2013/2/13/503
>
> Design:
>
> - For store page, capture zero-filled pages(evicted clean page cache pages and
>    swap pages), but don't compress them, set pampd which store zpage address to
>    0x2(since 0x0 and 0x1 has already been ocuppied) to mark special zero-filled
>    case and take advantage of tmem infrastructure to transform handle-tuple(pool
>    id, object id, and an index) to a pampd. Twice compress zero-filled pages will
>    contribute to one zcache_[eph|pers]_pageframes count accumulated.
> - For load page, traverse tmem hierachical to transform handle-tuple to pampd
>    and identify zero-filled case by pampd equal to 0x2 when filesystem reads
>    file pages or a page needs to be swapped in, then refill the page to zero
>    and return.
>
> Test:
>
> dd if=/dev/zero of=zerofile bs=1MB count=500
> vmtouch -t zerofile
> vmtouch -e zerofile
>
> formula:
> - fragmentation level = (zcache_[eph|pers]_pageframes * PAGE_SIZE - zcache_[eph|pers]_zbytes)
>    * 100 / (zcache_[eph|pers]_pageframes * PAGE_SIZE)
> - memory zcache occupy = zcache_[eph|pers]_zbytes
>
> Result:
>
> without zero-filled awareness:
> - fragmentation level: 98%
> - memory zcache occupy: 238MB
> with zero-filled awareness:
> - fragmentation level: 0%
> - memory zcache occupy: 0MB
>
> Wanpeng Li (8):
>    introduce zero filled pages handler
>    zero-filled pages awareness
>    handle zcache_[eph|pers]_pages for zero-filled page
>    fix pers_pageframes|_max aren't exported in debugfs
>    fix zcache writeback in debugfs
>    fix static variables are defined in debug.h but use in multiple C files
>    introduce zero-filled page stat count
>    clean TODO list

You can add Reviewed-by: Ric Mason <ric.masonn@gmail.com> to this patchset.

>
>   drivers/staging/zcache/TODO          |    3 +-
>   drivers/staging/zcache/debug.c       |    5 +-
>   drivers/staging/zcache/debug.h       |   77 +++++++++++++---------
>   drivers/staging/zcache/zcache-main.c |  147 ++++++++++++++++++++++++++++++----
>   4 files changed, 185 insertions(+), 47 deletions(-)
>


  parent reply	other threads:[~2013-03-19 23:34 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-19  9:25 [PATCH v4 0/8] staging: zcache: Support zero-filled pages more efficiently Wanpeng Li
2013-03-19  9:25 ` Wanpeng Li
2013-03-19  9:25 ` [PATCH v4 1/8] staging: zcache: introduce zero-filled pages handler Wanpeng Li
2013-03-19  9:25   ` Wanpeng Li
2013-03-23 19:31   ` Geert Uytterhoeven
2013-03-23 19:31     ` Geert Uytterhoeven
2013-03-19  9:25 ` [PATCH v4 2/8] staging: zcache: zero-filled pages awareness Wanpeng Li
2013-03-19  9:25   ` Wanpeng Li
2013-03-20 10:30   ` Bob Liu
2013-03-20 10:30     ` Bob Liu
2013-03-20 10:43     ` Wanpeng Li
2013-03-20 10:43     ` Wanpeng Li
2013-03-19  9:25 ` [PATCH v4 3/8] staging: zcache: handle zcache_[eph|pers]_zpages for zero-filled page Wanpeng Li
2013-03-19  9:25   ` Wanpeng Li
2013-03-19  9:25 ` [PATCH v4 4/8] staging: zcache: fix pers_pageframes|_max aren't exported in debugfs Wanpeng Li
2013-03-19  9:25   ` Wanpeng Li
2013-03-19  9:25 ` [PATCH v4 5/8] staging: zcache: fix zcache writeback " Wanpeng Li
2013-03-19  9:25   ` Wanpeng Li
2013-03-19  9:25 ` [PATCH v4 6/8] staging: zcache: fix static variables defined in debug.h but used in mutiple C files Wanpeng Li
2013-03-19  9:25   ` Wanpeng Li
2013-03-19  9:25 ` [PATCH v4 7/8] staging: zcache: introduce zero-filled page stat count Wanpeng Li
2013-03-19  9:25   ` Wanpeng Li
2013-03-19  9:25 ` [PATCH v4 8/8] staging: zcache: clean TODO list Wanpeng Li
2013-03-19  9:25   ` Wanpeng Li
2013-03-19 23:34 ` Ric Mason [this message]
2013-03-19 23:34   ` [PATCH v4 0/8] staging: zcache: Support zero-filled pages more efficiently Ric Mason

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=5148F5EA.3020904@gmail.com \
    --to=ric.masonn@gmail.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=liwanp@linux.vnet.ibm.com \
    --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.