Browse files

o prepare for initial SLURM release.

    - Update Makefiles to get html documents in distribution
    - Update README to more general (not testing) instructions
    - Add AUTHORS, ChangeLog, INSTALL, and NEWS
  • Loading branch information...
1 parent dbc6e28 commit 405d0ad9e17ac25e2bce72cf17deff7a7f949e01 @grondo grondo committed Mar 24, 2003
Showing with 398 additions and 84 deletions.
  1. +7 −0 AUTHORS
  2. 0 ChangeLog
  3. +228 −0 INSTALL
  4. +6 −2 Makefile.am
  5. 0 NEWS
  6. +132 −75 README
  7. +6 −4 doc/Makefile.am
  8. +5 −2 doc/man/Makefile.am
  9. +14 −1 slurm.spec.in
View
7 AUTHORS
@@ -0,0 +1,7 @@
+Chris Dunlap <cdunlap@llnl.gov>
+Joey Ekstrom <ekstrom1@llnl.gov>
+Jim Garlick <garlick@llnl.gov>
+Mark Grondona <mgrondona@llnl.gov>
+Morris Jette <jette1@llnl.gov>
+Keven Tew <tew1@llnl.gov>
+Jay Windley <jwindley@lnxi.com>
View
0 ChangeLog
No changes.
View
228 INSTALL
@@ -0,0 +1,228 @@
+Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for variables by setting
+them in the environment. You can do that on the command line like this:
+
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
View
8 Makefile.am
@@ -5,15 +5,18 @@ AUTOMAKE_OPTIONS = foreign
SUBDIRS = src testsuite doc
EXTRA_DIST = \
+ Make-rpm.mk \
etc/slurm.conf.example \
etc/init.d.slurm \
autogen.sh \
- Make-rpm.mk \
slurm.spec \
README \
DISCLAIMER \
COPYING \
- META
+ AUTHORS \
+ INSTALL \
+ NEWS \
+ ChangeLog \
slurmincludedir=$(includedir)/slurm
slurminclude_HEADERS = \
@@ -37,3 +40,4 @@ distclean-local:
-rm -rf autom4te*.cache autoscan.*
-find $(PACKAGE)-* -exec chmod u+w {} \;
-rm -rf $(PACKAGE)-*
+
View
0 NEWS
No changes.
View
207 README
@@ -1,76 +1,133 @@
-TO BUILD:
- > cd slurm
- > ./autogen.sh
- > ./configure [OPTIONS]
- > make
- > make install <or> make rpm tag=Head
-
- OPTIONS:
- "--enable-debug" to run the daemons in debug mode (more validity
- checking and writes core files, useful for getting things
- running)
- "--prefix=" to specify a directory into which the slurm files are
- to be installed
- "--sysconfdir=" to specify the directory into which the
- slurm.conf file is placed
- "--with-elan" to support a Quadics Elan3 interconnect, defaults
- to IP interconnect
- "--with-totalview" to support the Etnus TotalView debugger
-
-TO TEST:
- You will need to construct a valid configuration file for your machine.
- To run on a single host, you can probably use the file in
- "etc/slurm.conf.localhost" with minimal modifications.
- For a cluster, you should build something based upon "etc/slurm.conf.dev".
- Be sure to update "SlurmUser", "JobCredentialPrivateKey" and
- "JobCredentialPublicCertificate". There are usable keys in
- "src/slurmd/private.key" and "src/slurmd/public.cert". New keys
- can be built using the following commands:
- "openssl genrsa -out <name of private key> 1024"
- "openssl rsa -in <name of private key> -pubout -out <name of public key>"
- See "doc/man/man5/slurm.conf.5" for help in building this.
-
- Initiate "slurmctld" on the control machine (it can run without root
- permissions, see SlurmUser in slurm.conf). For testing purposes you
- probably want to use several options: "-D" keep in foreground, "-c"
- clear state from previous executions, and possibly "-v" for verbose
- messages (more v's for more verbosity). For example:
- "slurmctld -D -c -vvvvv" (specify pathname as needed).
- Initiate "slurmd" on each compute server (it needs to run as root for
- production, but can run as a normal user for testing - it will report
- errors on the initgroups, seteuid, and setegid functions if not run
- as root, but if everything is run as the same user most functionality
- is OK). For testing purposes you probably want to use several options:
- "-D" keep in foreground, "-c" clear state from previous executions,
- and possibly "-v" for verbose messages (more v's for more verbosity).
- For example "slurmd -D -c -vvvvv". If using pdsh (parallel distributed
- shell) to initiate slurmd on every node, the execute line would be
- "pdsh -a "slurmd -D -c -vvvvv"" (specify pathname as needed).
- Run jobs using the "srun" command.
- Get system status using "sinfo" and "squeue".
- Terminate jobs using "scancel".
- Get and set system configuration information using "scontrol".
- Man pages for all of these daemons and commands are available.
-
- There DejaGnu scripts to exercise various APIs and tools.
-
-NOTES:
- You should have autoconf version 2.52 or higher (see "autoconf -V").
-
- There is no authentication of communications between commands and
- daemons without the the authd daemon in operation. For more
- information, see "http://www.theether.org/authd/".
-
-
-STATUS (As of 3/4/2002):
- Most functionality is in place and working.
- Performance is good (under 5 seconds to run 1900 tasks of "/bin/hostname"
- over 950 nodes).
- Fault-tolerance is good.
- Support for additional hardware and software is planned in future releases
- (IA64, RedHat 8.1, Myrinet, IBM Blue Gene).
- Support for job suspend/resume and checkpoint/restart is planned for
- future releases.
- Send feedback to Morris Jette <jette1@llnl.gov> or Mark Grondona
- <grondona1@llnl.gov>.
+This is SLURM, the Simple Linux Utility for Resource Management. SLURM
+is an open-source cluster resource management and job scheduling system
+that strives to be simple, scalable, portable, fault-tolerant, and
+interconnect agnostic. SLURM currently has been tested only under Linux.
+As a cluster resource manager, SLURM provides three key functions. First,
+it allocates exclusive and/or non-exclusive access to resources
+(compute nodes) to users for some duration of time so they can perform
+work. Second, it provides a framework for starting, executing, and
+monitoring work (normally a parallel job) on the set of allocated
+nodes. Finally, it arbitrates conflicting requests for resources by
+managing a queue of pending work.
+
+SLURM is provided "as is" and with no warranty. This software is
+distributed under the GNU General Public License, please see the files
+COPYING and DISCLAIMER for details.
+
+This README presents an introduction to compiling, installing, and
+using SLURM.
+
+
+SOURCE DISTRIBUTION HIERARCHY
+-----------------------------
+
+The top-level distribution directory contains this README as well as
+other high-level documentation files, and the scripts used to configure
+and build SLURM (see INSTALL). Subdirectories contain the source-code
+for SLURM as well as a DejaGNU test suite and further documentation. A
+quick description of the subdirectories of the SLURM distribution follows:
+
+ src/ [ SLURM source ]
+ SLURM source code is further organized into self explanatory
+ subdirectories such as src/api, src/slurmctld, etc.
+
+ doc/ [ SLURM documentation ]
+ The documentation directory contains some latex, html, and ascii
+ text papers, READMEs, and guides. Manual pages for the SLURM
+ commands and configuration files are also under the doc/ directory.
+
+ etc/ [ SLURM configuration ]
+ The etc/ directory contains a sample config file, as well as
+ some scripts useful for running SLURM.
+
+ slurm/ [ SLURM include files ]
+ This directory contains installed include files, such as slurm.h
+ and slurm_errno.h, needed for compiling against the SLURM API.
+
+ testsuite/ [ SLURM test suite ]
+ The testsuite directory contains the framework for a set of
+ DejaGNU and "make check" type tests for SLURM components.
+
+ auxdir/ [ autotools directory ]
+ Directory for autotools scripts and files used to configure and
+ build SLURM
+
+
+COMPILING AND INSTALLING THE DISTRIBUTION
+-----------------------------------------
+
+Please the the INSTALL file for basic instructions. You will need a
+working installation of OpenSSL.
+
+SLURM does not use reserved ports to authenticate communication
+between components. You will need to have at least one "auth"
+plugin. Currently, only three authentication plugins are available:
+"auth/none," "auth/authd," and "auth/munge." The "auth/none" plugin is
+built and used by default, but one of either Brent Chun's authd, or Chris
+Dunlap's Munge should be installed in order to get properly authenticated
+communications. The configure script in the top-level directory of this
+distribution will determine which authentication plugins may be built.
+
+
+OpenSSL:
+http://www.openssl.org
+
+AUTHD:
+http://www.theether.org/authd/
+
+MUNGE:
+[ To be determined ]
+
+
+CONFIGURATION
+-------------
+
+An annotated sample configuration file for SLURM is provided with this
+distribution as etc/slurm.conf.example. Edit this config file to suit
+your site and cluster, then copy it to `$sysconfdir/slurm.conf,' where
+sysconfdir defaults to PREFIX/etc unless explicitly overridden in the
+`configure' or `make' steps.
+
+Once the config file is installed in the proper location, you'll need
+to create the keys for SLURM job credential creation and verification.
+The following openssl commands should be used:
+
+ > openssl genrsa -out /path/to/private/key 1024
+ > openssl rsa -in /path/to/private/key -pubout -out /path/to/public/key
+
+The private key and public key locations should be those specified by
+JobCredentialPrivateKey and JobCredentialPublicCertificate in the SLURM
+config file.
+
+
+RUNNING SLURM
+-------------
+
+Once a valid configuration has been set up and installed, the SLURM
+controller, slurmctld, should be started on the primary and backup
+control machines, and the SLURM compute node daemon, slurmd, should be
+started on each compute server.
+
+The slurmd daemons need to run as root for production use, but may be
+run as a user for testing purposes (obviously no jobs may be run as
+any other user in that configuration). The SLURM controller, slurmctld,
+need to be run as the configured SlurmUser (see your config file).
+
+Man pages are the best source of information about SLURM commands and
+daemons. Please see: slurmctld(8), slurmd(8), scontrol(1), sinfo(1),
+squeue(1), scancel(1), and srun(1).
+
+Also, take a look at the Quickstart Guide to get acquainted with
+running and managing jobs with SLURM: doc/html/quick.start.guide.html
+or PREFIX/share/doc/quick.start.guide.html.
+
+
+PROBLEMS
+--------
+
+If you experience problems compiling, installing, or running SLURM
+please send email to either Moe Jette <jette@llnl.gov> or Mark Grondona
+<mgrondona@llnl.gov>.
+
+$Id$
View
10 doc/Makefile.am
@@ -1,11 +1,13 @@
# $Id$
-SUBDIRS = man
+SUBDIRS = man
-EXTRA_DIST = \
+EXTRA_DIST = \
html/LCM.arch.png \
html/LCM.communicate.png \
html/SLURM.components.gif \
- html/admin.guide.html \
html/programmer.guide.html \
- html/slurm.png \
+ html/quick.start.guide.html \
+ html/plugins.html \
+ html/authplugins.html \
+ html/slurm.png
View
7 doc/man/Makefile.am
@@ -1,5 +1,7 @@
# $Id$
+EXTRA_DIST = man1 man3 man5 man8
+
man1_MANS = \
man1/scancel.1 \
man1/scontrol.1\
@@ -58,5 +60,6 @@ man5_MANS = man5/slurm.conf.5
man8_MANS = man8/slurmctld.8 \
man8/slurmd.8
-EXTRA_DIST = man1 man3 man5 man8
-#EXTRA_DIST = $(man1_MANS) $(man3_MANS) $(man5_MANS) $(man8_MANS)
+dist-hook:
+ -rm -rf `find $(distdir) -name CVS`
+
View
15 slurm.spec.in
@@ -25,6 +25,7 @@ Requires: openssl >= 0.9.6
%if %{?_with_debug:1}%{!?_with_debug:0}
%define _enable_debug --enable-debug
%define __os_install_post /usr/lib/rpm/brp-compress
+ CFLAGS="-g -Wall"
%endif
#
@@ -83,7 +84,7 @@ PFX_FIX=--program-prefix=%{?_program_prefix:%{_program_prefix}}
WITHCONF=--sysconfdir=/etc/slurm
# for now we build with debugging symbols
-CFLAGS="-g -Wall"
+
%configure \
$PFX_FIX $WITHCONF \
%{?_enable_debug} \
@@ -111,16 +112,22 @@ DESTDIR="$RPM_BUILD_ROOT" make install
install -D -m755 etc/init.d.slurm $RPM_BUILD_ROOT/etc/rc.d/init.d/slurm
install -D -m644 etc/slurm.conf.example $RPM_BUILD_ROOT/etc/slurm/slurm.conf
+#############################################################################
%clean
rm -rf $RPM_BUILD_ROOT
+#############################################################################
%files
%defattr(-,root,root,0755)
+%doc ChangeLog
%doc README
%doc DISCLAIMER
%doc COPYING
%doc etc/slurm.conf.example
+%doc doc/html/quick.start.guide.html
+%doc doc/html/arch.png
+%doc doc/html/entities.png
%{_bindir}/*
%{_sbindir}/*
%{_libdir}/*.so*
@@ -129,31 +136,36 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man8/*
%config(noreplace) /etc/rc.d/init.d/slurm
%config(noreplace) /etc/slurm/slurm.conf
+#############################################################################
%files devel
%defattr(-,root,root)
%{_prefix}/include/slurm/*
%{_libdir}/libslurm.a
%{_libdir}/libslurm.la
%{_mandir}/man3/*
+#############################################################################
%if %(test -f %{_libdir}/slurm/auth_none.so && echo 1 || echo 0)
%files auth-none
%defattr(-,root,root)
%{_libdir}/slurm/auth_none.so
%endif
+#############################################################################
%if %(test -f %{_libdir}/slurm/auth_munge.so && echo 1 || echo 0)
%files auth-munge
%defattr(-,root,root)
%{_libdir}/slurm/auth_munge.so
%endif
+#############################################################################
%if %(test -f %{_libdir}/slurm/auth_authd.so && echo 1 || echo 0)
%files auth-authd
%defattr(-,root,root)
%{_libdir}/slurm/auth_authd.so
%endif
+#############################################################################
%pre
if [ -x /etc/rc.d/init.d/slurm ]; then
@@ -186,6 +198,7 @@ fi
if [ "$1" = 0 ]; then
/sbin/ldconfig %{_libdir}
fi
+#############################################################################
%changelog

0 comments on commit 405d0ad

Please sign in to comment.