Michael Paquier <michael@paquier.xyz> writes:
> On Sun, Mar 04, 2018 at 03:31:31PM -0500, Tom Lane wrote:
>> ... But what I would argue is that
>> of those three choices, the least defensible one is max_wal_senders = 10.
>> Where did that come from? What fraction of real-world installations will
>> need that? We don't choose defaults that overprovision small
>> installations by 5X or 10X anywhere else, so why here?
> Those numbers are coming from f6d6d29, which points to this thread at
> its root:
> https://www.postgresql.org/message-id/CABUevEwfV7zDutescm2PHGvsJdYA0RWHFMTRGhwrJPGgSbzZDQ%40mail.gmail.com
> The number of max_wal_senders came out as a consensus because those are
> cheap to enable, now the number came out by itself. I am not seeing on
> the thread any specific reason behind.
I don't doubt that the amount of shared memory involved is negligible,
but I'm less sure that there's no impact at all from overprovisioning
max_wal_senders. What I see in the code is a lot of places iterating
over each walsender slot and taking a spinlock on each slot, whether
or not the slot is used (or ever has been used). Are we sure that
none of those places are performance hot spots?
AFAICS from a quick spin through the above-mentioned thread, there
was little discussion of the exact value to set max_wal_senders to,
and no performance testing of the point.
regards, tom lane