<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://t2bwiki.iihe.ac.be/index.php?action=history&amp;feed=atom&amp;title=DCache</id>
	<title>DCache - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://t2bwiki.iihe.ac.be/index.php?action=history&amp;feed=atom&amp;title=DCache"/>
	<link rel="alternate" type="text/html" href="https://t2bwiki.iihe.ac.be/index.php?title=DCache&amp;action=history"/>
	<updated>2026-04-20T09:46:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://t2bwiki.iihe.ac.be/index.php?title=DCache&amp;diff=911&amp;oldid=prev</id>
		<title>OLIVIER DEVROEDE omdevroe@vub.ac.be: /* Chimera commands */</title>
		<link rel="alternate" type="text/html" href="https://t2bwiki.iihe.ac.be/index.php?title=DCache&amp;diff=911&amp;oldid=prev"/>
		<updated>2017-12-13T13:31:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Chimera commands&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:31, 13 December 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cation=&amp;#039;behar081_5&amp;#039;;&amp;quot; --output list-of-files-that-should-be-on-behar081_5-according-to-Chimera&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cation=&amp;#039;behar081_5&amp;#039;;&amp;quot; --output list-of-files-that-should-be-on-behar081_5-according-to-Chimera&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Far more chimera shortcuts can be found in [https://indico.desy.de/indico/event/11773/contribution/6/material/slides/1.pdf this talk] by Dmitry Litvintsev&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== postgres tuning ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== postgres tuning ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== benchmark ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== benchmark ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>OLIVIER DEVROEDE omdevroe@vub.ac.be</name></author>
	</entry>
	<entry>
		<id>https://t2bwiki.iihe.ac.be/index.php?title=DCache&amp;diff=908&amp;oldid=prev</id>
		<title>OLIVIER DEVROEDE omdevroe@vub.ac.be at 11:04, 6 December 2017</title>
		<link rel="alternate" type="text/html" href="https://t2bwiki.iihe.ac.be/index.php?title=DCache&amp;diff=908&amp;oldid=prev"/>
		<updated>2017-12-06T11:04:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:04, 6 December 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*SRM manual https://sdm.lbl.gov/srm-wg/doc/SRM.v2.2.html&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*SRM manual https://sdm.lbl.gov/srm-wg/doc/SRM.v2.2.html&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Chimera commands ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Find all files that are supposed to be on a certain pool&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;psql --no-align --tuples-only --username postgres --dbname chimera --command &quot;select inode2path(ipnfsid)  from t_inodes  t1, t_locationinfo t2  where   t1.inumber=t2.inumber and t2.ilo&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cation=&#039;behar081_5&#039;;&quot; --output list-of-files-that-should-be-on-behar081_5-according-to-Chimera&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== postgres tuning ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== postgres tuning ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== benchmark ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== benchmark ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>OLIVIER DEVROEDE omdevroe@vub.ac.be</name></author>
	</entry>
	<entry>
		<id>https://t2bwiki.iihe.ac.be/index.php?title=DCache&amp;diff=79&amp;oldid=prev</id>
		<title>Maintenance script: Created page with &quot; === monitoring === *SRM monitor http://maite.iihe.ac.be:8098/billing/xml/ *dcache head page http://maite.iihe.ac.be:2288 *SRM manual https://sdm.lbl.gov/srm-wg/doc/SRM.v2....&quot;</title>
		<link rel="alternate" type="text/html" href="https://t2bwiki.iihe.ac.be/index.php?title=DCache&amp;diff=79&amp;oldid=prev"/>
		<updated>2015-08-26T12:28:26Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; === monitoring === *SRM monitor http://maite.iihe.ac.be:8098/billing/xml/ *dcache head page http://maite.iihe.ac.be:2288 *SRM manual https://sdm.lbl.gov/srm-wg/doc/SRM.v2....&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
