Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Jun 2005 23:13:23 -0400
From:      Louis LeBlanc <FreeBSD@keyslapper.net>
To:        freebsd-questions@freebsd.org
Subject:   Re: Perl 5.8.6 to 5.8.7 upgrade fails IPC tests
Message-ID:  <20050627031323.GA1156@keyslapper.net>
In-Reply-To: <20050626163239.T1138@sotec.home>
References:  <20050626191706.GB89575@keyslapper.net> <20050626223917.3b50913b.albi@scii.nl> <20050626205620.GC89575@keyslapper.net> <20050626142104.L1638@sotec.home> <20050626224825.GB970@keyslapper.net> <20050626163239.T1138@sotec.home>

next in thread | previous in thread | raw e-mail | index | archive | help

--gKMricLos+KVdGMg
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 06/26/05 04:50 PM, Mikko Tyljrvi sat at the `puter and typed:
> > <SNIP>
> > This certainly does make sense, but I'm not sure I'm actually running
> > short here.  I have SYSVSEM in my kernel (as well as SYSVSHM and
> > SYSVMSG), and the relevant sysctls are:
> >
> > kern.ipc.semmap: 30
> > kern.ipc.semmni: 10
> > kern.ipc.semmns: 60
> > kern.ipc.semmnu: 30
> > kern.ipc.semmsl: 60
> > kern.ipc.semopm: 100
> > kern.ipc.semume: 10
> > kern.ipc.semusz: 92
> > kern.ipc.semvmx: 32767
> > kern.ipc.semaem: 16384
>=20
> Ok, looks like the default settings, which are often too low for
> anything that makes heavy use of SYSV IPCs...
>=20
> >
> > <root># ipcs -S
> > seminfo:
> >        semmap:     30  (# of entries in semaphore map)
> >        semmni:     10  (# of semaphore identifiers)
> >        semmns:     60  (# of semaphores in system)
> >        semmnu:     30  (# of undo structures in system)
> >        semmsl:     60  (max # of semaphores per id)
> >        semopm:    100  (max # of operations per semop call)
> >        semume:     10  (max # of undo entries per process)
> >        semusz:     92  (size in bytes of undo structure)
> >        semvmx:  32767  (semaphore maximum value)
> >        semaem:  16384  (adjust on exit max value)
> >
> > <root># ipcs -s
> > Semaphores:
> > T     ID     KEY        MODE       OWNER    GROUP
> > s  65536    5432001 --rw-------    pgsql    pgsql
> > s  65537    5432002 --rw-------    pgsql    pgsql
> > s  65538    5432003 --rw-------    pgsql    pgsql
>=20
> ... such as databases :-)
>=20
> Have a look at /usr/ports/databases/postgresql80-server/pkg-message-server
> for some sample settings.
>=20
> > Near as I can tell, this tells me I have at least 60 semaphores
> > systemwide, 60 per id, 3 in use, none of which are being used by root
> > (which is who I am running the test as).  Shouldn't that leave 57 for
> > the perl tests?
>=20
> Not necessarily.  The SYSV IPCs is a particularly vicious piece of
> poor engineering.
>=20
> Semaphores come in sets containing one or more semaphore.  With your
> settings you can have at most 10 sets, and a total of at most 60
> semaphores, and at most 60 per set, and at most 30... something else.
> Also, at most 30 locks can be released in case a process unexpectedly
> exits.
>=20
> Easy, right?
>=20
> Looks like you'll have to use "ipcs -sa" to see the "NSEMS" column,
> which should tell you how many semaphores are in use.
>=20
> > How many does it need to open?
>=20
> No idea.  Read the code or just raise the retarded limits by a lot.
> Or try stopping postgres while running the tests.
>=20
>    $.02,
And then some.

You called this one right on the nose.

ipcs -sa showed each of the 3 pgsql processes were using 17 semaphores
(NSEMS column) wich really did cut things down.  The
pkg-message-server file shed some light too.

I first shut down postgres, then ran the test, and everything worked
fine.  Then I added the 3 lines below to /boot/loader.conf, then
rebooted and ran the tests again with postgres still running, and
everything worked fine again.

kern.ipc.semmns=3D240
kern.ipc.semume=3D40
kern.ipc.semmnu=3D120

So, I suspect I have enough semaphores for awhile now:
$ ipcs -S
seminfo:
        semmap:     30  (# of entries in semaphore map)
        semmni:     10  (# of semaphore identifiers)
        semmns:    240  (# of semaphores in system)
        semmnu:    120  (# of undo structures in system)
        semmsl:     60  (max # of semaphores per id)
        semopm:    100  (max # of operations per semop call)
        semume:     40  (max # of undo entries per process)
        semusz:     92  (size in bytes of undo structure)
        semvmx:  32767  (semaphore maximum value)
        semaem:  16384  (adjust on exit max value)


Thanks again.

Lou
--=20
Louis LeBlanc                          FreeBSD-at-keyslapper-DOT-net
Fully Funded Hobbyist,                   KeySlapper Extrordinaire :)
Please send off-list email to:         leblanc at keyslapper d.t net
Key fingerprint =3D C5E7 4762 F071 CE3B ED51  4FB8 AF85 A2FE 80C8 D9A2

Logg's Rebuttal to Gray's Law:
  `n+1' trivial tasks take twice as long as `n' trivial tasks.

--gKMricLos+KVdGMg
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (FreeBSD)

iD8DBQFCv27Tr4Wi/oDI2aIRAtrrAJ99ISd0Eb9MSzol4JeimhhfYW3PGQCbBdAy
y8kozDy3XLcA72hNX9fxOTo=
=T2I3
-----END PGP SIGNATURE-----

--gKMricLos+KVdGMg--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050627031323.GA1156>