lkml.org 
[lkml]   [2012]   [May]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 4/4] zsmalloc: zsmalloc: align cache line size
On 5/3/12 2:40 AM, Minchan Kim wrote:
> It's a overkill to align pool size with PAGE_SIZE to avoid
> false-sharing. This patch aligns it with just cache line size.
>
> Signed-off-by: Minchan Kim<minchan@kernel.org>
> ---
> drivers/staging/zsmalloc/zsmalloc-main.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/zsmalloc/zsmalloc-main.c b/drivers/staging/zsmalloc/zsmalloc-main.c
> index 51074fa..3991b03 100644
> --- a/drivers/staging/zsmalloc/zsmalloc-main.c
> +++ b/drivers/staging/zsmalloc/zsmalloc-main.c
> @@ -489,14 +489,14 @@ fail:
>
> struct zs_pool *zs_create_pool(const char *name, gfp_t flags)
> {
> - int i, error, ovhd_size;
> + int i, error;
> struct zs_pool *pool;
>
> if (!name)
> return NULL;
>
> - ovhd_size = roundup(sizeof(*pool), PAGE_SIZE);
> - pool = kzalloc(ovhd_size, GFP_KERNEL);
> + pool = kzalloc(ALIGN(sizeof(*pool), cache_line_size()),
> + GFP_KERNEL);

a basic question:
Is rounding off allocation size to cache_line_size enough to ensure
that the object is cache-line-aligned? Isn't it possible that even
though the object size is multiple of cache-line, it may still not be
properly aligned and end up sharing cache line with some other
read-mostly object?

Thanks,
Nitin


> if (!pool)
> return NULL;
>



\
 
 \ /
  Last update: 2012-05-03 16:01    [W:0.145 / U:0.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site