=== monitoring ===&lt;br /&gt;
*SRM monitor http://maite.iihe.ac.be:8098/billing/xml/&lt;br /&gt;
*dcache head page http://maite.iihe.ac.be:2288&lt;br /&gt;
*SRM manual https://sdm.lbl.gov/srm-wg/doc/SRM.v2.2.html&lt;br /&gt;
&lt;br /&gt;
=== postgres tuning ===&lt;br /&gt;
==== benchmark ====&lt;br /&gt;
*http://edoceo.com/liber/db-postgresql-benchmark&lt;br /&gt;
*switch to postgres user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*initialise the benchmark db &lt;br /&gt;
**&amp;lt;tt&amp;gt;-s&amp;lt;/tt&amp;gt; for maximum of active clients&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
createdb testdb&lt;br /&gt;
pgbench -i testdb -s 25&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*run the benchmark&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgbench -c 10 -t 100 testdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
## number of clients&lt;br /&gt;
clients=&amp;quot;1 10 25 50 75 100&amp;quot;&lt;br /&gt;
#clients=&amp;quot;1 2&amp;quot;&lt;br /&gt;
## number of transactions&lt;br /&gt;
trans=&amp;quot;100 500 1000 2000 5000 10000 50000&amp;quot;&lt;br /&gt;
#trans=&amp;quot;100 200&amp;quot;&lt;br /&gt;
## scaling factor used for intialisastion &lt;br /&gt;
scaling_fact=&amp;quot;1 5 10 15 20&amp;quot;&lt;br /&gt;
#scaling_fact=&amp;quot;1 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
## number of retries&lt;br /&gt;
stats=100&lt;br /&gt;
#stats=5&lt;br /&gt;
&lt;br /&gt;
for sc in $scaling_fact&lt;br /&gt;
do&lt;br /&gt;
 dropdb testdb &amp;gt;&amp;amp; /dev/null&lt;br /&gt;
 createdb testdb &amp;gt;&amp;amp; /dev/null&lt;br /&gt;
 pgbench -i testdb -s $sc &amp;gt;&amp;amp; /dev/null&lt;br /&gt;
 for c in $clients&lt;br /&gt;
 do&lt;br /&gt;
   for t in $trans&lt;br /&gt;
   do&lt;br /&gt;
     tot_i=0&lt;br /&gt;
     for s in &amp;lt;tt&amp;gt;seq 1 $stats&amp;lt;/tt&amp;gt;&lt;br /&gt;
     do&lt;br /&gt;
       pgbench -c $c -t $t testdb &amp;gt;&amp;amp; /tmp/out-pgbench&lt;br /&gt;
       echo &amp;quot;pgbench -c $c -t $t testdb&amp;quot; &amp;gt;&amp;gt; /tmp/out-pgbench&lt;br /&gt;
       tps=&amp;lt;tt&amp;gt;cat /tmp/out-pgbench|grep tps|grep including|sed &amp;#039;s/.* \([0-9]\+\).*/\1/&amp;#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
       echo &amp;quot;TPS_INTERMEDIATE= $tps Run $s Clients $c Transfers $t Scaling $sc&amp;quot;&lt;br /&gt;
       tot_i=$(($tot_i + $tps))&lt;br /&gt;
     done&lt;br /&gt;
     tot_i=$(($tot_i/$stats))&lt;br /&gt;
     echo &amp;quot;TPS= $tot_i Clients $c Transfers $t Scaling $sc&amp;quot;&lt;br /&gt;
   done  &lt;br /&gt;
  done&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== tuning ====&lt;br /&gt;
