NAME
pvmd, pvmd3 - PVM daemon
SYNOPSIS
pvmd [ -options ] [ hostfile ]
DESCRIPTION
Pvmd3 is a daemon process which
coordinates unix hosts in a virtual machine. One pvmd3 must
run on each host in the group. They provide the communication and
process control functions needed by the user's PVM processes. The
daemon can be started manually with a host file argument that will
automatically start the remote pvmds. The local and remote pvmds
can also be started from the PVM console program pvm.
The name of the daemon executable is pvmd3. It is usually
started by a shell script, $PVM_ROOT/lib/pvmd.
[v3.4 and later] Before running pvmd3, pvmd sources any commands
in $HOME/.pvmprofile if this file exists.
OPTIONS
The following options may be specified on the
command line when starting the master pvmd or PVM console:
- -dmask
- Set pvmd debug mask. Used to debug the pvmd or libpvm (not
intended to be used to debug application programs). Mask is
the sum of the following bits and can be specified in
hexadecimal (0x...), octal (0...) or decimal:
-
- Bit
- Information
- 0x1
- Packet routing
- 0x2
- Message routing and entry points
- 0x4
- Task state
- 0x8
- Slave pvmd startup
- 0x10
- Host table updates
- 0x20
- Select loop (below packet layer)
- 0x40
- IP network
- 0x80
- Multiprocessor nodes
- 0x100
- Resource manager interface
- 0x200
- Application (messages with no destination, etc.)
- 0x400
- Wait contexts
- 0x800
- Shared memory operations
- 0x1000
- Semaphores
- 0x2000
- Locks
- 0x4000
- Message route control
- -nname
- Specify an alternate hostname for the master pvmd to use.
Useful when gethostname() returns a name not assigned to any
network interface.
The following options are used by the master pvmd when starting
slaves and are only of interest to someone writing a hoster.
Don't just go using them, now.
- -s
- Start pvmd in slave mode. Hostfile cannot be used, five
additional parameters must be supplied: master pvmd index, master
IP, master MTU, slave pvmd index, and slave IP.
- -S
- Same as -s, but slave pvmd doesn't wait for its stdin to
be closed after printing its parameters. Used for manual startup.
- -f
- Slave doesn't fork after configuration (useful if the slave is
to be controlled or monitored by some process).
HOST FILE FORMAT
Each host in the virtual machine must have
an entry in the host file. Lines beginning with a splat ( # ),
optionally preceded by whitespace, are ignored.
A simple host file might look like:
# my
first host file
thud
fred
wilma
barney
betty
This specifies the names of five hosts to be configured in the
virtual machine.
The master pvmd for a group is started by hand on the
localhost, and it starts slaves on each of the remaining hosts
using the rsh or rexec command. The master host may
appear on any line of the host file. Host names cannot be numeric
(IP) addresses, because they are passed to rsh and rexec(), which
usually don't accept addresses.
The simple format above works fine if you have the same login
name on all five machines and the name of the master host in your
.rhosts files on the other four.
There are several host file options available:
-
- lo=NAME
- Specifies an alternate login name (NAME) to use.
- so=pw
- This is necessary when the remote host cannot trust the master.
Causes the master pvmd to prompt for a password for the remote host
in the tty of the pvmd (note you can't start the master using the
console or background it when using this option) you will see:
Password
(honk.cs.utk.edu:manchek):
you should type your password for the remote host. The startup will
then continue as normal.
- dx=FILE
- Specifies the path of the pvmd executable. FILE may be a simple
filename, an absolute pathname, or a path relative to the user's
home directory on the remote host. This is mainly useful to aid in
debugging new versions of PVM, but may have other uses.
- ep=PATH
- Specifies a path for the pvmd to search for executable
program components when spawning a new process. The path may have
multiple elements, separated by colons ( : ).
- wd=PATH
- Specifies a working directory in which all spawned tasks on
this host will execute.
- sp=VALUE
- Specifies the relative computational speed of this host
compared to other hosts in the configuration. VALUE is an integer
in the range [1 - 1000000]
- bx=PATH
- Specifies the debugger program path. Note: the environment
variable PVM_DEBUGGER can also be set.
- ip=NAME
- Specifies an alternate IP address to use for the host. As with
host names (when ip= is not used), the address must be a host name,
not a numeric address, because it is passed to rsh and rexec().
This option allows one to pick a specific network interface for a
machine without using the interface's name. It can also be used to
create a virtual machine using symbolic (instead of actual) host
names.
- so=ms
- Rarely used. Causes the master pvmd to request user to manually
perform the startup of a pvmd on a slave host when rsh and rexec
network services are disabled but IP connectivity exists. See
section "MANUAL STARTUP".
- id=VMID
- A new feature in PVM 3.4.4 is the concept of a "Virtual Machine
ID". You can now set the VMID to an arbitrary string and this will
distinguish and allow multiple virtual machines to run on the same
set of hosts under the same userid. (This feature was originally
introduced by SGI in their commercial PVM product, and has now been
generalized for the public PVM system.) This feature seems to be
something that people often want, and the "id=" hostfile option (or
$PVM_VMID environment variable) is the cleanest way to provide this
functionality, rather than overloading the SHAREDTMP compiler flag
and other internals.
*** Make Sure *** that you appropriately set the $PVM_VMID
environment variable in any shells from which PVM application tasks
or the "pvm" console will be run, or else they won't know
which virtual machine to attach to!
By default, all hosts which are added to the virtual machine
will inherit the same VMID. If hosts are added to the virtual
machine which are running older versions of PVM (prior to 3.4.4),
then the VMID will be ignored for those hosts, and hence these
machines can only be added to one virtual machine for the given
user. The VMID need not be consistent on every host in a virtual
machine (although this is not necessarily advisable).
A dollar sign ( $ ) in an option introduces a variable name, for
example $PVM_ARCH. Names are expanded from environment
variables by each pvmd.
Each of the flags above has a default value. These are:
-
- lo
- The loginname on the master host.
- so
- Nothing
- dx
- $PVM_ROOT/lib/pvmd (or environment variable PVM_DPATH)
- ep
- $HOME/pvm3/bin/$PVM_ARCH:$PVM_ROOT/bin/$PVM_ARCH
- wd
- $HOME
- sp
- 1000
- bx
- $PVM_ROOT/lib/debugger
You can change these by adding a line with a star ( * ) in the
first field followed by the options, for example:
*
lo=afriend so=pw
This sets new default values for 'lo' and 'so' for the remainder
of the host file, or until the next '*' line. Options set on the
last '*' line also apply to hosts added dynamically using
pvm_addhosts().
Host options can be set without starting the hosts
automatically. Information on host file lines beginning with
'&' is stored, but the hosts are not started until added using
pvm_addhosts().
Example host file:
# host file for testing on various platforms
fonebone
refuge
# installed in /usr/local here
sigi.cs dx=/usr/local/pvm3/lib/pvmd
# borrowed accts, "guest", don't trust fonebone
* lo=guest so=pw
sn666.jrandom.com
cubie.misc.edu
# really painful one, must start it by hand and share a homedir
& igor.firewall.com lo=guest2 so=ms ep=bob/pvm3/bin/$PVM_ARCH
MANUAL STARTUP
When adding a host with this option set you
will see on the tty of the pvmd:
*** Manual startup ***
Login to "honk" and type:
$PVM_ROOT/lib/pvmd -S -d0 -nhonk 1 80a9ca95:0cb6 4096 2 80a95c43:0000
Type response:
after typing the given command on host honk, you should
see a line like:
ddpro<2312> arch<ALPHA> ip<80a95c43:0a8e> mtu<4096>
type this line on the tty of the master pvmd. You should then
see:
Thanks
and the two pvmds should be able to communicate.
Note you can't start the master using the console or background
it when using this option.
OVERLOADING HOSTS
You can force PVM to overload a host (start more than one pvmd
on it) by putting a '$' before the host name in the host file. This
is not recommended unless you know what you're doing and have a
good reason for it. You must build the PVM source with option
OVERLOADHOST defined for it to work.
You may also need to use the ip= hostfile option to define
several names with the same IP address. If two or more hosts in a
PVM have the same name, they cannot be identified uniquely.
STOPPING PVMD3
The preferred method of stopping all the
pvmds is to give the halt command in the PVM console. This
kills all PVM tasks, all the remote daemons, the local daemon, and
finally the console itself. If the master pvmd is killed manually
it should be sent a SIGTERM signal to allow it to kill the remote
pvmds and clean up various files.
The pvmd can be killed in a manner that leaves the file
/tmp/pvmd.uid behind on one or more hosts. Uid is the
numeric user ID (from /etc/passwd) of the user. This will prevent
PVM from restarting on that host. Deletion of this file will fix
this problem:
rm `( grep $user /etc/passwd || ypmatch $user passwd )
| awk -F: '{print "/tmp/pvmd."$3; exit}'`
FILES
$PVM_ROOT/lib/pvmd PVM daemon startup script
$PVM_ROOT/lib/$PVM_ARCH/pvmd3 PVM daemon executable
$HOME/.pvmprofile Shell commands read by pvmd before
running pvmd3
$HOME/pvm3/bin/$PVM_ARCH Private PVM executable directory
$PVM_ROOT/pvm3/bin/$PVM_ARCH System PVM executable directory
/tmp/pvmd.uid Pvmd local socket address
/tmp/pvml.uid Pvmd runtime error log
$HOME/.rhosts File allowing access to a host from
other hosts
SEE ALSO
pvm(1PVM), pvm_intro(1PVM), rhosts(5)