Thank you so much for the script. 

~deepak

On Jan 22, 2011, at 10:18 AM, Greg Smith <g...@2ndquadrant.com> wrote:

> DM wrote:
>> RAM = 16GB, what value should i set for shmall?
> 
> Given that PostgreSQL rarely sees increasing improvement as shared_buffers 
> goes over 50% of RAM, I just use that figure for the shmall and then compute 
> shmmax based on the page size to match it.  I use the attached script to do 
> all the hard work, haven't found a Linux system yet it didn't do the right 
> thing on.  It sounds like you might have the math on the relation between the 
> two backwards, look at the output and code of this once and that should sort 
> things out for you.
> 
> -- 
> Greg Smith   2ndQuadrant US    g...@2ndquadrant.com   Baltimore, MD
> PostgreSQL Training, Services, and 24x7 Support  www.2ndQuadrant.us
> "PostgreSQL 9.0 High Performance": http://www.2ndQuadrant.com/books
> 
> #!/bin/bash
> 
> # Output lines suitable for sysctl configuration based
> # on total amount of RAM on the system.  The output
> # will allow up to 50% of physical memory to be allocated
> # into shared memory.
> 
> # On Linux, you can use it as follows (as root):
> # 
> # ./shmsetup >> /etc/sysctl.conf
> # sysctl -p
> 
> # Early FreeBSD versions do not support the sysconf interface
> # used here.  The exact version where this works hasn't
> # been confirmed yet.
> 
> page_size=`getconf PAGE_SIZE`
> phys_pages=`getconf _PHYS_PAGES`
> 
> if [ -z "$page_size" ]; then
>  echo Error:  cannot determine page size
>  exit 1
> fi
> 
> if [ -z "$phys_pages" ]; then
>  echo Error:  cannot determine number of memory pages
>  exit 2
> fi
> 
> shmall=`expr $phys_pages / 2`
> shmmax=`expr $shmall \* $page_size` 
> 
> echo \# Maximum shared segment size in bytes
> echo kernel.shmmax = $shmmax
> echo \# Maximum number of shared memory segments in pages
> echo kernel.shmall = $shmall

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to