==== disk layout ====&lt;br /&gt;
*WAL logs on a different disk or not?&lt;br /&gt;
**4 disk setup&lt;br /&gt;
**1 device in 4 disk RAID10&lt;br /&gt;
***higher throughput, interesting for reading (i guess)&lt;br /&gt;
**2 devices in 2 * 2 disk RAID1&lt;br /&gt;
***WAL/OS on a separate disk, WAL on own partition&lt;br /&gt;
***OS/other software doesn&amp;#039;t do a lot of IO (or lets hope it&amp;#039;s not all fsync&amp;#039;ed)&lt;br /&gt;
***write-through for WAL device&lt;br /&gt;
***small sized partition for WAL is fine &lt;br /&gt;
****http://www.postgresql.org/docs/8.2/interactive/wal-configuration.html&lt;br /&gt;
****current production system (postgres 8.1) has 7 of these files (as in documentation)&lt;br /&gt;
***no journalling on WAL partition&lt;br /&gt;
***mount with noatime and symlink to pg_xlog&lt;br /&gt;
***DB on another &lt;br /&gt;
***write-back on&lt;br /&gt;
***XFS&lt;br /&gt;
==== disk benchmarks ====&lt;br /&gt;
*small script to test iozone performance.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
## size in MB&lt;br /&gt;
size_step=5&lt;br /&gt;
size_steps_start=2&lt;br /&gt;
size_steps_nr=2&lt;br /&gt;
&lt;br /&gt;
## max number of files, step of 1&lt;br /&gt;
steps=2&lt;br /&gt;
dest=&amp;quot;/var/lib/pgsql/test /var/tmp/test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
out=iozone-out-&amp;lt;tt&amp;gt;date +%s&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for d in $dest&lt;br /&gt;
do&lt;br /&gt;
  for j in &amp;lt;tt&amp;gt;seq $size_steps_start $(($size_steps_start+$size_steps_nr))&amp;lt;/tt&amp;gt;&lt;br /&gt;
  do&lt;br /&gt;
    size=$(($j*$size_step))&lt;br /&gt;
    ioz=&amp;quot;iozone -eM -s${size}M -r64k -i0 -i1 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
    for i in &amp;lt;tt&amp;gt;seq 1 $steps&amp;lt;/tt&amp;gt;&lt;br /&gt;
    do&lt;br /&gt;
      files=&amp;quot;&amp;quot;&lt;br /&gt;
      rm -Rf $d &amp;gt;&amp;amp; /dev/null&lt;br /&gt;
      mkdir -p $d &amp;gt;&amp;amp; /dev/null&lt;br /&gt;
      for t in &amp;lt;tt&amp;gt;seq 1 $i&amp;lt;/tt&amp;gt;&lt;br /&gt;
      do&lt;br /&gt;
        files=&amp;quot;$files $d/out$t&amp;quot;&lt;br /&gt;
      done&lt;br /&gt;
      echo &amp;quot;BEGIN&amp;quot; &amp;gt;&amp;gt; $out &lt;br /&gt;
      echo &amp;lt;tt&amp;gt;date&amp;lt;/tt&amp;gt; &amp;gt;&amp;gt; $out    &lt;br /&gt;
      echo &amp;quot;$ioz -t $i -F $files&amp;quot; &amp;gt;&amp;gt; $out&lt;br /&gt;
      $ioz -t $i -F $files &amp;gt;&amp;gt; $out 2&amp;gt;&amp;amp;1&lt;br /&gt;
      echo &amp;lt;tt&amp;gt;date&amp;lt;/tt&amp;gt; &amp;gt;&amp;gt; $out &lt;br /&gt;
      echo  &amp;quot;END&amp;quot; &amp;gt;&amp;gt; $out   &lt;br /&gt;
    done&lt;br /&gt;
    rm -Rf $d &amp;gt;&amp;amp; /dev/null&lt;br /&gt;
  done&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*on solaris, replace seq sequences with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perl -e &amp;quot;\$,=&amp;#039; &amp;#039;; print 1 .. $i;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== links ====&lt;br /&gt;
