cgraf has asked for the wisdom of the Perl Monks concerning the following question:

Accidently posted this in the mediataions sections first. I'm using the IPC::ShareLite module to stored a serialised tree strucuture in shared memory. On Solaris the code works fine, I'm allocated a shared mem id that I can see using ipcs. However, on Mac OS X, lots of memory segements are produced and an error is given about too many open files, see below:
$ ./loadCodes IPC::ShareLite store() error: Too many open files at <.pm file> ^C $ ipcs SVID messages facility not configured in the system Shared Memory: T ID KEY MODE OWNER GROUP m 65536 1971 --rw-rw-rw- userx userx m 65537 1972 --rw-rw-rw- userx userx m 65538 1973 --rw-rw-rw- userx userx m 65539 1974 --rw-rw-rw- userx userx m 65540 1975 --rw-rw-rw- userx userx m 65541 1976 --rw-rw-rw-userx userx m 65542 1977 --rw-rw-rw-userx userx m 65543 1978 --rw-rw-rw- userx userx m 65544 1979 --rw-rw-rw- userx userx Semaphores: T ID KEY MODE OWNER GROUP s 131072 1971 --rw-rw-rw- userx userx
Any pointers would be appreciated. Thanks, Chris

Replies are listed 'Best First'.
Re: IPC::ShareLite & Shared Memory on Mac OS X
by perrin (Chancellor) on Aug 28, 2004 at 18:24 UTC
    I'm not sure why it doesn't work for you, but I would recommend you try something else. I have benchmarked several data-sharing modules based on IPC::ShareLite, and they are very slow. Try BerkeleyDB or Cache::FastMmap instead. Both are hundreds of times faster. A local MySQL database is also many times faster than a typical IPC::ShareLite module.