]> pere.pagekite.me Git - homepage.git/blob - blog/Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html
Generated.
[homepage.git] / blog / Coz_can_help_you_find_bottlenecks_in_multi_threaded_software___nice_free_software.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Coz can help you find bottlenecks in multi-threaded software - nice free software</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/vim.css" />
9
10
11 </head>
12 <body>
13 <div class="title">
14 <h1>
15 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <div class="entry">
23 <div class="title">Coz can help you find bottlenecks in multi-threaded software - nice free software</div>
24 <div class="date">11th August 2016</div>
25 <div class="body"><p>This summer, I read a great article
26 "<a href="https://www.usenix.org/publications/login/summer2016/curtsinger">coz:
27 This Is the Profiler You're Looking For</a>" in USENIX ;login: about
28 how to profile multi-threaded programs. It presented a system for
29 profiling software by running experiences in the running program,
30 testing how run time performance is affected by "speeding up" parts of
31 the code to various degrees compared to a normal run. It does this by
32 slowing down parallel threads while the "faster up" code is running
33 and measure how this affect processing time. The processing time is
34 measured using probes inserted into the code, either using progress
35 counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END). It
36 can also measure unmodified code by measuring complete the program
37 runtime and running the program several times instead.</p>
38
39 <p>The project and presentation was so inspiring that I would like to
40 get the system into Debian. I
41 <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=830708">created
42 a WNPP request for it</a> and contacted upstream to try to make the
43 system ready for Debian by sending patches. The build process need to
44 be changed a bit to avoid running 'git clone' to get dependencies, and
45 to include the JavaScript web page used to visualize the collected
46 profiling information included in the source package.
47 But I expect that should work out fairly soon.</p>
48
49 <p>The way the system work is fairly simple. To run an coz experiment
50 on a binary with debug symbols available, start the program like this:
51
52 <p><blockquote><pre>
53 coz run --- program-to-run
54 </pre></blockquote></p>
55
56 <p>This will create a text file profile.coz with the instrumentation
57 information. To show what part of the code affect the performance
58 most, use a web browser and either point it to
59 <a href="http://plasma-umass.github.io/coz/">http://plasma-umass.github.io/coz/</a>
60 or use the copy from git (in the gh-pages branch). Check out this web
61 site to have a look at several example profiling runs and get an idea what the end result from the profile runs look like. To make the
62 profiling more useful you include &lt;coz.h&gt; and insert the
63 COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
64 code, rebuild and run the profiler. This allow coz to do more
65 targeted experiments.</p>
66
67 <p>A video published by ACM
68 <a href="https://www.youtube.com/watch?v=jE0V-p1odPg">presenting the
69 Coz profiler</a> is available from Youtube. There is also a paper
70 from the 25th Symposium on Operating Systems Principles available
71 titled
72 <a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger">Coz:
73 finding code that counts with causal profiling</a>.</p>
74
75 <p><a href="https://github.com/plasma-umass/coz">The source code</a>
76 for Coz is available from github. It will only build with clang
77 because it uses a
78 <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55606">C++
79 feature missing in GCC</a>, but I've submitted
80 <a href="https://github.com/plasma-umass/coz/pull/67">a patch to solve
81 it</a> and hope it will be included in the upstream source soon.</p>
82
83 <p>Please get in touch if you, like me, would like to see this piece
84 of software in Debian. I would very much like some help with the
85 packaging effort, as I lack the in depth knowledge on how to package
86 C++ libraries.</p>
87 </div>
88
89 <div class="tags">Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software</a>.</div>
90
91
92 </div>
93
94
95
96
97 <div id="sidebar">
98
99
100
101 <h2>Archive</h2>
102 <ul>
103
104 <li>2017
105 <ul>
106
107 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
108
109 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
110
111 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
112
113 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
114
115 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
116
117 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
118
119 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
120
121 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
122
123 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/10/">October (2)</a></li>
124
125 </ul></li>
126
127 <li>2016
128 <ul>
129
130 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
131
132 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
133
134 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
135
136 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
137
138 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
139
140 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
141
142 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
143
144 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
145
146 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
147
148 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
149
150 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
151
152 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
153
154 </ul></li>
155
156 <li>2015
157 <ul>
158
159 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
160
161 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
162
163 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
164
165 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
166
167 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
168
169 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
170
171 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
172
173 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
174
175 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
176
177 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
178
179 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
180
181 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
182
183 </ul></li>
184
185 <li>2014
186 <ul>
187
188 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
189
190 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
191
192 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
193
194 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
195
196 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
197
198 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
199
200 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
201
202 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
203
204 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
205
206 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
207
208 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
209
210 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
211
212 </ul></li>
213
214 <li>2013
215 <ul>
216
217 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
218
219 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
220
221 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
222
223 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
224
225 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
226
227 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
228
229 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
230
231 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
232
233 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
234
235 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
236
237 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
238
239 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
240
241 </ul></li>
242
243 <li>2012
244 <ul>
245
246 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
247
248 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
249
250 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
251
252 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
253
254 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
255
256 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
257
258 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
259
260 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
261
262 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
263
264 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
265
266 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
267
268 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
269
270 </ul></li>
271
272 <li>2011
273 <ul>
274
275 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
276
277 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
278
279 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
280
281 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
282
283 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
284
285 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
286
287 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
288
289 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
290
291 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
292
293 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
294
295 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
296
297 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
298
299 </ul></li>
300
301 <li>2010
302 <ul>
303
304 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
305
306 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
307
308 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
309
310 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
311
312 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
313
314 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
315
316 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
317
318 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
319
320 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
321
322 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
323
324 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
325
326 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
327
328 </ul></li>
329
330 <li>2009
331 <ul>
332
333 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
334
335 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
336
337 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
338
339 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
340
341 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
342
343 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
344
345 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
346
347 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
348
349 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
350
351 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
352
353 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
354
355 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
356
357 </ul></li>
358
359 <li>2008
360 <ul>
361
362 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
363
364 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
365
366 </ul></li>
367
368 </ul>
369
370
371
372 <h2>Tags</h2>
373 <ul>
374
375 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (14)</a></li>
376
377 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
378
379 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
380
381 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
382
383 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (9)</a></li>
384
385 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (16)</a></li>
386
387 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
388
389 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
390
391 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (154)</a></li>
392
393 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (158)</a></li>
394
395 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (4)</a></li>
396
397 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
398
399 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (17)</a></li>
400
401 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (24)</a></li>
402
403 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
404
405 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (354)</a></li>
406
407 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
408
409 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
410
411 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (30)</a></li>
412
413 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
414
415 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (18)</a></li>
416
417 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
418
419 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (42)</a></li>
420
421 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (15)</a></li>
422
423 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (20)</a></li>
424
425 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
426
427 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
428
429 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
430
431 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
432
433 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
434
435 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (39)</a></li>
436
437 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (9)</a></li>
438
439 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (293)</a></li>
440
441 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (189)</a></li>
442
443 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (33)</a></li>
444
445 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
446
447 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (64)</a></li>
448
449 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (104)</a></li>
450
451 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
452
453 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
454
455 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
456
457 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
458
459 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (10)</a></li>
460
461 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
462
463 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (5)</a></li>
464
465 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
466
467 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (53)</a></li>
468
469 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
470
471 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
472
473 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (55)</a></li>
474
475 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (6)</a></li>
476
477 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (12)</a></li>
478
479 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (52)</a></li>
480
481 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (3)</a></li>
482
483 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
484
485 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
486
487 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (59)</a></li>
488
489 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
490
491 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (40)</a></li>
492
493 </ul>
494
495
496 </div>
497 <p style="text-align: right">
498 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
499 </p>
500
501 </body>
502 </html>