%
% Slides for SLURM talk at User's meeting 
%                on
%            2003-04-08
%

\documentclass[%
letterpaper,
pdf,
%ps,
%nocolorBG,
colorBG,
slideColor,
%slideBW,
%draft,
%frames
%azure
%contemporain
%nuancegris
%troispoints
%lignesbleues
%darkblue
alienglow
%autumn
]{prosper}

\usepackage{epsfig}

%
%
%

\title{SLURM}
\subtitle{The Simple Linux Utility for \\ Resource Management}
\author{Mark A. Grondona}
\email{mgrondona@llnl.gov}
\disclaimer{These slides are for 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}

%%
%%
\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
 \item Interconnect Independent
\end{itemize}
\end{slide}

%
%
\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}}

\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}

\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 config file 
  \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 SLURM is interconnect independent
\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}
