Re: Estimating HugePages Requirements?

Magnus Hagander <magnus@hagander.net>

From: Magnus Hagander <magnus@hagander.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Julien Rouhaud <rjuju123@gmail.com>, Don Seiler <don@seiler.us>, pgsql-admin <pgsql-admin@postgresql.org>
Date: 2021-06-09T19:30:52Z
Lists: pgsql-hackers
On Wed, Jun 9, 2021 at 9:28 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> Magnus Hagander <magnus@hagander.net> writes:
> > On Wed, Jun 9, 2021 at 9:15 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> >> Just try to start the server and see if it complains.
>
> > Well, I have to *stop* the existing one first, most likely, otherwise
> > there won't be enough huge pages (or indeed memory) available.
>
> I'm not following.  If you have a production server running, its
> pg_shmem_allocations total should already be a pretty good guide
> to what you need to configure HugePages for.  You need to know to
> round that up, of course --- but if you aren't building a lot of
> slop into the HugePages configuration anyway, you'll get burned
> down the road.

I'm talking about the case when you want to *change* the value for
shared_buffers (or other parameters that would change the amount of
required huge pages), on a system where you're using huge pages.
pg_shmem_allocations will tell you what you need with the current
value, not what you need with the new value.

But yes, you can do some math around it and make a well educated
guess. But it would be very convenient to have the system able to do
that for you.

-- 
 Magnus Hagander
 Me: https://www.hagander.net/
 Work: https://www.redpill-linpro.com/



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.