kern/121423: Cann't allocate more 2 Gb shared memory

Dmitry Rybin dimanenator at gmail.com
Thu Mar 6 09:40:01 UTC 2008


>Number:         121423
>Category:       kern
>Synopsis:       Cann't allocate more 2  Gb shared memory
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Mar 06 09:40:00 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Dmitry Rybin
>Release:        7.0-RELEASE
>Organization:
Kirgudu Co
>Environment:
FreeBSD cayman.asd.net 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 10:35:36 UTC 2008     root at driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd6
>Description:
Any programm which use SHARED MEMORY cann't allocate more 2 Gb of Shared memory.

as example starting postgres with 2GB shmem:
Mar  6 10:46:42 cayman postgres[1486]: [1-1] FATAL:  could not create shared memory segment: Invalid argument
Mar  6 10:46:42 cayman postgres[1486]: [1-2] DETAIL:  Failed system call was shmget(key=5432001, size=2157543424, 03600).
Mar  6 10:46:42 cayman postgres[1486]: [1-3] HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter. 
Mar  6 10:46:42 cayman postgres[1486]: [1-4]  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently
Mar  6 10:46:42 cayman postgres[1486]: [1-5]  2157543424 bytes), reduce PostgreSQL's shared_buffers parameter (currently 256000) and/or its max_connections parameter
Mar  6 10:46:42 cayman postgres[1486]: [1-6]  (currently 83).
Mar  6 10:46:42 cayman postgres[1486]: [1-7]    If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising
Mar  6 10:46:42 cayman postgres[1486]: [1-8]  the request size or reconfiguring SHMMIN is called for.
Mar  6 10:46:42 cayman postgres[1486]: [1-9]    The PostgreSQL documentation contains more information about shared memory configuration.

# sysctl -a|grep ipc.sem
kern.ipc.semaem: 16384
kern.ipc.semvmx: 32767
kern.ipc.semusz: 104
kern.ipc.semume: 10
kern.ipc.semopm: 100
kern.ipc.semmsl: 60
kern.ipc.semmnu: 256
kern.ipc.semmns: 512
kern.ipc.semmni: 256
kern.ipc.semmap: 512

sysctl -a|grep shm
kern.ipc.shm_allow_removed: 0
kern.ipc.shm_use_phys: 1
kern.ipc.shmall: 65536000
kern.ipc.shmseg: 128
kern.ipc.shmmni: 192
kern.ipc.shmmin: 1
kern.ipc.shmmax: 268435456010

Hardware:
HP360R05 2 Quad Core Xeon, 8Gb mem, HP p800i raid
>How-To-Repeat:
1. Install FreeBSD 7
2. Install Posgress 8.3

3 . postgresql.conf
    shared_buffers = 2200MB

4. edit sysctl
# sysctl -a|grep ipc.sem
kern.ipc.semaem: 16384
kern.ipc.semvmx: 32767
kern.ipc.semusz: 104
kern.ipc.semume: 10
kern.ipc.semopm: 100
kern.ipc.semmsl: 60
kern.ipc.semmnu: 256
kern.ipc.semmns: 512
kern.ipc.semmni: 256
kern.ipc.semmap: 512

sysctl -a|grep shm
kern.ipc.shm_allow_removed: 0
kern.ipc.shm_use_phys: 1
kern.ipc.shmall: 65536000
kern.ipc.shmseg: 128
kern.ipc.shmmni: 192
kern.ipc.shmmin: 1
kern.ipc.shmmax: 268435456010

5. start postgress
>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list