source: atlas/presentations/SVN07-04_2006-sit.tex @ 169

Last change on this file since 169 was 169, checked in by garonne, 18 years ago

add talk plenary

File size: 12.0 KB
Line 
1\documentclass [compress, t]{beamer}
2\usepackage{styles/beamerthemeMarseille}
3\usepackage[latin1]{inputenc}
4\usepackage{epsfig}
5\usepackage{graphicx}
6\usepackage{graphics}
7\usepackage{subfigure}
8\usepackage{color}
9\usepackage{algorithmic}
10\usepackage{algorithm}
11\usepackage{pgfarrows, pgfnodes}
12\usepackage{url}
13\usepackage{textcomp}
14\usepackage{url}\urlstyle{sf}
15\usepackage{xspace} 
16\usepackage{listings}
17
18% Beamer Options
19\setbeamercovered{dynamic}
20\setbeamertemplate{blocks}[rounded][shadow=true]
21%\setbeamertemplate{background canvas}[vertical shading][bottom=white,top=structure.fg!20]
22
23%%%% macros %%%%
24
25% Macros
26\newcommand{\cmt}    {{\em CMT}\@\xspace}%
27\newcommand{\svn}    {{\em SVN}\@\xspace}%
28\newcommand{\cvs}    {{\em CVS}\@\xspace}%
29
30\setbeamercovered{dynamic}
31
32\definecolor{rltgreen}{rgb}{0,0.5,0}
33\pgfdeclareimage[height=0.5cm]{LogoLAL}{logos/logo}
34\logo{ \pgfuseimage{LogoLAL} }
35
36\title{SVN evaluation and proposal for Atlas, \\ Atlas software week}
37\author{Christian Arnault, Vincent Garonne\\
38\{arnault,garonne\}@lal.in2p3.fr}
39\institute{Laboratoire de l'accélérateur Linéaire}
40\date {April 7, 2006} % \today
41
42\begin{document}
43
44% Transparent: Première page
45\begin{frame}
46\maketitle
47%\textcolor{gray}{\it \scriptsize }
48\end{frame}
49
50%------------------------------- SECTION -------------------------%
51\section*{Outline}
52\frame
53{
54% \frametitle{Outline}
55 \vfill
56   \begin{block}{Outline}
57 \tableofcontents[hideallsubsections]
58 \end{block}
59}
60
61%------------------------------- SECTION -------------------------%
62\section[svn introduction]{\svn in a nutshell} 
63
64\frame
65{
66 \frametitle{\svn in a nutshell}
67 \begin{block}{What is Subversion (or SVN) ?}
68\begin{itemize}
69            \item  Source code management system
70            \item  Open Source project (\url{http://subversion.tigris.org/})
71             \item \svn has new features that cover many limitations of \cvs
72             \item Subversion commands are very similar to \cvs, most of
73             the time it's a matter of  replacing \texttt{"cvs"} with \texttt{"svn"}~\cite{cvscrossover}
74\end{itemize}
75\end{block}
76
77\begin{block}{Questions for Atlas}
78As we have observed limitations/weird behaviors of \cvs:
79\begin{itemize}
80\item Is it appropriate to do a swap  ?
81\item Is the atlas developer is enough
82perturbed :) by the multi-projects structure without adding that ?
83\end{itemize}
84\end{block}
85}
86
87%------------------------------- SECTION -------------------------%
88\section[CVS/SVN comparison]{\cvs versus \svn} 
89\frame
90{
91\frametitle{\cvs versus \svn}
92\begin{itemize}
93      \item \svn really works faster than \cvs :
94      \begin{itemize}
95      \setbeamertemplate{itemize items}[circle]     
96          \item Transmits less information through the network
97           \item Supports more operations for offline mode, e.g
98           client sends deltas to server when committing
99        \end{itemize}
100%      \item More details : 
101\end{itemize}
102\scriptsize
103\begin{table}[htb]
104\begin{center}
105\begin{tabular}{|l|c|c|}
106\hline
107\texttt { \large \bf \textcolor{blue}{Source code management system}} & {\bf \large  \textcolor{blue}{\cvs} } & {\bf \large  \textcolor{blue}{\svn}}  \\ 
108\hline
109\hline
110\texttt {\bf Atomic Commits } & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
111\texttt    {\bf Efficient (constant-time) tagging } & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
112\texttt {\bf File renames handles cleanly (renaming, moving)} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
113\texttt {\bf Advanced Merging Features} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
114\texttt {\bf Manipulation of all the file types} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
115\texttt {\bf Easy Development on Branches} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
116\texttt {\bf Easy Server Administration} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
117\texttt {\bf Remote Repository Replication} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
118\texttt {\bf Scalable Performance and Admin} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
119\texttt {\bf Advanced repository permissions Features}  & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
120\texttt {\bf Web Browser Interfaces} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
121\texttt {\bf HTTP proxy to connect the server} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
122\end{tabular} 
123\end{center}
124\end{table}
125** For more infos, look~\cite{svnvscvs}
126}
127
128%------------------------------- SECTION -------------------------%
129\section[Proposal]{Proposal for Atlas} 
130\frame
131{
132\frametitle{Scenario for Atlas}
133
134\begin{block}{ Roadmap}
135\begin{enumerate}
136      \item Convert the Atlas CVS repository into a Subversion one
137      \begin{itemize}
138               \setbeamertemplate{itemize items}[circle]     
139                \item  A tool exists,  \texttt{"cvs2svn"} (\url{http://cvs2svn.tigris.org})
140       \end{itemize}
141      \item Provide tools to provide synchronization operations between \cvs and \svn repositories
142       \begin{itemize}
143                 \setbeamertemplate{itemize items}[circle]     
144                  \item  For a certain period,  we will have both system running at the same time
145                   \item remark: iterative transition is less painful for the developers :)
146       \end{itemize}
147       \item Incorporate \svn in the complex Atlas software management chain, it supposes impact to :
148       \begin{itemize}
149                  \setbeamertemplate{itemize items}[circle]     
150                   \item CMT
151                   \item Tag Collector
152                   \item Nicos
153       \end{itemize}
154       \item If successful, we could do the permanent failover; if not ... :(
155\end{enumerate}
156\end{block}
157}
158
159\frame
160{
161  \frametitle{CVS repository conversion}
162   \begin{block}{Conversion script}
163    For better understandings, we have developed our own
164   \texttt{cvs2svn} python script {\small (\texttt{\url{/afs/cern.ch/atlas/scripts/cvs2svn.py}})}:
165   \begin{itemize}
166                  \setbeamertemplate{itemize items}[circle]
167                   \item Keeps the history of all tags up to HEAD
168                   \item Skips the intermediate commits between 2 tags
169                   \item Can be applied iteratively
170   \end{itemize}     
171   \end{block}
172   \begin{block}{Definition of a repository organization}
173   \begin{itemize}
174   \item SVN gives full freedom in term of internal structure
175    \item Tags, branches are views to the source history
176   \begin{itemize}
177       \setbeamertemplate{itemize items}[circle]
178        \item  in CVS, they are metada applied to individual files)
179     and appear like directory structures
180   \end{itemize}
181   \item  Views can be freely modified and have revision number
182 \end{itemize}
183  \end{block}
184  }
185
186\frame
187{
188\frametitle{Converting CVS Repository to Subversion}
189 \begin{block}{}
190 \begin{itemize}
191\item We have selected the following organization for each project/package/tag:\\
192\texttt{\textcolor{blue}{
193<project>/.../<package>/trunk/...\\
194<project>/.../<package>/tags/<tag>/...}}
195\end{itemize}
196\end{block}
197
198 \begin{block}{}
199 \begin{itemize}
200 \item The complete Atlas cvs repository has been converted to a svn one. The svn url is :\\
201       {\small   \texttt{\url{file:///afs/cern.ch/atlas/software/svnrepository/repository}}}
202\item It takes a looong time to do that the first time
203 \begin{itemize}
204         \setbeamertemplate{itemize items}[circle]
205          \item Try different \svn backends: Berkley DB,  \underline{\svn file system} 
206          \item It takes me ~one week  to complete the procedure, e.g. 8 hours for the AtlasCore project
207          \item but update will only concern recent tags
208\end{itemize}
209\end{itemize}
210\end{block}
211}
212
213
214%            \item A "CVS complient" script is available at cern
215%                     \texttt{/afs/cern.ch/atlas/scripts/asvn}
216%             \item \url{http://uimon.cern.ch/twiki/bin/view/Atlas/StudiesForUsingSVNInAtlas}
217
218
219\frame
220{
221\frametitle{Performance and scalability}
222 \begin{block}{Test stress scenario}
223We define the following {\bf action} for an user:
224\begin{itemize}
225           \item User selects ramdomly a package
226           \item  He extracts and modifies it, then register it until the operation is succesful
227           \item Then he sleeps $n$ seconds with $n$ sort randomly $ \in [1, T_{max}]$
228\end{itemize}
229\end{block}
230
231\begin{block}{Experiment parameters}
232\begin{itemize}
233\item We have done experiments with different:
234\begin{itemize}
235            \setbeamertemplate{itemize items}[circle]
236             \item Total number of users (10, \textcolor{blue}{100}, 1000)
237             \item Total number of packages (10, \textcolor{blue}{1000}, 10.000)
238\end{itemize}
239\item Concurrent user actions were launched by a multi-threaded program
240({\small \texttt{ \url{/afs/cern.ch/user/v/vgaronne/svnTestStress}}})
241\end{itemize}
242\end{block}
243}
244
245\frame{
246\frametitle{Performance and scalability - Results}
247\begin{block}{}
248\begin{itemize}
249\item Let ${\cal R}atio$ be the ratio  $\frac {Total~number~of~users} {{Total~number~of~packages}}$
250\end{itemize}
251\end{block}
252
253\begin{block}{}
254We obtained :
255\small
256\begin{center}
257\begin{tabular}{ccc} 
258\hline  ${\cal R}atio$ & $T_{max}$ & Average action time (s)  \\ \hline 
2590.01 & 3600.0& 1.34   \\ 
2600.01 & 100.0& 1.06     \\ 
2610.01 & 10.0     & 1.38   \\ 
262\textcolor{blue}{0.1} & \textcolor{blue}{ 3600.0}  & \textcolor{blue}{5.77}     \\
2630.1&  100.0& 4.26         \\ 
264\textcolor{blue}{0.1} & \textcolor{blue}{10.0} &  \textcolor{blue}{6.96}          \\ 
2651.0 & 3600.0  & 7.42   \\ 
2661.0 & 100.0& 7.06         \\ 
2671.0 & 10.0& 8.88\\
268\end{tabular}
269\end{center}
270{\footnotesize\textcolor{blue}{**In blue, the values relevant for Atlas}}
271\end{block}
272}
273
274
275\frame{
276\frametitle{Synchronization operations}
277\begin{block} {Mainly at the user level:}
278\begin{itemize}
279             \item We proposed a script \texttt{"asvn"} that mimics the CVS syntax for SVN, including the synchronization operations on tags:
280             \begin{itemize}
281                        \setbeamertemplate{itemize items}[circle]
282                        \item Non exhaustive commands are: checkin,  checkout , tag,
283                        \item Provides also cmt specific commands working with SVN, e.g.
284                        recursive checkout,  svntags, svnsubprojects, ...
285                        \item see \url{/afs/cern.ch/atlas/scripts/asvn}                         
286             \end{itemize}             
287             \item \textcolor{red} {We assume that when users switch completely to svn for a package,
288             they will not work anymore with \cvs for this package, otherwise we will have integrity problems}             
289             \item The synchronization operation should be trigered at the user/developer level during tag operations\\
290                \texttt{> asvn --sync tag Package-00-00-01 Package}
291\end{itemize}
292\end{block}
293}
294
295\frame{
296\frametitle{Impact to the Atlas software management and tools}
297\frametitle{Synchronization operations}
298
299\begin{block} {Impact to the work model}
300\begin{itemize}
301\item  No real change is expected
302\end{itemize}
303\end{block}
304
305\begin{block} {Impact to the tools}
306\begin{itemize}
307                                \item CMT: The \texttt{"asvn"} script previously presented covers theses aspects
308                                 \item Tag Collector: Need an interface to SVN, but should much simpler than the interface to CVS. If not  possible immediately,
309                                     we could go on  temporally with the synchronized Atlas CVS repository
310                               \item  NICOS: Normaly only concerned with the checkout operation ?
311\end{itemize}
312\end{block}
313}
314
315%------------------------------- SECTION -------------------------%
316\section{Conclusion}
317\frame{
318\frametitle{Conclusion}
319}
320
321
322% Validation
323
324%------------------------------- SECTION -------------------------%
325\section{References}
326%------------------------------- FRAME-------------------------%
327\frame[allowframebreaks]
328{
329\frametitle{References}
330\nocite{subversion}
331\nocite{cvs2svn}
332\bibliographystyle{unsrt}
333\bibliography{CMT06-04-2006-sit}
334}
335
336\end{document}
337%------------------------------- End Of File -------------------------%
Note: See TracBrowser for help on using the repository browser.