Hi everyone, I'm trying to install a copy of PostgreSQL 7.3.8 on FC3 x86_64, and having a very strange problem with shared memory in that PostgreSQL seems to be taking far too many semaphores for the parameters in the postgresql.conf file. I've raised this with some of the members of the IRC channel, and they have been unable to explain why this is happening.
Using the default parameters from a fresh initdb, if I increase shared buffers much above 1000 then the postmaster refuses to start with the following error: ----- IpcSemaphoreCreate: semget(key=5433025, num=17, 03600) failed: No space left on device This error does *not* mean that you have run out of disk space. It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter (currently 32). The PostgreSQL Administrator's Guide contains more information about configuring your system for PostgreSQL. ----- Even when I have increased the values of SEMMNI and SEMMNS far above their default values, the postmaster still refuses to start. When I drop shared_buffers back to 1000, the postmaster starts but takes 127(??!) different semaphores arrays each with 17 elements (as listed using ipcs). To check this, I installed the same source on a FC1 i386 machine to do a comparison, using my original shared_buffers value of 10000, and found that a successfully running postmaster only takes 3 semaphore arrays with 17 elements. Digging into the source, I added an elog() at line 227 in src/backend/port/sysv_sema.c and found that on the FC1 i386 machine, the loop in IpcSemaphoreCreate() is called only 3 times. Doing the same on the FC3 x86_64 machine, the loop seems to cycle endlessly until I run out of semaphores. Can anyone suggest a reason why the behaviour is so different between FC3 x86_64 and FC1 i386? I'm thinking it may be either to do with the x86_64 platform or perhaps the newer version of gcc used to compile from source. Any pointers in the right direction would be gratefully received :) Kind regards, Mark. ------------------------ WebBased Ltd South West Technology Centre Tamar Science Park Plymouth PL6 8BT T: +44 (0)1752 791021 F: +44 (0)1752 791023 W: http://www.webbased.co.uk ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster