JSD(1)                     OpenBSD Reference Manual                     JSD(1)

NAME
     jsd - simple command scheduling daemon for remote execution

SYNOPSIS
     jsd [-iqv] [-f fanout] [-g rungroup1,...,rungroupN] [-l username]
         [-p port] [-o port] [-w node1,...,nodeN] [-x node1,...,nodeN]
         [command ...]

DESCRIPTION
     The jsd daemon is used to schedule remote execution of jobs across a
     heterogenous cluster of machines.  Upon starting the daemon, it will
     attempt to run a benchmark on all machines under it's control.  Once the
     daemon is active it listens for connections from a jsh process, and gives
     each connecting process the name of a remote host to execute a command
     on.  Faster hosts are preferred by the jsd daemon, and the fastest of all
     remaining hosts will allways be given out first.  Once a remote jsh
     process has completed it's use of the remote host, it will again contact
     the jsd daemon, and return the node to service.  The daemon will never
     give the same node out to more than one process at a time.

     jsd logs errors and critical conditions to the syslog with the facility
     LOG_DAEMON.

     The following options are available:

     -i   The -i option will list information about the current cluster, and
          command groupings.  It will print out the current value of the
          fanout, and how many groups of machines there are within the
          cluster. It will also show you which command you are about to run,
          and your username if specified with the -l option.

     -q   The -q option does not issue any commands, but displays information
          about the cluster, and the fanout groupings.

     -v   Prints the version of ClusterIt to the stdout, and exits.

     -f   If the -f option is specified, followed by a number, it sets the
          fanout size of the cluster.  The fanout size is the number of nodes
          a command will run on in parallel at one time.  Thus a 80 node
          cluster, with a fanout size of 64, would run 64 nodes in parallel,
          then, when all have finished, it would execute the command on the
          last 16 nodes.  The fanout size defaults to 64.  This option
          overrides the FANOUT environment variable.

     -g   If the -g option is specified, followed by a comma separated list of
          group names, the command will only be run on that group of nodes.  A
          node may be a part of more than one group if desired, however
          running without the -g option will run the command on the same node
          as many times as it appears in the file specified by the CLUSTER
          environment variable.  This option is silently ignored if used with
          the -w option.

     -l   If the -l option is specified, followed by a username, the commands
          will be run under that userid on the remote machines.  Consideration
          must be taken for proper authentication, for this to work.

     -p   The -p option can be used to set the port number which jsd will
          listen to replies from jsh processes indicating completion of
          processing on remote nodes.  This option overrides the JSD_IPORT
          environment variable.  The default listen port is 2001.

     -o   The -o option can be used to set the port number which jsd will
          listen to requests from jsh processes for remote nodes.  This option
          overrides the JSD_OPORT environment variable.  The default listen
          port is 2002.

     -w   If the -w option is specified, followed by a comma delimited list of
          machine names, the command will be run on each node in the list.
          Without this option, jsd runs on the nodes listed in the file
          pointed to by the CLUSTER environment variable.

     -x   The -x option can be used to exclude specific nodes from the
          cluster.  The format is the same as the -w option, a comma delimited
          list of machine names.  This option is silently ignored if used with
          the -w option.

ENVIRONMENT
     jsd utilizes the following environment variables:

     CLUSTER        Contains a filename, which is a newline separated list of
                    nodes in the cluster.

     RCMD_CMD       Command to use to connect to remote machines.  The command
                    chosen must be able to connect with no password to the
                    remote host.  Defaults to ssh.  This is only used by jsd
                    when issuing the benchmark at startup, and has no effect
                    on how jsh processes will connect to the remote nodes.

     RCMD_CMD_ARGS  Arguments to pass to the remote shell command.  Defaults
                    to none. As with RCMD_CMD this is only used when issuing
                    the benchmark at startup.

     JSD_BENCH_CMD  This is the name of a command, which when run on the
                    remote nodes of the cluster will give some indication of
                    the relative speed of the machines.  It does not need to
                    be precise.  If no benchmark command is specified, all
                    machines are considered to be the same speed, and will not
                    be wieghted.  The bench command expects a single floating
                    point number as the only output to the remote command.
                    Larger numbers are to indicate faster machines.  See the
                    EXAMPLES section for more details.

     FANOUT         When set, limits the maximum number of concurrent commands
                    sent at once.  This can be used to keep from overloading a
                    small host when sending out commands in parallel.
                    Defaults to 64.  This environment setting can be
                    overridden by the -f option.

     JSD_OPORT      When set, overrides the default port which jsd listens on
                    for jsh processes requesting nodes.  This environment
                    setting can be overriden by the -o option.

     JSD_IPORT      When set, overrides the default port which jsd listens on
                    for jsh processes reporting back that it has completed
                    processing on a node.  This environment setting can be
                    overriden by the -p option.

EXAMPLES
     In order to generate a benchmark figure useful to jsd you will most
     likely need to process the ouput of a benchmark command in some way.
     There are two simple ways of doing this:

     The first way is to build a script, which exists on each machine, and run
     that as your benchmark command.  The below script shows how to process
     the output of the whetstone(1) command into a format useable by jsd :

           #!/bin/sh
            ./whetstone 100000 | grep MIPS | sed -e 's|.*: \(.*\) MIPS|\1|'

     The other way, would be to run a more involved benchmark on each machine,
     (or assign numbers arbitrarily) and place them in a file on the remote
     machines.  A benchmark command could then simply be cat /etc/benchmark or
     some other similar setup.

SEE ALSO
     dsh(1), jsh(1), syslogd(8).

HISTORY
     The jsd command first appeared in clusterit 2.0.  It should be pronounced
     "jez-dee", and stands for `Job Scheduling Daemon'.

AUTHOR
     Jsd was written by Tim Rightnour.

                               February 19, 2000
