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

FreeBSD Manual Pages


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

       pvm_shmd	- PVM shared memory (2)	daemon

       pvm_shmd	[ -options ] [ hostfile	]

       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

       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

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.

       The  following options may be specified on the command line when	start-
       ing the pvm_shmd:

	       Sets the	pvm_shmd debug level.  Used to debug the  pvm_shmd  or
	       libpvmshmd  (not	 intended to be	used to	debug application pro-

	       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.

	       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.

       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.

	 $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

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

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

NAME | SYNOPSIS | DESCRIPTION | Shared Resource Usage | Message Passing using SHMD | OPTIONS | NOTES | FILES | SEE ALSO

Want to link to this manual page? Use this URL:

home | help