PVM_SHMD(1PVM) PVM Version 3.4 PVM_SHMD(1PVM)NAMEpvm_shmd - PVM shared memory (2) daemon
SYNOPSISpvm_shmd [ -options ] [ hostfile ]
DESCRIPTION
Pvm_shmd is a daemon process which maintains and handles the usage of
shared memory resources (memory segments, semaphores, message queues)
on a particular PVM host. One pvm_shmd must run on each host in a vir‐
tual machine that wants to use the shmd shared memory message passing
layer. The shmd message passing layer allows local processes to a host
to use shared memory for message passing on that host ONLY. See the
shmd directory README for further notes and restrictions.
The daemon can be started manually as with any other PVM task. Only
one pvm_shmd can be active per host. If the pvm_shmd detects another
pvm_shmd it will shutdown.
The pvm_shmd can be killed from the PVM console by using the reset com‐
mand. Local and remote pvm_shmds can also be started from the PVM con‐
sole program pvm.
The name of the daemon executable is pvm_shmd.
Shared Resource Usage
The pvm_shmd will attempt to create upto MAXSEG shared memory segments
of upto MAXPAGES memory pages in size. The size of each memory page is
architecture dependent(see getpagesize(3C)). The segments are then
numbered 0..N-1 where N is the number of segments created. The first
segement (0) has the shared memory control structure placed in its
head. This structure allows alien processes to located the other shared
memory segments and any required controlling information.
The message passing layer, allocates memory from these segments asyn‐
chronously without any interaction with the pvm_shmd using semaphores
to protect data during updates to any associated structures. For each
segment there is an associated page map of which processes have cur‐
rently locked a page. Each page map for a segment has a separate sema‐
phore protecting it. The semaphores are accessed with the SEM_UNDO flag
set so that if a process holding a semaphore should die, the OS
(should) reset the semaphore automatically, thus allowing any wait‐
ing/blocked processes to continue.
The pvm_shmd only maintains the segments and their allocation page
map(s). Thus if a process allocated pages in a segment and then exits,
it is the pvm_shmd that detects this and then frees the allocated
pages.
The pvm_shmd can have its status checked at any time by using the
pvm_shmd_stat process to kick it into reporting onto either stdio or
the pvm log file (pvml.uid) its internal state.
The shared memory and all associated processes can be cleared by send‐
ing the pvm_shmd a HUP signal.
Sending the pvm_shmd a TERM signal will just cause it to clear any
shared resources and then exit.
The pvm_shmd cannot catch the KILL signal.
If the pvm_shmd is killed without clearing all of its shared resources
these can be cleared by calling ipcfree which resides in the pvm3/lib
directory.
Message Passing using SHMD
The pvm_shmd handles resources that are used by special versions of
pvm_psend() and pvm_precv() stored in the libpvmshmd.a library. Thus to
use these facilities, applications have to link to this library instead
of the usual libpvm3.a library.
OPTIONS
The following options may be specified on the command line when start‐
ing the pvm_shmd:
-debug=level
Sets the pvm_shmd debug level. Used to debug the pvm_shmd or
libpvmshmd (not intended to be used to debug application pro‐
grams).
-maxsegs=maxsegs
Sets the maximum number of segments that the pvm_shmd can cre‐
ate. This is used to over-ride the compiled in value from
shmd.h. Note that the value cannot be above the MAXSEGS in the
shmd.h file.
-maxpages=maxpages
Sets the maximum segment size to maxpages pages of memory. This
value cannot be above the compiled value MAXPAGES in shmd.h or
the actual OS defined limit.
NOTES
Remember that pvm_shmd allocated memory from the VM available on the
machine. Allocating more segements improves performance as there is
less sharing of segments (semaphores for their page maps). Although you
must remember to leave some memory available for normal program and OS
system usage, as the pvm_shmd allocated memory is *ONLY* used for mes‐
sage passing.
FILES
$PVM_ROOT/lib/$PVM_ARCH/pvm_shmd PVM shared memory daemon executable
$PVM_ROOT/shmd/shmd.h Shared Memory hard limits header file
/tmp/pvml.uid Pvmd runtime error log
SEE ALSOpvm(1PVM), pvmd(1PVM), getpagesize(3C), ipcs(1), msgctl(2), semctl(2),
shmctl(2), signal(5)G.E.Fagg 11 March, 1999 PVM_SHMD(1PVM)