Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
kernel shared memory calculator
#!/bin/bash
# http://archives.postgresql.org/pgsql-admin/2010-05/msg00285.php
# 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
@gingerlime

This comment has been minimized.

Show comment
Hide comment
@gingerlime

gingerlime Jun 15, 2013

Thanks for sharing this! really useful to automate deployment of postgresql and automatically detect and adjust shared memory kernel settings.

Thanks for sharing this! really useful to automate deployment of postgresql and automatically detect and adjust shared memory kernel settings.

@NanXiao

This comment has been minimized.

Show comment
Hide comment
@NanXiao

NanXiao Jan 15, 2016

A useful script!

NanXiao commented Jan 15, 2016

A useful script!

@Marckchile

This comment has been minimized.

Show comment
Hide comment

Thanks!

@kopax

This comment has been minimized.

Show comment
Hide comment
@kopax

kopax Jun 13, 2016

Thanks for sharing, can this be used inside a docker container running PostgreSQL?

kopax commented Jun 13, 2016

Thanks for sharing, can this be used inside a docker container running PostgreSQL?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment