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

Last change on this file since 172 was 172, checked in by garonne, 20 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}
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}
[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 ?
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}
[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}
161 \item If successful, we could do the permanent failover; if not ... :(
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]
[172]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.