Re: Estimating HugePages Requirements?

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: "Bossart, Nathan" <bossartn@amazon.com>
Cc: Justin Pryzby <pryzby@telsasoft.com>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, "tgl@sss.pgh.pa.us" <tgl@sss.pgh.pa.us>, "robertmhaas@gmail.com" <robertmhaas@gmail.com>, "masao.fujii@oss.nttdata.com" <masao.fujii@oss.nttdata.com>, "andres@anarazel.de" <andres@anarazel.de>, "magnus@hagander.net" <magnus@hagander.net>, "mark.dilger@enterprisedb.com" <mark.dilger@enterprisedb.com>, "don@seiler.us" <don@seiler.us>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2021-09-17T02:20:30Z
Lists: pgsql-hackers
On Thu, Sep 16, 2021 at 09:26:56PM +0000, Bossart, Nathan wrote:
> I'm not sure I agree on this one.  The documentation for huge_pages
> [0] and shared_memory_type [1] uses the same phrasing multiple times,
> and the new shared_memory_size GUC uses it as well [2].  I don't see
> anything in the documentation that suggests that shared_buffers is the
> only thing in the main shared memory area, and the documentation for
> setting up huge pages makes no mention of any extra memory that needs
> to be considered, either.

Looks rather sane to me, FWIW.  I have not tested on Linux properly
yet (not tempted to take my bets on the buildfarm on a Friday,
either), but I should be able to handle that at the beginning of next
week.

+   GetHugePageSize(&hp_size, &unused);
+   if (hp_size != 0)
I'd rather change GetHugePageSize() to be able to accept NULL for the
parameter values, rather than declaring such variables.

+    To determine the number of huge pages needed, use the
+    <command>postgres</command> command to see the value of
+    <xref linkend="guc-shared-memory-size-in-huge-pages"/>.
We may want to say as well here that the server should be offline?
It would not hurt to duplicate this information with
postgres-ref.sgml.

+        This setting is supported only on Linux.  It is always set to
Nit: This paragraph is missing two <productname>s for Linux.  The docs
are random about that, but these are new entries.
--
Michael

Commits

  1. Silence extra logging when using "postgres -C" on runtime-computed GUCs

  2. doc: Improve postgres command for shared_memory_size_in_huge_pages

  3. Introduce GUC shared_memory_size_in_huge_pages

  4. Support "postgres -C" with runtime-computed GUCs

  5. Make shared_memory_size a preset option

  6. Introduce GUC shared_memory_size

  7. Move the shared memory size calculation to its own function

  8. Add new GUC, max_worker_processes, limiting number of bgworkers.