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

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

Mise à jour presentation

File size: 14.4 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
53%------------------------------- SLIDE -------------------------%
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
66%------------------------------- SLIDE -------------------------%
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  ?
84\item Is the atlas developer is enough
85perturbed :) by the multi-projects structure without adding that ?
86\end{itemize}
87\end{block}
88}
89
90%------------------------------- SECTION -------------------------%
91\section[CVS/SVN comparison]{\cvs versus \svn} 
92
93%------------------------------- SLIDE -------------------------%
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} 
135
136%------------------------------- SLIDE -------------------------%
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}
161       \item If successful, we could do the permanent failover; if not ... :(
162\end{enumerate}
163\end{block}
164}
165
166%------------------------------- SLIDE -------------------------%
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}
182   \item SVN gives full freedom in term of internal structure
183    \item Tags, branches are views to the source history
184   \begin{itemize}
185       \setbeamertemplate{itemize items}[circle]
186        \item  in CVS, they are metada applied to individual files)
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
194%------------------------------- SLIDE -------------------------%
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
222%------------------------------- SLIDE -------------------------%
223\frame
224{
225\frametitle{Conversion validation and management tools}
226
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
234          \item Comparing the list of tags for a packages
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
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
256%------------------------------- SLIDE -------------------------%
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}
263           \item User selects ramdomly a package
264           \item  He extracts and modifies it, then register it until the operation is succesful
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
278({\small\texttt{\url{/afs/cern.ch/user/v/vgaronne/svnTestStress}}})
279\end{itemize}
280\end{block}
281}
282
283%------------------------------- SLIDE -------------------------%
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
313%------------------------------- SLIDE -------------------------%
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]
321                        \item Non exhaustive commands are: checkin,  checkout , tag, ...
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}             
328             \item The synchronization operation should be trigered at the user/developer level during tag operations\\
329                \texttt{> asvn --sync tag Package-00-00-01 Package}
330\end{itemize}
331\end{block}
332}
333
334%------------------------------- SLIDE -------------------------%
335\frame{
336\frametitle{Impact to the Atlas software management chain and tools}
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}
346                                \item CMT: The \texttt{"asvn"} script previously presented covers theses aspects
347                                 \item Tag Collector: Need an interface to SVN, but should much simpler than the interface to CVS. If not  possible immediately,
348                                     we could go on  temporally with the synchronized Atlas CVS repository
349                               \item  NICOS: Normaly only concerned with checkout operations ?
350\end{itemize}
351\end{block}
352}
353
354%------------------------------- SECTION -------------------------%
355\section{Conclusion}
356
357%------------------------------- SLIDE -------------------------%
358\frame{
359\frametitle{Conclusion}
360
361\begin{block} {}
362\begin{itemize}
363\item All the necessary tools are in place for begin using SVN in Atlas
364\item Testing by real users, will help to tune and improve these tools
365\item Doing more tests for validating the atlas svn repository
366\item  Implementing the interface to SVN in Tag Collector, depends
367          on TC team availability
368\end{itemize}
369\end{block} 
370
371\begin{block} {Futur}
372\begin{itemize} 
373           \item  SVN brings lots of new interesting features, that we could used incrementally :
374            \begin{itemize} 
375                      \setbeamertemplate{itemize items}[circle]
376                      \item Metadata features
377                      \item  Real Multi-repository
378                       \item  Directory management
379                       \item Transparent branch management
380          \end{itemize}
381\end{itemize}
382\end{block} 
383}
384
385%------------------------------- SECTION -------------------------%
386\section*{References}
387
388%------------------------------- SLIDE -------------------------%
389\frame[allowframebreaks]
390{
391\frametitle{References}
392\nocite{subversion}
393\nocite{cvs2svn}
394\bibliographystyle{unsrt}
395\bibliography{CMT06-04-2006-sit}
396}
397
398\end{document}
399%------------------------------- End Of File -------------------------%
Note: See TracBrowser for help on using the repository browser.