diff --git a/src/backend/storage/buffer/buf_init.c b/src/backend/storage/buffer/buf_init.c
new file mode 100644
index ff6c713..c4dce5b
*** a/src/backend/storage/buffer/buf_init.c
--- b/src/backend/storage/buffer/buf_init.c
*************** InitBufferPool(void)
*** 67,72 ****
--- 67,73 ----
  	bool		foundBufs,
  				foundDescs;
  
+ 	fprintf(stderr, "Buffer Descriptors size = %ld\n", sizeof(BufferDesc));
  	BufferDescriptors = (BufferDesc *)
  		ShmemInitStruct("Buffer Descriptors",
  						NBuffers * sizeof(BufferDesc), &foundDescs);
diff --git a/src/backend/storage/ipc/shmem.c b/src/backend/storage/ipc/shmem.c
new file mode 100644
index 2ea2216..50f836e
*** a/src/backend/storage/ipc/shmem.c
--- b/src/backend/storage/ipc/shmem.c
*************** ShmemInitStruct(const char *name, Size s
*** 327,332 ****
--- 327,335 ----
  	ShmemIndexEnt *result;
  	void	   *structPtr;
  
+ 	if (strcmp(name, "Buffer Descriptors") == 0)
+ 		size = BUFFERALIGN(size) + 64;
+ 
  	LWLockAcquire(ShmemIndexLock, LW_EXCLUSIVE);
  
  	if (!ShmemIndex)
*************** ShmemInitStruct(const char *name, Size s
*** 413,418 ****
--- 416,429 ----
  							" \"%s\" (%zu bytes requested)",
  							name, size)));
  		}
+ 		if (strcmp(name, "Buffer Descriptors") == 0)
+ 		{
+ 			/* align on 64 */
+ 			if ((int64)structPtr % 64 != 0)
+ 				structPtr = (void *)((int64)structPtr + 64 - (int64)structPtr % 64);
+ 		}
+ 		fprintf(stderr, "shared memory alignment of %s:  %ld-byte\n", name,
+ 			(int64)structPtr % 64 == 0 ? 64 : (int64)structPtr % 64);
  		result->size = size;
  		result->location = structPtr;
  	}
