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.