\documentclass{beamer}

\mode<presentation>
{

  %% Uncomment one the following lines in order to try out some of the
  %% other themes.  See the User Guide for the full list.

  %\usetheme{default}      % no decoration
  %\usetheme{Warsaw}        % GimboLecture is based on this
  %\usetheme{Malmoe}
  %\usetheme{Singapore}
  %\usetheme{Dresden}
  %\usetheme{Marburg}
  %\usetheme{Berkeley}
  %\usetheme{Antibes}
  %\usetheme{Madrid}
  %\usetheme{Bergen}
  \usetheme{Talks} % the one I use for my lectures
  \usepackage{graphicx}
}

%% Uncomment the next line to turn on "reveal" effects on bulleted lists.
%%\beamerdefaultoverlayspecification{<+->}
\title{RCUfs: A Read Copy Update file system}
\subtitle{An experimental method for handling file system locking}
\author{Callum Massey \em{<644475@swan.ac.uk>}}
\date[2014.01.21]{Gregynog --- January 2014}
\begin{document}

\begin{frame}
\titlepage
\end{frame}

%\begin{frame}
%\tableofcontents
%\end{frame}
\begin{frame}{Computer Clusters}
Why do they exist?
\begin{itemize}
	\item Improve performance
	\item Improve reliability
	
\end{itemize}
\end{frame}

\begin{frame}

\centering \Large Why is that relevant?
\end{frame}

\begin{frame}{Shared Data Access}
\begin{itemize}
	\item Multiple processes accessing same data
	
\end{itemize}
\end{frame}
\begin{frame}{Issues}
\begin{itemize}
	\item What if two processes try to write the same file?
	\item What if there's a read on a file being written to?
	\item How do you stop processes seeing garbage data?
\end{itemize}
\end{frame}

\begin{frame}{Read Copy Update}
Locking mechanism that can drop in replace reader-writer locking.
\begin{itemize}
	\item Reader threads never got blocked
	\item Readers always return valid results
	\item Writers lock as normal
	\item Huge performance increase to read heavy applications
\end{itemize}
\end{frame}
\begin{frame}{How?}
So how does it work?
\begin{itemize}
	\item Original data copied elsewhere
	\item Changes made to this new version
	\item Global pointer (journal) updated to point to new location
	\item New readers/writers now see new version
	\item after all access finished, old data freed
\end{itemize}
\end{frame}

\begin{frame}{RCUfs}
RCU used extensively in the linux kernel, especially within the network stack however all current usage is restricted to in memory applications.
\\ \  \\
No one has tried to use it as a locking mechanism in a clustered file system.
\end{frame}
\begin{frame}{The Plan}
\begin{itemize}
\item Build a program that spawns multiple processes reading and writing to a file
\item Test this using RCU and with reader-writer locking
\item Determine the scenarios where RCU is better \\ (Definitely not all of them)
\end{itemize}
\end{frame}
\begin{frame}{Progress}
\begin{itemize}
\item Research, experimenting, learning C
\item Writing byte arrays to files pretending to be block devices
\item Stripped out and started reimplementing the locking on a FUSE file system
\item Backtracked on writing a FUSE file system
\end{itemize}
\end{frame}
\begin{frame}{Work to do}
\begin{itemize}
\item Expand my simple array writer to spawn multiple processes
\item Make the writer method use RCU
\item Generate performance metrics from this with RCU and r-w locking
\item Draw graphs/interpret results
\end{itemize}
\end{frame}
\begin{frame}
\centering \Large Any Questions?
\end{frame}
\end{document}