*http://edoceo.com/liber/db-postgresql-performance&lt;br /&gt;
*http://www.postgresql.org/docs/8.2/interactive/kernel-resources.html&lt;br /&gt;
*http://www.powerpostgresql.com/PerfList&lt;br /&gt;
*http://www.gmod.org/wiki/index.php/PostgreSQL_Performance_Tips&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== postgres DBs ===&lt;br /&gt;
==== dump ====&lt;br /&gt;
==== pg_dump ====&lt;br /&gt;
*This is compressed and allows usage of pg_restore (eg to only restore the data).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pg_dump -F c -f &amp;lt;destinationfile&amp;gt; &amp;lt;name of db&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== pg_dumpall ====&lt;br /&gt;
*brute force&lt;br /&gt;
*no selective restore (easily) possible&lt;br /&gt;
*the &amp;lt;tt&amp;gt;gzip&amp;lt;/tt&amp;gt; part is for compression&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pg_dumpall | gzip &amp;gt; &amp;lt;destination file&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== recover ====&lt;br /&gt;
==== pg_restore ====&lt;br /&gt;
**example 1: only restore data &lt;br /&gt;
**assumes the schema is there through some other means&lt;br /&gt;
**name of DB is extracted from filedump&lt;br /&gt;
**needs output from pg_dump with &amp;lt;tt&amp;gt;-F c&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pg_restore -a -F c -d &amp;lt;name of DB&amp;gt; &amp;lt;name of file&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== from pg_dumpall ====&lt;br /&gt;
*needs minimal postgres setup &lt;br /&gt;
**best to stop postgresql server, move /var/lib/pgsql/data and reinitialise&lt;br /&gt;
*as user postgres&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
zcat &amp;lt;path to gzipped full dump&amp;gt; | psql postgres&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== overwrite current DBs ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
db=test1&lt;br /&gt;
pg_dump $db &amp;gt; ${db}-new&lt;br /&gt;
psql $db &amp;lt; /path/to/$db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== dropping current DBs ====&lt;br /&gt;
*this can cause problems. reverted to previous state with the &amp;lt;tt&amp;gt;-new&amp;lt;/tt&amp;gt; saves.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
db=test1&lt;br /&gt;
pg_dump $db &amp;gt; ${db}-new&lt;br /&gt;
dropdb $db&lt;br /&gt;
createdb -T template0 $db&lt;br /&gt;
psql $db &amp;lt; /path/to/$db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Upgrade dcache 1.7 to 1.8 on same machine for quattor users ====&lt;br /&gt;
*trigger a stop for ncm-dcache&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /opt/d-cache/DONT_RUN_NCM_DCACHE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*stop dcache/pnfs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/dcache-pool stop&lt;br /&gt;
/etc/init.d/dcache-core stop&lt;br /&gt;
/etc/init.d/pnfs stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*make a backup&lt;br /&gt;
**first step of procedure below&lt;br /&gt;
*make the upgrade&lt;br /&gt;
**build and notify the new configuration&lt;br /&gt;
**ncm-dcache (version &amp;gt; 3.0.0-11) won&amp;#039;t do anything.&lt;br /&gt;
*do all remaining steps below.&lt;br /&gt;
*before rerunning ncm-dcache, remove the file &amp;lt;tt&amp;gt;/opt/d-cache/DONT_RUN_NCM_DCACHE&amp;lt;/tt&amp;gt;&lt;br /&gt;
==== Move to new server using quattor/ncm-postgresql/ncm-dcache ====&lt;br /&gt;
*Do a full dump on the original host (compressed for space savings):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /var/post_backup/&lt;br /&gt;
chown postgres.postgres /var/post_backup/&lt;br /&gt;
dest=/var/post_backup/full_&amp;lt;tt&amp;gt;date &amp;#039;+%s&amp;#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
tar cvf ${dest}-pnfsdb.tar /opt/pnfsdb&lt;br /&gt;
su - postgres -c &amp;quot;pg_dumpall | gzip &amp;gt; $dest.gz&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*On the new machine:&lt;br /&gt;
**setup exact same config (so don&amp;#039;t add new pnfs-dbs yet!)&lt;br /&gt;
**stop dcache, pnfs and postgresql&lt;br /&gt;
**remove postgres DBs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/lib/pgsql&lt;br /&gt;
mv data data-unused-&amp;lt;tt&amp;gt;date +%s&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**reinitialise DBs&lt;br /&gt;
**&amp;lt;tt&amp;gt;postgres &amp;lt; 8.2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/postgresql start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**&amp;lt;tt&amp;gt;postgres &amp;gt;= 8.2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/postgresql initdb&lt;br /&gt;
/etc/init.d/postgresql start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**copy postgres DB to machine and inject real data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
zcat &amp;lt;full_...gz&amp;gt; | psql postgres&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**if this is also a major upgrade &lt;br /&gt;
**major means eg from 1.7.0-X to 1.8.0-Y (unless release notes say otherwise)&lt;br /&gt;
**drop non-pnfs DBs&lt;br /&gt;
***become postgres user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
***list all DBs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
psql -l&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
***look for dcache DBs that are not pnfs DBs&lt;br /&gt;
***typical examples are &amp;lt;tt&amp;gt;dcache&amp;lt;/tt&amp;gt;,&amp;lt;tt&amp;gt;billing&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;replicas&amp;lt;/tt&amp;gt;&lt;br /&gt;
***the &amp;lt;tt&amp;gt;companion&amp;lt;/tt&amp;gt; DB should be left alone &lt;br /&gt;
***pnfs DBs are &amp;lt;tt&amp;gt;admin&amp;lt;/tt&amp;gt;,&amp;lt;tt&amp;gt;data1&amp;lt;/tt&amp;gt;, whatever added yourself&lt;br /&gt;
***base postgres DBs (should be left alone!) &amp;lt;tt&amp;gt;postgres&amp;lt;/tt&amp;gt;,&amp;lt;tt&amp;gt;template0&amp;lt;/tt&amp;gt;,&amp;lt;tt&amp;gt;template1&amp;lt;/tt&amp;gt;&lt;br /&gt;
***you can always redo this if you still have the postgres dump&lt;br /&gt;
***drop the dcache non-pnfs DBs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for i in dcache billing replicas&lt;br /&gt;
do&lt;br /&gt;
  dropdb $i&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**run ncm-postgres (as root), it will recreate the required dcache DBs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ncm-ncd --co postgresql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**restore the pnfsdb files (as root)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /&lt;br /&gt;
mv /opt/pnfsdb /opt/pnfsdb-orig-&amp;lt;tt&amp;gt;date +%s&amp;lt;/tt&amp;gt;&lt;br /&gt;
tar xvf &amp;lt;path to pnfsdb.tar file&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**you should be able to start pnfs and list the content of the directories again&lt;br /&gt;
**you can now also rerun ncm-dcache&lt;br /&gt;
&lt;br /&gt;
=== problems ===&lt;br /&gt;
==== Staging forever ====&lt;br /&gt;
*Try to locate the pools of the file&lt;br /&gt;
**is the pool still up&lt;br /&gt;
**is the file stil in pool/data&lt;br /&gt;
**can you copy it&lt;br /&gt;
**LAST MEASURE: restart dcache-pool service&lt;br /&gt;
*in PoolManager&lt;br /&gt;
**rc ls &amp;lt;pnfsid&amp;gt;.*&lt;br /&gt;
**what state is it in&lt;br /&gt;
***something with Pool2Pool&lt;br /&gt;
***wait, it&amp;#039;s transferring&lt;br /&gt;
***if stays there, go to destination pool and try to kill the p2p transfer&lt;br /&gt;
***if that fail, try with rc destroy &amp;lt;the whole pnfsid identifier in rc ls&amp;gt; ed &amp;lt;tt&amp;gt;rc destroy 000C00000000000000BEEFE0@0.0.0.0/0.0.0.0-*/*&amp;lt;/tt&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
       &lt;br /&gt;
==== TransferManager error too many transfers! ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  02/13 14:40:48 Cell(SRM-maite@srm-maiteDomain) : org.dcache.srm.scheduler.NonFatalJobFailure: org.dcache.srm.SRMException: TransferManager errortoo many transfers!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  cd RemoteGsiftpTransferManager&lt;br /&gt;
  set max transfers &amp;lt;#max transfers&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 99 Repository got lost ====&lt;br /&gt;
When the pool is gone, it can be due to a lot of things.&lt;br /&gt;
*XFS problem&lt;br /&gt;
**check &amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;/var/log/messages&amp;lt;/tt&amp;gt; for error messages like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XFS internal error XFS_WANT_CORRUPTED_GOTO at line 1561 of file /usr/src/redhat/BUILD/xfs-kmod-0.4/_kmod_build_/xfs_alloc.c.  Caller 0xffffffff88251392&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xfs_force_shutdown(sdb1,0x8) called from line 4267 of file /usr/src/redhat/BUILD/xfs-kmod-0.4/_kmod_build_/xfs_bmap.c.  Return address = 0xffffffff8825e2d0&lt;br /&gt;
Filesystem &amp;quot;sdb1&amp;quot;: Corruption of in-memory data detected.  Shutting down filesystem: sdb1&lt;br /&gt;
Please umount the filesystem, and rectify the problem(s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**if it&amp;#039;s the case do the following (and in this order)&lt;br /&gt;
**stop dcache on the node&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/dcache-pool stop&lt;br /&gt;
/etc/init.d/dcache-core stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**unmount the storage &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /storage/1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**try to remount it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /storage/1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**check dmesg if it was succesful. the last line should read something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XFS mounting filesystem sdb1&lt;br /&gt;
Ending clean XFS mount for filesystem: sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
**if not, run xfs_repair&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xfs_repair /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
***if it was succesful, remount the storage and check dmesg if the mount was succesful &lt;br /&gt;
***restart dcache on the node&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/dcache-pool start&lt;br /&gt;
/etc/init.d/dcache-core start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
***if not, it can end with eg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: The filesystem has valuable metadata changes in a log which needs to&lt;br /&gt;
be replayed.  Mount the filesystem to replay the log, and unmount it before&lt;br /&gt;
re-running xfs_repair.  If you are unable to mount the filesystem, then use&lt;br /&gt;
the -L option to destroy the log and attempt a repair.&lt;br /&gt;
Note that destroying the log may cause corruption -- please attempt a mount&lt;br /&gt;
of the filesystem before doing this.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
***then rerun xfs_reapir with -L option (wyou already retried mounting a few steps ago)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xfs_repair -L /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
***after it&amp;#039;s done, remount and check dmesg for succesful mount&lt;br /&gt;
***restart dcache&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/dcache-pool start&lt;br /&gt;
/etc/init.d/dcache-core start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inner working of the PSU ===&lt;br /&gt;
From an email by Patrick Fuhrmann:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Ok here we go :&lt;br /&gt;
  The procedure to find all matching pools :&lt;br /&gt;
  The request comes with a precise&lt;br /&gt;
    (StorageClass,dCacheClass,IPnumber)&lt;br /&gt;
  In the future there will be the protocol as well.&lt;br /&gt;
  Now we have to find the corresponding unit :&lt;br /&gt;
    Store Unit :&lt;br /&gt;
      We try to find an exact match of the incoming &lt;br /&gt;
      StorageClass in the list of storage classes (unit -store).&lt;br /&gt;
      If not found we try to find some combinations of&lt;br /&gt;
      wildcards ( *@osm *.* ).&lt;br /&gt;
    dCache unit :&lt;br /&gt;
      Same as Store Unit but not used by anybody yet.&lt;br /&gt;
    Network Unit :&lt;br /&gt;
      The incoming IP number is compared with all&lt;br /&gt;
      net units. We start with the 255.255.255.255 and&lt;br /&gt;
      proceed with smaller masks until we reach the&lt;br /&gt;
      0.0.0.0 or we find a match. (like ip routers do).&lt;br /&gt;
      If we find a match we stop. As said in the previous e-mail,&lt;br /&gt;
      if 131.169.1.1 comes in and there are two net-units&lt;br /&gt;
      0.0.0.0/0.0.0.0 and 131.169.0.0/255.255.0.0 we choose&lt;br /&gt;
      131.169.0.0/255.255.0.0 (At this point we don&amp;#039;t know&lt;br /&gt;
      anything about links yet). If there is no 131.1.. net-unit&lt;br /&gt;
      the result of this step is the 0.0.0.0/0.0.0.0 net-unit.&lt;br /&gt;
&lt;br /&gt;
  Now we try to find ALL links which require a Store-Unit&lt;br /&gt;
  and a NetUnit AND match the units found in the above step.&lt;br /&gt;
  Next we add those links which only require Store-Unit or&lt;br /&gt;
  Net-Unit and match the unit found above. (As a matter of fact&lt;br /&gt;
  the is this additional criterium, which is the transfer &lt;br /&gt;
  direction but this don&amp;#039;t help us to understand the mechasm)&lt;br /&gt;
  Now we take all links found above and sort according to the&lt;br /&gt;
  preference of this transfer direction. For big setups this&lt;br /&gt;
  results in a matrix of links&lt;br /&gt;
    pref 100 : link1 link2 link3&lt;br /&gt;
    pref  50 : link4 link5&lt;br /&gt;
    pref ....&lt;br /&gt;
  Now we resolve the links into pools (via pool groups)&lt;br /&gt;
  Result is &lt;br /&gt;
   pref100  : pool1, pool2 .....&lt;br /&gt;
   .....&lt;br /&gt;
  If at least one pool of the highest preference is available&lt;br /&gt;
  we send the resulting set of pools (of highest preference&lt;br /&gt;
  to the CM) rest is clear&lt;br /&gt;
  If non of highest preference is available we step to the next&lt;br /&gt;
  preference (a.s.o)&lt;br /&gt;
  This mechanism allows to construct all possible setups.&lt;br /&gt;
  As said before : The treatment of the net-unit seems&lt;br /&gt;
  strange but is really necessary if you think about it&lt;br /&gt;
  for awhile.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Transfer tests ===&lt;br /&gt;
See all remote transfers:&lt;br /&gt;
 cd RemoteGsiftpTransferManager&lt;br /&gt;
 ls&lt;br /&gt;
=== Problems and Solutions ===&lt;br /&gt;
While runing ExDigiStatistics with some PU data, the system is really tested.&lt;br /&gt;
==== ulimit -n ====&lt;br /&gt;
Some of the jobs gave the following error message:&lt;br /&gt;
  Server error message for [35]: &amp;quot;Unexpected Exception :&lt;br /&gt;
  java.net.SocketException: Too many open files&amp;quot; (errno 33).&lt;br /&gt;
  Failed open file in the dCache.&lt;br /&gt;
Apparently this is due to a a restricted number of file descriptors. You can find out the total amount with&lt;br /&gt;
  ulimit -n&lt;br /&gt;
A tip from Michael Ernst: (ulimit -n)/(# of active movers) = 5 or more (now it&amp;#039;s 16 ;).&lt;br /&gt;
The best thing is to put this in the dcache-pool script and the restart the pool.&lt;br /&gt;
   mv /opt/d-cache/bin/dcache-pool /opt/d-cache/bin/dcache-pool-orig;cat /opt/d-cache/bin/dcache-pool-orig|sed              &lt;br /&gt;
   &amp;#039;s/start)/start)\n\tulimit -n 16384/&amp;#039; &amp;gt; /opt/d-cache/bin/dcache-pool;chmod +x &lt;br /&gt;
   /opt/d-cache/bin/dcache-pool;/etc/init.d/dcache-pool restart&lt;br /&gt;
==== Detected Tx Unit Hang ====&lt;br /&gt;
One of the pools got the following kernel message:&lt;br /&gt;
  e1000: eth0: e1000_clean_tx_irq: Detected Tx Unit Hang&lt;br /&gt;
This resulted in a redetection of the network with the wrong network speed. Obviously, the adapter was a bit overloaded. A network restart fixed the problem.&lt;br /&gt;
==== Channel bonding ====&lt;br /&gt;
Using 2 e1000 pci adapters, the maximum number of packets rose from 70k to 90k. Obviously the hardware was a bottleneck (3 adapters on pci, single P4), but still some result nonetheless.&lt;br /&gt;
The setup was pretty basic and easy:&lt;br /&gt;
*following the setup from &amp;lt;kernel&amp;gt;/Documentation/networking/bonding.txt&lt;br /&gt;
*SL3 supports bonding config with initscripts. It&amp;#039;s pretty easy and straightforward.&lt;br /&gt;
*don&amp;#039;t forget to recompile ifenslave when using non-standard kernel.&lt;br /&gt;
*i tried bonding-mode abl (wich needs no special switch settings), but the network driver requires set_dev_mac_address (not on the r8169!!), this also needs miimon setting.&lt;br /&gt;
--&lt;br /&gt;
=== Links ===&lt;br /&gt;
*IIHE DCache http://maite.iihe.ac.be:2288/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TracNotice|{{PAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>