Re: Shared memory usage calculations - Mailing list pgsql-docs

From Thom Brown
Subject Re: Shared memory usage calculations
Date
Msg-id bddc86150910100729x87dbe74v871af1add0ce0d74@mail.gmail.com
Whole thread Raw
In response to Re: Shared memory usage calculations  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Shared memory usage calculations
List pgsql-docs
2009/10/10 Tom Lane <tgl@sss.pgh.pa.us>
Thom Brown <thombrown@gmail.com> writes:
> I've had a look at the documentation for how much shared memory (in bytes)
> Postgres uses:
> http://www.postgresql.org/docs/8.4/static/kernel-resources.html#SHARED-MEMORY-PARAMETERS
> However, after using these calculations to work out the shared memory usage
> for my own setup, the numbers I came up with are clearly wrong.

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

pgsql-docs by date:

Previous
From: Tom Lane
Date:
Subject: Re: Shared memory usage calculations
Next
From: Tom Lane
Date:
Subject: Re: Shared memory usage calculations