Provided by: pvm-dev_3.4.6-5_amd64 bug

NAME

       pvm_shmd - PVM shared memory (2) daemon

SYNOPSIS

       pvm_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 virtual 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 command.  Local and
       remote pvm_shmds can also be started from the PVM console 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 asynchronously 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 currently locked a page. Each  page  map  for  a  segment  has  a  separate
       semaphore 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 waiting/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 sending 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 starting 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 programs).

       -maxsegs=maxsegs
               Sets  the maximum number of segments that the pvm_shmd can create. 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 message
       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 ALSO

       pvm(1PVM),  pvmd(1PVM),  getpagesize(3C),  ipcs(1),   msgctl(2),   semctl(2),   shmctl(2),
       signal(5)