Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PVM_SHMD(1PVM)			 PVM Version 3.4		  PVM_SHMD(1PVM)

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 ma-
     chine 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 archi-
     tecture 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  asynchro-
     nously  without  any interaction with the pvm_shmd using semaphores to pro-
     tect 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 auto-
     matically, 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 di-
     rectory.

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  ma-
     chine.  Allocating  more  segements  improves  performance as there is less
     sharing of segments (semaphores for their page maps). Although you must re-
     member to leave some memory available for normal program and OS system  us-
     age, 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), shm-
     ctl(2), signal(5)

G.E.Fagg			 11 March, 1999 		  PVM_SHMD(1PVM)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pvm_shmd&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help