From: Seth Jennings <sjenning@linux.vnet.ibm.com> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>, Andrew Morton <akpm@linux-foundation.org>, Dan Magenheimer <dan.magenheimer@oracle.com>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>, Nitin Gupta <ngupta@vflare.org>, Minchan Kim <minchan@kernel.org>, Robert Jennings <rcj@linux.vnet.ibm.com>, linux-mm@kvack.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] zsmalloc: add single-page object fastpath in unmap Date: Mon, 2 Jul 2012 16:15:50 -0500 [thread overview] Message-ID: <1341263752-10210-3-git-send-email-sjenning@linux.vnet.ibm.com> (raw) In-Reply-To: <1341263752-10210-1-git-send-email-sjenning@linux.vnet.ibm.com> Improve zs_unmap_object() performance by adding a fast path for objects that don't span pages. Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com> --- drivers/staging/zsmalloc/zsmalloc-main.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/staging/zsmalloc/zsmalloc-main.c b/drivers/staging/zsmalloc/zsmalloc-main.c index a7a6f22..4942d41 100644 --- a/drivers/staging/zsmalloc/zsmalloc-main.c +++ b/drivers/staging/zsmalloc/zsmalloc-main.c @@ -774,6 +774,7 @@ void *zs_map_object(struct zs_pool *pool, unsigned long handle) } zs_copy_map_object(area->vm_buf, page, off, class->size); + area->vm_addr = NULL; return area->vm_buf; } EXPORT_SYMBOL_GPL(zs_map_object); @@ -788,6 +789,14 @@ void zs_unmap_object(struct zs_pool *pool, unsigned long handle) struct size_class *class; struct mapping_area *area; + area = &__get_cpu_var(zs_map_area); + if (area->vm_addr) { + /* single-page object fastpath */ + kunmap_atomic(area->vm_addr); + put_cpu_var(zs_map_area); + return; + } + BUG_ON(!handle); obj_handle_to_location(handle, &page, &obj_idx); @@ -795,11 +804,7 @@ void zs_unmap_object(struct zs_pool *pool, unsigned long handle) class = &pool->size_class[class_idx]; off = obj_idx_to_offset(page, obj_idx, class->size); - area = &__get_cpu_var(zs_map_area); - if (off + class->size <= PAGE_SIZE) - kunmap_atomic(area->vm_addr); - else - zs_copy_unmap_object(area->vm_buf, page, off, class->size); + zs_copy_unmap_object(area->vm_buf, page, off, class->size); put_cpu_var(zs_map_area); } EXPORT_SYMBOL_GPL(zs_unmap_object); -- 1.7.9.5
WARNING: multiple messages have this Message-ID (diff)
From: Seth Jennings <sjenning@linux.vnet.ibm.com> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>, Andrew Morton <akpm@linux-foundation.org>, Dan Magenheimer <dan.magenheimer@oracle.com>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>, Nitin Gupta <ngupta@vflare.org>, Minchan Kim <minchan@kernel.org>, Robert Jennings <rcj@linux.vnet.ibm.com>, linux-mm@kvack.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] zsmalloc: add single-page object fastpath in unmap Date: Mon, 2 Jul 2012 16:15:50 -0500 [thread overview] Message-ID: <1341263752-10210-3-git-send-email-sjenning@linux.vnet.ibm.com> (raw) In-Reply-To: <1341263752-10210-1-git-send-email-sjenning@linux.vnet.ibm.com> Improve zs_unmap_object() performance by adding a fast path for objects that don't span pages. Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com> --- drivers/staging/zsmalloc/zsmalloc-main.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/staging/zsmalloc/zsmalloc-main.c b/drivers/staging/zsmalloc/zsmalloc-main.c index a7a6f22..4942d41 100644 --- a/drivers/staging/zsmalloc/zsmalloc-main.c +++ b/drivers/staging/zsmalloc/zsmalloc-main.c @@ -774,6 +774,7 @@ void *zs_map_object(struct zs_pool *pool, unsigned long handle) } zs_copy_map_object(area->vm_buf, page, off, class->size); + area->vm_addr = NULL; return area->vm_buf; } EXPORT_SYMBOL_GPL(zs_map_object); @@ -788,6 +789,14 @@ void zs_unmap_object(struct zs_pool *pool, unsigned long handle) struct size_class *class; struct mapping_area *area; + area = &__get_cpu_var(zs_map_area); + if (area->vm_addr) { + /* single-page object fastpath */ + kunmap_atomic(area->vm_addr); + put_cpu_var(zs_map_area); + return; + } + BUG_ON(!handle); obj_handle_to_location(handle, &page, &obj_idx); @@ -795,11 +804,7 @@ void zs_unmap_object(struct zs_pool *pool, unsigned long handle) class = &pool->size_class[class_idx]; off = obj_idx_to_offset(page, obj_idx, class->size); - area = &__get_cpu_var(zs_map_area); - if (off + class->size <= PAGE_SIZE) - kunmap_atomic(area->vm_addr); - else - zs_copy_unmap_object(area->vm_buf, page, off, class->size); + zs_copy_unmap_object(area->vm_buf, page, off, class->size); put_cpu_var(zs_map_area); } EXPORT_SYMBOL_GPL(zs_unmap_object); -- 1.7.9.5 -- 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:[~2012-07-02 21:16 UTC|newest] Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-07-02 21:15 [PATCH 0/4] zsmalloc improvements Seth Jennings 2012-07-02 21:15 ` Seth Jennings 2012-07-02 21:15 ` [PATCH 1/4] zsmalloc: remove x86 dependency Seth Jennings 2012-07-02 21:15 ` Seth Jennings 2012-07-10 2:21 ` Minchan Kim 2012-07-10 2:21 ` Minchan Kim 2012-07-10 15:29 ` Seth Jennings 2012-07-10 15:29 ` Seth Jennings 2012-07-11 7:27 ` Minchan Kim 2012-07-11 7:27 ` Minchan Kim 2012-07-11 18:26 ` Nitin Gupta 2012-07-11 18:26 ` Nitin Gupta 2012-07-11 20:32 ` Seth Jennings 2012-07-11 20:32 ` Seth Jennings 2012-07-11 22:42 ` Nitin Gupta 2012-07-11 22:42 ` Nitin Gupta 2012-07-12 0:23 ` Seth Jennings 2012-07-12 0:23 ` Seth Jennings 2012-07-02 21:15 ` Seth Jennings [this message] 2012-07-02 21:15 ` [PATCH 2/4] zsmalloc: add single-page object fastpath in unmap Seth Jennings 2012-07-10 2:25 ` Minchan Kim 2012-07-10 2:25 ` Minchan Kim 2012-07-02 21:15 ` [PATCH 3/4] zsmalloc: add details to zs_map_object boiler plate Seth Jennings 2012-07-02 21:15 ` Seth Jennings 2012-07-10 2:35 ` Minchan Kim 2012-07-10 2:35 ` Minchan Kim 2012-07-10 15:17 ` Seth Jennings 2012-07-10 15:17 ` Seth Jennings 2012-07-11 7:42 ` Minchan Kim 2012-07-11 7:42 ` Minchan Kim 2012-07-11 14:15 ` Seth Jennings 2012-07-11 14:15 ` Seth Jennings 2012-07-12 1:15 ` Minchan Kim 2012-07-12 1:15 ` Minchan Kim 2012-07-12 19:54 ` Dan Magenheimer 2012-07-12 19:54 ` Dan Magenheimer 2012-07-12 22:46 ` Dan Magenheimer 2012-07-12 22:46 ` Dan Magenheimer 2012-07-02 21:15 ` [PATCH 4/4] zsmalloc: add mapping modes Seth Jennings 2012-07-02 21:15 ` Seth Jennings 2012-07-04 5:33 ` [PATCH 0/4] zsmalloc improvements Minchan Kim 2012-07-04 5:33 ` Minchan Kim 2012-07-04 20:43 ` Konrad Rzeszutek Wilk 2012-07-04 20:43 ` Konrad Rzeszutek Wilk 2012-07-06 15:07 ` Seth Jennings 2012-07-06 15:07 ` Seth Jennings 2012-07-09 13:58 ` Seth Jennings 2012-07-09 13:58 ` Seth Jennings 2012-07-11 19:42 ` Konrad Rzeszutek Wilk 2012-07-11 19:42 ` Konrad Rzeszutek Wilk 2012-07-11 20:48 ` Seth Jennings 2012-07-11 20:48 ` Seth Jennings 2012-07-12 10:40 ` Konrad Rzeszutek Wilk 2012-07-12 10:40 ` Konrad Rzeszutek Wilk 2012-07-11 7:03 ` Minchan Kim 2012-07-11 7:03 ` Minchan Kim 2012-07-11 14:00 ` Seth Jennings 2012-07-11 14:00 ` Seth Jennings 2012-07-12 1:01 ` Minchan Kim 2012-07-12 1:01 ` Minchan Kim 2012-07-11 19:16 ` Seth Jennings 2012-07-11 19:16 ` Seth Jennings
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=1341263752-10210-3-git-send-email-sjenning@linux.vnet.ibm.com \ --to=sjenning@linux.vnet.ibm.com \ --cc=akpm@linux-foundation.org \ --cc=dan.magenheimer@oracle.com \ --cc=devel@driverdev.osuosl.org \ --cc=gregkh@linuxfoundation.org \ --cc=konrad.wilk@oracle.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=minchan@kernel.org \ --cc=ngupta@vflare.org \ --cc=rcj@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: linkBe 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.