%
% Slides for SLURM talk at User's meeting 
%                on
%            2003-04-08
%
% This presentation was built using a modified version of the
% ``prosper'' latex class and `alienglow' style 
% (See ./tex/prosper.cls and ./tex/PPRlinuxglow.sty)
%
% For the "interactive" PDF slides, uncomment the pdf option below
% to enable overlays. For printed slides, uncomment the ps option.
% 
\documentclass[%
letterpaper,
pdf,
%ps,
%nocolorBG,
%colorBG,
slideColor,
%slideBW,
%draft,
alienglow
]{prosper}

\usepackage{epsfig}

%
% Talk Title, SubTitle, etc.
%
\title{SLURM}
\subtitle{The Simple Linux Utility for \\ Resource Management}
\author{Mark A. Grondona}
\email{mgrondona@llnl.gov}
\disclaimer{LLNL internal use only}

%
% PPRalienglow.sty was directly modified to fit the two images below.
% If these are changed, you may need to adjust some values in that file.
%
\institution{\epsfig{file=linux_llnl.eps,scale=.25}}
\Logo{\epsfig{file=fry.eps,scale=.3}}

%
% Set default transition method. Valid methods are
% Replace, Split, Blinds, Box, Wipe, Dissolve, & Glitter
%
\DefaultTransition{Replace}

%
\begin{document}

%
% Make the title page
\maketitle

\begin{slide}{Overview}
\begin{itemize}
\item What is SLURM?
\item What SLURM is Not
\item SLURM Design Criteria
\item SLURM Components and Architecture
\item Simple Examples
\item SLURM and RMS Differences
\end{itemize}
\end{slide}

%
% Prepare a 5 overlay slide using the handy "itemstep" environment
% 
\overlays{5}{%
\begin{slide}{What is SLURM?}
\begin{itemstep}
  \item Simple resource manager:
  \begin{itemstep}
    \item Allocates access to resources (nodes)
    \item Distributes work to allocated resources.
    \item Manages conflicting requests for resources by maintaining a 
          simple queue of pending work.
  \end{itemstep}
  \item Open Source replacement for RMS
\end{itemstep}
\end{slide}}

%
\overlays{3}{%
\begin{slide}{What SLURM is Not}
\begin{itemstep}
  \item A sophisticated job scheduler. 
  \item A meta-batch system.
  \item A comprehensive cluster administration or monitoring package.
\end{itemstep}
\end{slide}}

%%
%%
\begin{slide}{SLURM Design Criteria}
\begin{itemize}
 \item Simple
 \item Efficient
 \item Scalable to clusters with thousands of nodes
 \item Fault Tolerant
 \item Secure
 \item Open Source
\end{itemize}
\end{slide}

%
% Prepare overlays using the onlySlide* command. Slides 2-5 will
% show the diagrams entities0-5.eps respectively. The onlySlide*
% environment deallocates the space taken by the slide contents.
%
\overlays{5}{%
\begin{slide}{SLURM Entities}
 \onlySlide*{1}{%
  \begin{itemize}
    \item Nodes
    \item Partitions
    \item Jobs
    \item Job Steps
  \end{itemize}}
 \begin{center}
  \onlySlide*{2}{\epsfig{file=entities0.eps,scale=0.5}}
  \onlySlide*{3}{\epsfig{file=entities1.eps,scale=0.5}}
  \onlySlide*{4}{\epsfig{file=entities2.eps,scale=0.5}}
  \onlySlide*{5}{\epsfig{file=entities3.eps,scale=0.5}}
  \onlyInPS{\epsfig{file=entities3.eps,scale=0.5}}
 \end{center}
\end{slide}}

%
%
\overlays{2}{%
\begin{slide}{SLURM Architecture}
\onlySlide*{1}{%
\begin{itemize}
 \item Two daemons
   \begin{itemize}
   \item {\tt slurmctld}: controller daemon
   \item {\tt slurmd}: compute node daemon
   \end{itemize}
 \item Five simple commands
   \begin{itemize}
    \item {\tt scontrol, sinfo, squeue, scancel, srun}
   \end{itemize}
\end{itemize}}
\onlySlide*{2}{%
  \begin{center}
  \epsfig{file=arch.eps,scale=0.3}
  \end{center}}
  \onlyInPS{\hfill \epsfig{file=arch.eps,scale=0.3} \hfill}
\end{slide}}

%
% Simple use of tabular environment.
%
\begin{slide}{User Commands}
\begin{tabular}{rc}
{\tt scontrol} & SLURM administration utility \\
{\tt sinfo}    & Partition and node state \\
{\tt squeue}   & Query job state \\
{\tt scancel}  & Cancel pending jobs \\
{\tt srun}     & Allocate resources and run job steps \\
\end{tabular}
\end{slide}


%
% Use of verbatim environment within a slide.
% The font size is shrunk to footnotesize and TeX's baselineskip is
% decreased by 20% because the default monospace font was so darn big.
%
\begin{slide}{Simple SLURM Examples}
\begin{itemize}
\item Basic interface very similar to RMS
\end{itemize}
\renewcommand{\baselinestretch}{0.8}
\footnotesize
\begin{verbatim}
grondo@dev0 ~ > sinfo
PARTITION  NODES STATE  CPUS MEMORY TMP_DISK NODES
------------------------------------------------------
debug         18 IDLE      2   2012    64324 dev[0-17]
grondo@dev0 ~ > srun -N4 hostname
dev0
dev1
dev2
dev3
grondo@dev0 ~ >
\end{verbatim}
\renewcommand{\baselinestretch}{1.0}
\end{slide}

%
%
\begin{slide}{Simple SLURM Examples}
\begin{itemize}
\item Killing an interactive job
\end{itemize}
\renewcommand{\baselinestretch}{0.8}
\footnotesize
\begin{verbatim}
grondo@dev0 ~ > srun -n8 sleep 30
srun: interrupt (one more within 1 sec to abort)
srun: task[0-7]: running
srun: sending Ctrl-C to job
srun: error: dev0: task[0-1]: Interrupt
srun: error: dev1: task[2-3]: Interrupt
srun: error: dev3: task[6-7]: Interrupt
srun: error: dev2: task[4-5]: Interrupt
grondo@dev0 ~ >
\end{verbatim}
\renewcommand{\baselinestretch}{1.0}
\end{slide}

%
%
\begin{slide}{Simple SLURM Examples}
\begin{itemize}
\item Killing a queued job
\end{itemize}
\renewcommand{\baselinestretch}{0.8}
\footnotesize
\begin{verbatim}
grondo@dev0 ~ > squeue
JobId Partition Name   User   St TimeLim Prio Nodes
   14 debug     sleep  grondo R     0:30 0.99 dev[0-3]
grondo@dev0 ~ > scancel 14
grondo@dev0 ~ > squeue
JobId Partition Name  User    St TimeLim Prio Nodes
grondo@dev0 ~ >
\end{verbatim}
\renewcommand{\baselinestretch}{1.0}
\end{slide}

%
%
\begin{slide}{SLURM and RMS Differences}
\raggedright
\begin{itemize}
\item SLURM infrastructure is much simpler 
  \begin{itemize}
  \item SLURM uses a simple configuration file not database
  \item Initially, no back-end database \\ 
        (future versions of SLURM may have this)
  \end{itemize}
\item SLURM Open Source and locally developed to fit our needs
\item Job submission and query will mostly be through DPCS, so no changes
      there
\end{itemize}
\end{slide}

%
%
\begin{slide}{prun vs. srun}
\raggedright
\begin{itemize}
\item Most used user command, {\tt srun}, very similar to RMS's {\tt prun}
      with minor differences:
  \begin{itemize}
  \item Basic options: -n,  -N, -c, -I, -O, -v are the same
  \item I/O redirection --  -e, -i, -o -- are similar
  \item Other options differ moderately to significantly
  \item Signal Handling in {\tt srun} slightly different
  \item We will try to offer a ``prun'' wrapper for {\tt srun} in early versions
  \end{itemize}
\end{itemize}
\end{slide}

%
\begin{slide}{Any Questions?}
\hfill \hfill \epsfig{file=slurm.eps,scale=0.5} \hfill
\end{slide}

\end{document}
