From 9de6708390885415dc6737fcdb96a53ce565a7c2 Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Tue, 3 May 2016 12:21:17 +0400 Subject: [PATCH] MDEV-9857 - CACHE_LINE_SIZE in innodb should be 128 on POWER Replaced hard-coded cache line size. Changes based on Daniel Black's work. --- include/lf.h | 7 ++----- mysys/lf_alloc-pin.c | 1 - storage/perfschema/pfs_global.h | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/include/lf.h b/include/lf.h index 19bdafce647b6..1825de62b439c 100644 --- a/include/lf.h +++ b/include/lf.h @@ -68,11 +68,8 @@ typedef struct { void *purgatory; uint32 purgatory_count; uint32 volatile link; -/* we want sizeof(LF_PINS) to be 128 to avoid false sharing */ - char pad[128-sizeof(uint32)*2 - -sizeof(LF_PINBOX *) - -sizeof(void*) - -sizeof(void *)*(LF_PINBOX_PINS+1)]; + /* avoid false sharing */ + char pad[CPU_LEVEL1_DCACHE_LINESIZE]; } LF_PINS; /* compile-time assert to make sure we have enough pins. */ diff --git a/mysys/lf_alloc-pin.c b/mysys/lf_alloc-pin.c index b349ef88ed13f..932dfe0f254a0 100644 --- a/mysys/lf_alloc-pin.c +++ b/mysys/lf_alloc-pin.c @@ -121,7 +121,6 @@ void lf_pinbox_init(LF_PINBOX *pinbox, uint free_ptr_offset, lf_pinbox_free_func *free_func, void *free_func_arg) { DBUG_ASSERT(free_ptr_offset % sizeof(void *) == 0); - compile_time_assert(sizeof(LF_PINS) == 128); lf_dynarray_init(&pinbox->pinarray, sizeof(LF_PINS)); pinbox->pinstack_top_ver= 0; pinbox->pins_in_array= 0; diff --git a/storage/perfschema/pfs_global.h b/storage/perfschema/pfs_global.h index f3326c5589f94..7373f459599d3 100644 --- a/storage/perfschema/pfs_global.h +++ b/storage/perfschema/pfs_global.h @@ -31,7 +31,7 @@ extern bool pfs_initialized; extern size_t pfs_allocated_memory; #if defined(HAVE_POSIX_MEMALIGN) || defined(HAVE_MEMALIGN) || defined(HAVE_ALIGNED_MALLOC) -#define PFS_ALIGNEMENT 64 +#define PFS_ALIGNEMENT CPU_LEVEL1_DCACHE_LINESIZE #define PFS_ALIGNED MY_ALIGNED(PFS_ALIGNEMENT) #else /*