Re: [PATCH] Make ENOSPC not fatal in semaphore creation - Mailing list pgsql-hackers

From Mikhail
Subject Re: [PATCH] Make ENOSPC not fatal in semaphore creation
Date
Msg-id YXQs/DSCM+FUiGrF@edge.lab.local
Whole thread Raw
In response to Re: [PATCH] Make ENOSPC not fatal in semaphore creation  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On Fri, Oct 22, 2021 at 09:00:31PM -0400, Tom Lane wrote:
> I tried this on an OpenBSD 6.0 image I had handy.  The good news is
> that it works, and I can successfully start the postmaster with a lot
> of semaphores (I tried with max_connections=10000) without any special
> system configuration.  The bad news is it's *slow*.  It takes the
> postmaster over a minute to start up at 10000 max_connections, and
> also about 15 seconds to shut down.  The regression tests also appear
> noticeably slower, even at the default max_connections=100.  I'm
> afraid that those "lots of tiny mappings" that Thomas noted have
> a nasty impact on our process launch times, since the kernel
> presumably has to do work to clone them into the child process.
> 
> Now this lashup that I'm testing on is by no means well suited for
> performance tests, so maybe my numbers are bogus.  Also, maybe it's
> better in more recent OpenBSD releases.  But I think we need to take a
> harder look at performance before we decide that it's okay to change
> the default semaphore type for this platform.

I got following results for "time make installcheck" on a laptop with
OpenBSD 7.0 (amd64):

POSIX (max_connections=100) (default):    1m32.39s real 0m03.82s user 0m05.75s system
POSIX (max_connections=10000):        2m13.11s real 0m03.56s user 0m07.06s system

SysV (max_connections=100) (default):    1m24.39s real 0m03.30s user 0m04.94s system
SysV (max_connections=10000):        failed to start
after sysctl tunning:
SysV (max_connections=10000):        1m47.51s real 0m03.78s user 0m05.61s system

I can confirm that start and stop of the server was slower in POSIX
case, but not terribly different (seconds, not a minute, as in your
case).

As the OpenBSD developers said - those who use OpenBSD are never after a
good performance, the system has a lot of bottlenecks except IPCs.

I see following reasons to switch from SysV to POSIX:

- consistency in the ports tree, all major ports use POSIX, it means
  better testing of the API
- as already pointed out - OpenBSD isn't about performance, and the
  results for default max_connections are pretty close
- crash recovery with the OS defaults is automatic and don't require DBA
  intervention and knowledge of ipcs and ipcrm
- higher density is available without system tuning

The disadvantage is in a worse performance for extreme cases, but I'm
not sure OpenBSD is used for them in production.



pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: XTS cipher mode for cluster file encryption
Next
From: Bruce Momjian
Date:
Subject: Re: XTS cipher mode for cluster file encryption