source: cmtsite/tbroadcast.html@ 689

Last change on this file since 689 was 268, checked in by garonne, 19 years ago

Ajout phpmyvisites

  • Property svn:eol-style set to native
File size: 5.9 KB
Line 
1<!--
2//-----------------------------------------------------------
3// Copyright Christian Arnault LAL-Orsay CNRS
4// arnault@lal.in2p3.fr
5// See the complete license in cmt_license.txt "http://www.cecill.info".
6//-----------------------------------------------------------
7-->
8
9<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
10<html>
11 <head>
12<!-- phpmyvisites -->
13<a href="http://www.phpmyvisites.net/" title="phpMyVisites | Open source web analytics"
14onclick="window.open(this.href);return(false);">
15<script type="text/javascript">
16<!--
17var a_vars = Array();
18var pagename='';
19
20var phpmyvisitesSite = 1;
21var phpmyvisitesURL = "http://www.cmtsite.org/phpmv2/phpmyvisites.php";
22//-->
23</script>
24<script language=javascript src="http://www.cmtsite.org/phpmv2/phpmyvisites.js"
25type="text/javascript"></script>
26<noscript>
27<p>phpMyVisites | Open source web analytics
28<img src="http://www.cmtsite.org/phpmv2/phpmyvisites.php" alt="phpMyVisites" style="border:0" />
29</p>
30</noscript>
31</a>
32<!-- /phpmyvisites -->
33
34
35 <title>MultiThreaded broadcast utility</title>
36 </head>
37
38 <font face="Arial, Helvetica" color="#000000">
39
40 <body bgcolor="#ffffff" link="#550088" alink="#007777" alink="#007777">
41 <h1>MultiThreaded broadcast utility</h1>
42
43 <p>This document presents a multithreaded version of the cmt
44 broadcast facility.</p>
45
46 <p>This is a standalone program and NOT a new feature of CMT. If
47 it appears to be safe and reliable, then of course it may become
48 part of the plain CMT.</p>
49
50 <p>This program (named tbroadcast - for "threaded broadcast")
51 basically operates very much like "cmt broadcast", ie it accepts
52 most of the same options and produces the same output.</p>
53
54 <p>Report on the CMT mailing list your experience, bugs, comments,
55 ... and measurements ! Of course the expected improvement will
56 largely depend on the type of command and on the number of
57 processors...</p>
58
59 <hr />
60 <h2>Principle</h2>
61
62 <blockquote>
63
64 The use network forms a Directed Acyclic Graph [DAG] (or if
65 there are cycles, they are detected and properly handled).
66
67 <p><b>tbroadcast</b> first gets all "leaves" of the use graph, and
68 launches the requested command onto them in parallel in
69 individual [POSIX]threads.</p>
70
71 <p>Then, once all children of a non-leaf package are completed,
72 the requested command is launched onto this non-leaf package
73 [still in an individual thread].</p>
74
75 <p>This is recursively repeated until all packages have been
76 reached.</p>
77
78 <p>At any time the number of active threads is controlled so as
79 to never exceed a limit [set to 20 threads by default but can be
80 modified using the <b>-threads=n</b> option]. A local scheduler
81 maintains a queue of threads when the limit is reached.</p>
82
83 <p>The individual thread activity consists in running the
84 requested command - as usual - in the context of the reached
85 package. The difference with the sequential <b>cmt broadcast</b>
86 of course is that the output of the run is accumulated and
87 displayed at once when every action is completed [to avoid
88 intermixing of outputs from different threads].</p>
89
90 <p>When one activity returns an error, the error status is
91 propagated to its parent which will prematurely complete, but
92 not before all other simultaneously running threads are actually
93 completed.</p>
94
95 <p>It's only when the threads of ALL children are completed
96 (with success or error) that a node either starts (if all
97 children successfully completed) or immediately terminates (if
98 one of its children failed).</p>
99
100 </blockquote>
101
102 <hr />
103
104 <h2>How to use it:</h2>
105
106 <blockquote>
107
108 <ul>
109
110 <li> The source kit is available for Linux platforms only from CVS:
111
112 <pre>
113&gt; export CVSROOT=:pserver:anonymous@cvsserver.lal.in2p3.fr:/projects/cvs
114&gt; cvs login
115[no password]
116&gt; cd /somewhere
117&gt; cvs co -d tbroadcast CMT/tbroadcast
118&gt; cd tbroadcast/cmt
119&gt; cmt config
120&gt; gmake
121 </pre>
122
123 </li>
124
125 <li> The application is also available for Linux platforms
126 at CERN:
127
128 <pre>
129${CMTROOT}/../tbroadcast/v1/Linux/tbroadcast
130 </pre>
131
132 </li>
133
134 <li> The options are:
135
136 <pre>
137&gt; tbroadcast [option...] [shell-command]
138
139 where option can be:
140
141 -select="&lt;selection-list&gt;"
142 -exclude="&lt;exclusion-list&gt;"
143 -begin=&lt;begin-pattern&gt;
144 -global Reach packages in all CMTPATH items
145 -threads=&lt;n&gt; Change the maximum thread number [default is 20]
146
147 &lt;selection-list&gt; is a space-separated list of sub-strings that actual paths of
148 all reached packages must match
149
150 &lt;exclusion-list&gt; is a space-separated list of sub-strings that actual paths of
151 all reached packages must NOT match
152
153 &lt;begin-pattern&gt; is a sub-string matching a package path for beginning the broadcast loop
154
155 -select=, -exclude=, -begin= can be combined
156
157 -select=, -exclude= can be accumulated
158
159 </pre>
160
161 <p>If the shell-command is omitted, the broadcast loop
162 simply traverses the graph, reaching all packages and
163 doing nothing. This is useful to test the traversal.</p>
164
165 </blockquote>
166
167 <hr />
168 <h2>Examples</h2>
169
170 <blockquote>
171
172 <i>This example shows how to use tbroadcast in the context of the Atlas project</i>
173
174 <pre>&gt; source setup.sh -tag=7.5.0
175&gt; cd .....dist/7.5.0/AtlasRelease/*/cmt
176&gt alias tbroadcast=$CMTROOT/../tbroadcast/v1/Linux/tbroadcast
177&gt; tbroadcast -select=/Database/
178&gt; tbroadcast -global
179&gt; tbroadcast -begin=/StoreGate/
180
181 </pre>
182
183 </blockquote>
184
185 <hr>
186 <address><a href="mailto:arnault@lal.in2p3.fr">Christian Arnault</a></address>
187<!-- Created: Fri Jan 30 12:20:51 CET 2004 -->
188<!-- hhmts start -->
189Last modified: Fri Jan 30 12:50:46 CET 2004
190<!-- hhmts end -->
191 </body>
192 </font>
193</html>
Note: See TracBrowser for help on using the repository browser.