diff --git a/src/backend/storage/buffer/freelist.c b/src/backend/storage/buffer/freelist.c
index d64c2c67eb6..05b7995a9c8 100644
--- a/src/backend/storage/buffer/freelist.c
+++ b/src/backend/storage/buffer/freelist.c
@@ -103,24 +103,24 @@ typedef struct
         *
         * XXX firstBuffer + (nextVictimBuffer % numBuffers)
         */
-       pg_atomic_uint32 nextVictimBuffer;
+       pg_atomic_uint32 nextVictimBuffer pg_attribute_aligned(PG_CACHE_LINE_SIZE);
 
        /*
         * Statistics.  These counters should be wide enough that they can't
         * overflow during a single bgwriter cycle.
         */
        uint32          completePasses; /* Complete cycles of the clock-sweep */
-       pg_atomic_uint32 numBufferAllocs;       /* Buffers allocated since last reset */
+       pg_atomic_uint32 numBufferAllocs pg_attribute_aligned(PG_CACHE_LINE_SIZE);      /* Buffers allocated since last reset */
 
        /*
         * Buffers that should have been allocated in this partition (but might
         * have been redirected to keep allocations balanced).
         */
-       pg_atomic_uint32 numRequestedAllocs;
+       pg_atomic_uint32 numRequestedAllocs pg_attribute_aligned(PG_CACHE_LINE_SIZE);
 
        /* running total of allocs */
-       pg_atomic_uint64 numTotalAllocs;
-       pg_atomic_uint64 numTotalRequestedAllocs;
+       pg_atomic_uint64 numTotalAllocs pg_attribute_aligned(PG_CACHE_LINE_SIZE);
+       pg_atomic_uint64 numTotalRequestedAllocs pg_attribute_aligned(PG_CACHE_LINE_SIZE);
 
        /*
         * Weights to balance buffer allocations for all the partitions. Each

