Wow, what a quick response!
The universal answer was use ipcs -m to list the shared memory IDs
allocated, and ipcrm -m to remove them. The man pages were
Also, in order to increase the number of allowed IDs, one needs to edit
/etc/system and reboot. Peter Tashkoff provided some info on what to
do; here are the related parameters as he passed them to me:
>shminfo_shmmax 131072 Maximum shared memory segment size
>shminfo_shmmin 1 Minimum shared memory segment size
>shminfo_shmmni 100 Number of shared memory identifiers
>shminfo_shmseg 6 Segments, per process
>reboot the system.
It turns out that around 90 to 95 of the default 100 are in use, mostly
from third-party software. I see that I'll be increasing the maximums.
Kevin Sheehan said:
>I would also recommend that you investigate mmap() for this application
>if you have source. No limits, and the memory is pageable...
Unfortunately, I am allocating this shared memory to pass to a
third-party routine, so that's not a usable alternative for me. Oscar
Goldes recommended merging many IDs into one big shared memory area,
which I can't do for the same reason.
Thanks to: Frank Pardo, David Willard, John Stoffel, Kevin Sheehan,
Michael Maciolek, Oscar Goldes, and Peter Tashkoff!
My original message:
>Apologies if this is not the right list for this..
>A custom program I've written uses shmget() to allocate shared memory. It's
>working anymore, returning ENOSPC, which according to the man page on shmget
> ENOSPC A shared memory identifier is to be created
> but the system-imposed limit on the maximum
> number of allowed shared memory identifiers
> system wide would be exceeded.
>How can I free up the shared memory IDs already allocated? Or increase the #
>allowable ones? I'd prefer not to reboot.
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:11:56 CDT