From 88974dc9a36759eaf2b0048b6ac45bc0c83cb537 Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Thu, 27 Mar 2025 21:58:22 +0100 Subject: [PATCH v6 3/7] align using CACHELINESIZE, to match ShmemAllocRaw --- src/backend/utils/hash/dynahash.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/backend/utils/hash/dynahash.c b/src/backend/utils/hash/dynahash.c index dcdc143e690..fc5575daaea 100644 --- a/src/backend/utils/hash/dynahash.c +++ b/src/backend/utils/hash/dynahash.c @@ -276,7 +276,7 @@ static long hash_accesses, /* XXX this is exactly the same as HASH_SEGMENT_OFFSET, unite? */ #define HASH_ELEMENTS_OFFSET(hctl, nsegs) \ - (sizeof(HASHHDR) + \ + CACHELINEALIGN(sizeof(HASHHDR) + \ ((hctl)->dsize * sizeof(HASHSEGMENT)) + \ ((hctl)->ssize * (nsegs) * sizeof(HASHBUCKET))) @@ -971,9 +971,11 @@ hash_get_init_size(const HASHCTL *info, int flags, long init_size, int nelem_all if (!element_alloc) init_size = 0; - return sizeof(HASHHDR) + dsize * sizeof(HASHSEGMENT) - + sizeof(HASHBUCKET) * ssize * nsegs - + init_size * elementSize; + /* enforce elements to be cacheline aligned */ + return CACHELINEALIGN(sizeof(HASHHDR) + + (dsize * sizeof(HASHSEGMENT)) + + (ssize * nsegs * sizeof(HASHBUCKET))) + + (init_size * elementSize); } -- 2.49.0