Fix unnecessary shared memory page allocation in CalculateShmemSize()

From: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
To: pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Fix unnecessary shared memory page allocation in CalculateShmemSize()
Date: 2026-09-14 07:19:03
Message-ID: F132EBB6-47EB-4DF8-8C8D-3DE698265A2B@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

I just noticed this item when I went through my TODO list today. I remember finding this issue a few months ago, but at that time, only bugs new to PG19 were being processed, so I put it on my TODO list.

This is a small issue, but it has been there for many years. CalculateShmemSize() has logic to round size to a multiple of a typical page size:
```
/* might as well round it off to a multiple of a typical page size */
size = add_size(size, 8192 - (size % 8192));
```

When size is already a multiple of 8192, this add_size() call is not needed; it only results in an extra 8192 bytes being allocated in shared memory. The fix is simple:
```
if (size % 8192 != 0)
/* might as well round it off to a multiple of a typical page size */
size = add_size(size, 8192 - (size % 8192));
```

I put the comment within the if clause because I remember Tom once mentioning that this would be the preferred style.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

Attachment Content-Type Size
v1-0001-Avoid-extra-shared-memory-page-in-CalculateShmemS.patch application/octet-stream 1.2 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Osama Abdul Qader 2026-09-14 07:26:11 Re: Fix unnecessary shared memory page allocation in CalculateShmemSize()
Previous Message Michael Paquier 2026-09-14 07:08:10 Re: Translation of the NextOID message in pg_controldata