2009/10/10 Tom Lane
<tgl@sss.pgh.pa.us>Clearly wrong compared to what --- ie, what's the actual size of your
shared memory segment? (See ipcs)
I don't actually know the size of my shared memory segment. "sysctl -a | grep -i shmseg" doesn't return anything as it hasn't been set, and not sure how to find out the default value. I didn't see that mentioned in the calculations so I didn't take it into account anywhere. But 1.7TB shared memory can't be right as the entire system memory is only 720MB.
> If I convert the sizes to kilobytes instead of bytes, it shows a total value
> of 47 megabytes, which, while not extreme, looks too low. And I am
> surprised that max_connections has relatively little bearing on the shared
> memory requirements. Is this right, or should is it more a case of it
> affecting semaphores? I was under the impression that the maximum number of
> connections played a large role in deciding shared memory limits.
No, it doesn't really ... shared_buffers is the first-order component.
Also, I'm not sure whether you realize that the native unit for these
numbers is mostly *not* bytes.
> shared_buffers = 196000000 (196MB)
> wal_buffers = 8000000 (8MB)
Neither of those parenthetical remarks are correct if that's exactly
what you wrote in postgresql.conf. It might be worth checking the
way these values are displayed in pg_settings.
The parenthesised values are what I have in postgresql.conf. I take it these are supposed to be mebibytes then? When I check the value in pg_settings, it's set at 25088 with the unit set at 8kB is 196 mebibytes. It also shows wal_buffers at 1024 with 8kB units, which would be 8 mebibytes.
I gather I'm calculating the final value wrong though. :/
Thom