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
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}
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
[169]310                               \item  NICOS: Normaly only concerned with the checkout operation ?
[168]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.