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

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

mise à jour

File size: 15.1 KB
RevLine 
[168]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}
[174]39\institute{Laboratoire de l'Accélérateur Linéaire}
[168]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}
[170]52
53%------------------------------- SLIDE -------------------------%
[168]54\frame
55{
56% \frametitle{Outline}
57 \vfill
58   \begin{block}{Outline}
59 \tableofcontents[hideallsubsections]
60 \end{block}
61}
62
63%------------------------------- SECTION -------------------------%
64\section[svn introduction]{\svn in a nutshell} 
65
[170]66%------------------------------- SLIDE -------------------------%
[168]67\frame
68{
69 \frametitle{\svn in a nutshell}
70 \begin{block}{What is Subversion (or SVN) ?}
71\begin{itemize}
72            \item  Source code management system
73            \item  Open Source project (\url{http://subversion.tigris.org/})
74             \item \svn has new features that cover many limitations of \cvs
75             \item Subversion commands are very similar to \cvs, most of
76             the time it's a matter of  replacing \texttt{"cvs"} with \texttt{"svn"}~\cite{cvscrossover}
77\end{itemize}
78\end{block}
79
80\begin{block}{Questions for Atlas}
81As we have observed limitations/weird behaviors of \cvs:
82\begin{itemize}
83\item Is it appropriate to do a swap  ?
[174]84\item Are the Atlas developers enough
[168]85perturbed :) by the multi-projects structure without adding that ?
86\end{itemize}
87\end{block}
88}
89
90%------------------------------- SECTION -------------------------%
[174]91\section[CVS/SVN comparison]{\svn versus \cvs} 
[170]92
93%------------------------------- SLIDE -------------------------%
[168]94\frame
95{
96\frametitle{\cvs versus \svn}
97\begin{itemize}
98      \item \svn really works faster than \cvs :
99      \begin{itemize}
100      \setbeamertemplate{itemize items}[circle]     
101          \item Transmits less information through the network
102           \item Supports more operations for offline mode, e.g
103           client sends deltas to server when committing
104        \end{itemize}
105%      \item More details : 
106\end{itemize}
107\scriptsize
108\begin{table}[htb]
109\begin{center}
110\begin{tabular}{|l|c|c|}
111\hline
112\texttt { \large \bf \textcolor{blue}{Source code management system}} & {\bf \large  \textcolor{blue}{\cvs} } & {\bf \large  \textcolor{blue}{\svn}}  \\ 
113\hline
114\hline
115\texttt {\bf Atomic Commits } & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
116\texttt    {\bf Efficient (constant-time) tagging } & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
117\texttt {\bf File renames handles cleanly (renaming, moving)} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
118\texttt {\bf Advanced Merging Features} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
119\texttt {\bf Manipulation of all the file types} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
120\texttt {\bf Easy Development on Branches} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
121\texttt {\bf Easy Server Administration} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
122\texttt {\bf Remote Repository Replication} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
123\texttt {\bf Scalable Performance and Admin} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
124\texttt {\bf Advanced repository permissions Features}  & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
125\texttt {\bf Web Browser Interfaces} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
126\texttt {\bf HTTP proxy to connect the server} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
127\end{tabular} 
128\end{center}
129\end{table}
130** For more infos, look~\cite{svnvscvs}
131}
132
133%------------------------------- SECTION -------------------------%
134\section[Proposal]{Proposal for Atlas} 
[170]135
136%------------------------------- SLIDE -------------------------%
[168]137\frame
138{
139\frametitle{Scenario for Atlas}
140
141\begin{block}{ Roadmap}
142\begin{enumerate}
143      \item Convert the Atlas CVS repository into a Subversion one
144      \begin{itemize}
145               \setbeamertemplate{itemize items}[circle]     
146                \item  A tool exists,  \texttt{"cvs2svn"} (\url{http://cvs2svn.tigris.org})
147       \end{itemize}
148      \item Provide tools to provide synchronization operations between \cvs and \svn repositories
149       \begin{itemize}
150                 \setbeamertemplate{itemize items}[circle]     
151                  \item  For a certain period,  we will have both system running at the same time
152                   \item remark: iterative transition is less painful for the developers :)
153       \end{itemize}
154       \item Incorporate \svn in the complex Atlas software management chain, it supposes impact to :
155       \begin{itemize}
156                  \setbeamertemplate{itemize items}[circle]     
157                   \item CMT
158                   \item Tag Collector
159                   \item Nicos
160       \end{itemize}
[174]161       \item If successful, we could do the permanent switch; if not ... :(
[168]162\end{enumerate}
163\end{block}
164}
165
[170]166%------------------------------- SLIDE -------------------------%
[168]167\frame
168{
169  \frametitle{CVS repository conversion}
170   \begin{block}{Conversion script}
171    For better understandings, we have developed our own
172   \texttt{cvs2svn} python script {\small (\texttt{\url{/afs/cern.ch/atlas/scripts/cvs2svn.py}})}:
173   \begin{itemize}
174                  \setbeamertemplate{itemize items}[circle]
175                   \item Keeps the history of all tags up to HEAD
176                   \item Skips the intermediate commits between 2 tags
177                   \item Can be applied iteratively
178   \end{itemize}     
179   \end{block}
180   \begin{block}{Definition of a repository organization}
181   \begin{itemize}
[172]182   \item SVN gives full freedom in terms of internal structure
[168]183    \item Tags, branches are views to the source history
184   \begin{itemize}
185       \setbeamertemplate{itemize items}[circle]
[174]186        \item  in CVS, they are meta-data applied to individual files
[168]187     and appear like directory structures
188   \end{itemize}
189   \item  Views can be freely modified and have revision number
190 \end{itemize}
191  \end{block}
192  }
193
[170]194%------------------------------- SLIDE -------------------------%
[168]195\frame
196{
197\frametitle{Converting CVS Repository to Subversion}
198 \begin{block}{}
199 \begin{itemize}
200\item We have selected the following organization for each project/package/tag:\\
201\texttt{\textcolor{blue}{
202<project>/.../<package>/trunk/...\\
203<project>/.../<package>/tags/<tag>/...}}
204\end{itemize}
205\end{block}
206
207 \begin{block}{}
208 \begin{itemize}
209 \item The complete Atlas cvs repository has been converted to a svn one. The svn url is :\\
210       {\small   \texttt{\url{file:///afs/cern.ch/atlas/software/svnrepository/repository}}}
211\item It takes a looong time to do that the first time
212 \begin{itemize}
213         \setbeamertemplate{itemize items}[circle]
214          \item Try different \svn backends: Berkley DB,  \underline{\svn file system} 
215          \item It takes me ~one week  to complete the procedure, e.g. 8 hours for the AtlasCore project
216          \item but update will only concern recent tags
217\end{itemize}
218\end{itemize}
219\end{block}
220}
221
[170]222%------------------------------- SLIDE -------------------------%
223\frame
224{
225\frametitle{Conversion validation and management tools}
[168]226
[170]227\begin{block}{Conversion validation tools}
228\begin{itemize}
229\item We have implemented several tests to check the quality of the
230conversion:
231\begin{itemize}
232         \setbeamertemplate{itemize items}[circle]
233         \item  Comparing the sources at each tag with diff tests
[172]234          \item Comparing the list of tags for a package
[170]235         \item Check global structure of the \svn repository
236         \item \url{/afs/cern.ch/atlas/scripts/testcvs2svn.py}
237\end{itemize}
238\end{itemize}
239\end{block}
240
241\begin{block}{Management tools}
242\begin{itemize}
243\item We have also implemented a script which re-organizes the SVN repository:\\
244\texttt{ \textcolor{blue}{
245<project>/.../<package>/trunk/...\\
246<project>/.../<package>/<tag>/...}}
247\end{itemize}
248\end{block}
249}
250
251
[168]252%            \item A "CVS complient" script is available at cern
253%                     \texttt{/afs/cern.ch/atlas/scripts/asvn}
254%             \item \url{http://uimon.cern.ch/twiki/bin/view/Atlas/StudiesForUsingSVNInAtlas}
255
[170]256%------------------------------- SLIDE -------------------------%
[168]257\frame
258{
259\frametitle{Performance and scalability}
260 \begin{block}{Test stress scenario}
261We define the following {\bf action} for an user:
262\begin{itemize}
[172]263           \item User selects randomly a package
264           \item  He extracts and modifies it, then registers it until the operation is successful
[168]265           \item Then he sleeps $n$ seconds with $n$ sort randomly $ \in [1, T_{max}]$
266\end{itemize}
267\end{block}
268
269\begin{block}{Experiment parameters}
270\begin{itemize}
271\item We have done experiments with different:
272\begin{itemize}
273            \setbeamertemplate{itemize items}[circle]
274             \item Total number of users (10, \textcolor{blue}{100}, 1000)
275             \item Total number of packages (10, \textcolor{blue}{1000}, 10.000)
276\end{itemize}
277\item Concurrent user actions were launched by a multi-threaded program
[170]278({\small\texttt{\url{/afs/cern.ch/user/v/vgaronne/svnTestStress}}})
[168]279\end{itemize}
280\end{block}
281}
282
[170]283%------------------------------- SLIDE -------------------------%
[168]284\frame{
285\frametitle{Performance and scalability - Results}
286\begin{block}{}
287\begin{itemize}
288\item Let ${\cal R}atio$ be the ratio  $\frac {Total~number~of~users} {{Total~number~of~packages}}$
289\end{itemize}
290\end{block}
291
292\begin{block}{}
293We obtained :
294\small
295\begin{center}
296\begin{tabular}{ccc} 
297\hline  ${\cal R}atio$ & $T_{max}$ & Average action time (s)  \\ \hline 
2980.01 & 3600.0& 1.34   \\ 
2990.01 & 100.0& 1.06     \\ 
3000.01 & 10.0     & 1.38   \\ 
301\textcolor{blue}{0.1} & \textcolor{blue}{ 3600.0}  & \textcolor{blue}{5.77}     \\
3020.1&  100.0& 4.26         \\ 
303\textcolor{blue}{0.1} & \textcolor{blue}{10.0} &  \textcolor{blue}{6.96}          \\ 
3041.0 & 3600.0  & 7.42   \\ 
3051.0 & 100.0& 7.06         \\ 
3061.0 & 10.0& 8.88\\
307\end{tabular}
308\end{center}
309{\footnotesize\textcolor{blue}{**In blue, the values relevant for Atlas}}
310\end{block}
311}
312
[170]313%------------------------------- SLIDE -------------------------%
[168]314\frame{
315\frametitle{Synchronization operations}
316\begin{block} {Mainly at the user level:}
317\begin{itemize}
318             \item We proposed a script \texttt{"asvn"} that mimics the CVS syntax for SVN, including the synchronization operations on tags:
319             \begin{itemize}
320                        \setbeamertemplate{itemize items}[circle]
[170]321                        \item Non exhaustive commands are: checkin,  checkout , tag, ...
[168]322                        \item Provides also cmt specific commands working with SVN, e.g.
323                        recursive checkout,  svntags, svnsubprojects, ...
324                        \item see \url{/afs/cern.ch/atlas/scripts/asvn}                         
325             \end{itemize}             
326             \item \textcolor{red} {We assume that when users switch completely to svn for a package,
327             they will not work anymore with \cvs for this package, otherwise we will have integrity problems}             
[172]328             \item The synchronization operation should be triggered at the user/developer level during tag operations\\
[168]329                \texttt{> asvn --sync tag Package-00-00-01 Package}
330\end{itemize}
331\end{block}
332}
333
[170]334%------------------------------- SLIDE -------------------------%
[168]335\frame{
[170]336\frametitle{Impact to the Atlas software management chain and tools}
[168]337
338\begin{block} {Impact to the work model}
339\begin{itemize}
340\item  No real change is expected
341\end{itemize}
342\end{block}
343
344\begin{block} {Impact to the tools}
345\begin{itemize}
[172]346                                \item CMT: The \texttt{"asvn"} script previously presented covers these aspects
347                                 \item Tag Collector: Needs an interface to SVN, but should be much simpler than the interface to CVS. If not  possible immediately,
[168]348                                     we could go on  temporally with the synchronized Atlas CVS repository
[170]349                               \item  NICOS: Normaly only concerned with checkout operations ?
[168]350\end{itemize}
351\end{block}
352}
353
[171]354
355%------------------------------- SLIDE -------------------------%
[172]356\frame{ 
[171]357\frametitle{A brief summary by pictures}
[172]358%\begin{center}
359      %\vfill
360      \includegraphics<1>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration00}
361      \includegraphics<2>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration01}
362      \includegraphics<3>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration02}
363      \includegraphics<4>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration03}
364      \includegraphics<5>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration04}
365      \includegraphics<6>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration05}
366%+\end{center}
[171]367}
368
[168]369%------------------------------- SECTION -------------------------%
370\section{Conclusion}
[170]371
372%------------------------------- SLIDE -------------------------%
[168]373\frame{
374\frametitle{Conclusion}
375
[170]376\begin{block} {}
377\begin{itemize}
[172]378\item All the necessary tools are in place to begin using SVN in Atlas
[170]379\item Testing by real users, will help to tune and improve these tools
[172]380\item Doing more tests to validate the atlas svn repository
[170]381\item  Implementing the interface to SVN in Tag Collector, depends
382          on TC team availability
383\end{itemize}
384\end{block} 
[168]385
[172]386\begin{block} {Future}
[170]387\begin{itemize} 
[172]388           \item  SVN brings lots of new interesting features, that we could use incrementally :
[170]389            \begin{itemize} 
390                      \setbeamertemplate{itemize items}[circle]
391                      \item Metadata features
392                      \item  Real Multi-repository
393                       \item  Directory management
394                       \item Transparent branch management
395          \end{itemize}
396\end{itemize}
397\end{block} 
398}
[168]399
400%------------------------------- SECTION -------------------------%
[170]401\section*{References}
402
403%------------------------------- SLIDE -------------------------%
[168]404\frame[allowframebreaks]
405{
406\frametitle{References}
407\nocite{subversion}
408\nocite{cvs2svn}
409\bibliographystyle{unsrt}
410\bibliography{CMT06-04-2006-sit}
411}
412
413\end{document}
414%------------------------------- End Of File -------------------------%
Note: See TracBrowser for help on using the repository browser.