Re: [PATCH 4/4] zsmalloc: zsmalloc: align cache line size

From: Nitin Gupta
Date: Thu May 03 2012 - 09:58:24 EST


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@xxxxxxxxxx>
---
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;


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/