[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [hobbit] broke it :(

On Wed, Aug 10, 2005 at 10:22:58AM -0400, Lee J. Imber wrote:
> After trying and retrying my test scripts I seems to have made hobbit  
> upset.
> 2005-08-10 10:17:41 Setting up hobbitd channels
> 2005-08-10 10:17:41 Could not get sem: No space left on device
> 2005-08-10 10:17:41 Cannot setup status channel

This is a problem with the amount of SYSV-IPC (inter-process
communication) channels that Hobbit is trying to allocate.

I've added an extra channel and increased the size of the 
shared-memory buffers lately, which explains why it breaks
with the current snapshot, but works with 4.1.1.

Hobbit now uses 7 shared memory segments - one is 1 MB, the other 
6 are 256 KB, for a total of 2.5 MB. Plus 7 sets of 3 semaphores.

The amount of shared memory and semaphores available is limited both on 
a system-wide basis, and on a per-process basis. These parameters are
named pretty standard across platforms:

SHMMNI: Number of shared memory segments (total in system)
SHMSEG: Max. number of shared memory segs. per process.
SHMMAX: Max. size (in bytes) of a single shared memory segment.

SEMMNS: Total number of semaphores available in a system
SEMMNI: Total number of semaphore sets available (one set
        contains one or more individual semaphores)

How you tune these depends on what operating system you're using.
The PostgreSQL database has the same problem, and a good overview
of how to resolve it can be found in their documentation, e.g.

BSD-based systems: See

Solaris: See http://www.sun-microsystems.org/Tutorials/soltune/sysvipc.html
It seems that you MUST change the SHMSEG since the default is 6,
and Hobbit needs 7.

Linux: Should work fine with the default settings, but if not then
it's the parameters in /proc/sys/kernel/{sem,shmall,shmmni,shmmax}
that need tweaking.

HP-UX: I think the default settings work fine.
See http://docs.hp.com/en/939/KCParms/KCparams.OverviewAll.html

AIX: Judging from the Postgresql docs, this should work without any