<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>mastermind's weblog - work</title>
    <link>http://www.kaltenbrunner.cc/blog/</link>
    <description>random things on life,hardware and postgresql</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.3-2 - http://www.s9y.org/</generator>
    <pubDate>Thu, 01 Nov 2012 12:06:54 GMT</pubDate>

    <image>
        <url>http://www.kaltenbrunner.cc/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: mastermind's weblog - work - random things on life,hardware and postgresql</title>
        <link>http://www.kaltenbrunner.cc/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Benchmarking 8.4 - Chapter 2/bulk loading</title>
    <link>http://www.kaltenbrunner.cc/blog/index.php?/archives/27-Benchmarking-8.4-Chapter-2bulk-loading.html</link>
            <category>hardware</category>
            <category>PostgreSQL</category>
            <category>work</category>
    
    <comments>http://www.kaltenbrunner.cc/blog/index.php?/archives/27-Benchmarking-8.4-Chapter-2bulk-loading.html#comments</comments>
    <wfw:comment>http://www.kaltenbrunner.cc/blog/wfwcomment.php?cid=27</wfw:comment>

    <wfw:commentRss>http://www.kaltenbrunner.cc/blog/rss.php?version=2.0&amp;type=comments&amp;cid=27</wfw:commentRss>
    

    <author>nospam@example.com (Stefan Kaltenbrunner)</author>
    <content:encoded>
    &lt;p&gt;As promised in the previous &lt;a href=&quot;http://www.kaltenbrunner.cc/blog/index.php?/archives/26-Benchmarking-8.4-Chapter-1Read-Only-workloads.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;post&lt;/a&gt; this is the second part in a series of testing/benchmarking 8.4 under various circumstances.&lt;br /&gt;
The topic in this post is bulk loading of data. Knowing about expected and theoretical bulk loading performance is a very important thing for an DBA. It affects not only data warehouse style operations but also plays an important part in disaster recovery scenarios because the total time it takes to restore your database from your backup is directly related to its bulk loading performance.&lt;/p&gt;

 &lt;br /&gt;&lt;a href=&quot;http://www.kaltenbrunner.cc/blog/index.php?/archives/27-Benchmarking-8.4-Chapter-2bulk-loading.html#extended&quot;&gt;Continue reading &quot;Benchmarking 8.4 - Chapter 2/bulk loading&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 16 Jun 2009 09:28:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.kaltenbrunner.cc/blog/index.php?/archives/27-guid.html</guid>
    
</item>
<item>
    <title>Benchmarking 8.4 - Chapter 1/Read-Only workloads</title>
    <link>http://www.kaltenbrunner.cc/blog/index.php?/archives/26-Benchmarking-8.4-Chapter-1Read-Only-workloads.html</link>
            <category>hardware</category>
            <category>PostgreSQL</category>
            <category>work</category>
    
    <comments>http://www.kaltenbrunner.cc/blog/index.php?/archives/26-Benchmarking-8.4-Chapter-1Read-Only-workloads.html#comments</comments>
    <wfw:comment>http://www.kaltenbrunner.cc/blog/wfwcomment.php?cid=26</wfw:comment>

    <wfw:commentRss>http://www.kaltenbrunner.cc/blog/rss.php?version=2.0&amp;type=comments&amp;cid=26</wfw:commentRss>
    

    <author>nospam@example.com (Stefan Kaltenbrunner)</author>
    <content:encoded>
    &lt;p&gt;Computing platforms are constantly changing, evolving and improving. This holds true for both the hardware and the software running on that hardware.&lt;br /&gt;
With PostgreSQL 8.4 just around the &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2009-06/msg00469.php&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;corner&lt;/a&gt; and a 2U Nehalem based IBM x3650M2 at my hands I thought I would do some benchmarking and see how well PostgreSQL does on that kind of hardware under a range of different workloads. This is planned as a series of posts starting with read-only benchmarking, followed up by bulk load testing and maybe some OLTP benchmarks as well.&lt;/p&gt;

 &lt;br /&gt;&lt;a href=&quot;http://www.kaltenbrunner.cc/blog/index.php?/archives/26-Benchmarking-8.4-Chapter-1Read-Only-workloads.html#extended&quot;&gt;Continue reading &quot;Benchmarking 8.4 - Chapter 1/Read-Only workloads&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 12 Jun 2009 22:21:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.kaltenbrunner.cc/blog/index.php?/archives/26-guid.html</guid>
    
</item>
<item>
    <title>8.3 vs. 8.2 - a simple benchmark</title>
    <link>http://www.kaltenbrunner.cc/blog/index.php?/archives/21-8.3-vs.-8.2-a-simple-benchmark.html</link>
            <category>PostgreSQL</category>
            <category>work</category>
    
    <comments>http://www.kaltenbrunner.cc/blog/index.php?/archives/21-8.3-vs.-8.2-a-simple-benchmark.html#comments</comments>
    <wfw:comment>http://www.kaltenbrunner.cc/blog/wfwcomment.php?cid=21</wfw:comment>

    <wfw:commentRss>http://www.kaltenbrunner.cc/blog/rss.php?version=2.0&amp;type=comments&amp;cid=21</wfw:commentRss>
    

    <author>nospam@example.com (Stefan Kaltenbrunner)</author>
    <content:encoded>
    &lt;p&gt;With 8.3 just around the corner more and more people are actually starting to test 8.3 with their code base and wondering if it will be worth to switch/upgrade and so did I.&lt;br /&gt;
The following is not really an in-depth benchmark but meant as a simple testing of 8.3 on a very specific (but not uncommon) workload and with small set of different configuration parameters.&lt;/p&gt;

&lt;p&gt;All the testing is done on a DL380 G5 with two Quadcore Intel Xeon CPUs (X5345 - so 2,33Ghz per core)  12GB of RAM and 6 disks in a RAID1+0 with 512MB BBWC on a Smartarray P400.&lt;br /&gt;
The box is running Debian/Etch AMD/64 with the debian supplied kernel (2.6.18 more or less) and a current -HEAD snapshot of PostgreSQL (more or less BETA4 code) compiled as a 64bit binary.&lt;/p&gt;

&lt;p&gt;The benchmark database is initialized with a scaling factor of 100 (equals to 10M rows) which seems to be a reasonable size for a table in an OLTP style database) all testing was done with 100 clients and 100000 transactions/client which comes out to 10M transactions and an average runtime of about 1,5 hours.&lt;br /&gt;
The first test is a simple comparison of 8.2 vs 8.3B4 in both the default (ie. unchanged postgresql.conf) and one with a somewhat reasonable tuning:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;checkpoint_segments=192&lt;/li&gt;
    &lt;li&gt;maintenance_work_mem=128MB&lt;/li&gt;
    &lt;li&gt;shared_buffers=1536MB&lt;/li&gt;
    &lt;li&gt;wal_buffers=1024kB&lt;/li&gt;
    &lt;li&gt;effective_cache_size=3084MB&lt;/li&gt;
    &lt;li&gt;filesystem(ext3) mounted with noatime&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://www.kaltenbrunner.cc/blog/uploads/82vs83b4.gif&quot;&gt;&lt;img src=&quot;https://www.kaltenbrunner.cc/blog/uploads/82vs83b4.gif&quot; width=&quot;500&quot; height=&quot;396&quot; alt=&quot;82vs83b4.gif&quot; /&gt;&lt;/a&gt;83b4shm.gif&lt;/p&gt;

&lt;p&gt;what we can see here is that 8.3B4 is about 2.2x faster than 8.2 out-of-the-box for this very update heavy workload and is able to keep that advantage after similar tuning is applied to both instances.&lt;br /&gt;
The main reason for this rather large improvement is HOT. pgbench is one of the workloads that benefit most from it and a bit of preliminary testing with similiar real-life workloads (session tables or stuff like the SQL-Bayes support in Spamassassin) show equally impressive gains.&lt;/p&gt;

&lt;p&gt;the second thing I tried to test was the effect of various shared_buffer settings on the transaction rate(the other parts of the configuration stayed the same as in the &quot;tuned&quot; variant above):&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.kaltenbrunner.cc/blog/uploads/83b4shm.gif&quot;&gt;&lt;img src=&quot;https://www.kaltenbrunner.cc/blog/uploads/83b4shm.gif&quot; width=&quot;606&quot; height=&quot;441&quot; alt=&quot;83b4shm.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;there are two main things to note here - one is the obvious one that the scaling on the x-axis is not linear.&lt;br /&gt;
The other one is that the best performance seems to be around 1,5GB of shared memory which is about the size of the database on-disk in 8.3. Higher settings to not help and in fact cause a slight performance degeneration.&lt;/p&gt;

&lt;p&gt;All in all 8.3 seems to become a rather impressive release  and as always proper tuning is very critical to getting the best out of (dedicated) database server instances.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Tue, 11 Dec 2007 22:33:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.kaltenbrunner.cc/blog/index.php?/archives/21-guid.html</guid>
    
</item>
<item>
    <title>&quot;cheap&quot; SAN gear </title>
    <link>http://www.kaltenbrunner.cc/blog/index.php?/archives/10-cheap-SAN-gear.html</link>
            <category>hardware</category>
            <category>PostgreSQL</category>
            <category>work</category>
    
    <comments>http://www.kaltenbrunner.cc/blog/index.php?/archives/10-cheap-SAN-gear.html#comments</comments>
    <wfw:comment>http://www.kaltenbrunner.cc/blog/wfwcomment.php?cid=10</wfw:comment>

    <wfw:commentRss>http://www.kaltenbrunner.cc/blog/rss.php?version=2.0&amp;type=comments&amp;cid=10</wfw:commentRss>
    

    <author>nospam@example.com (Stefan Kaltenbrunner)</author>
    <content:encoded>
    &lt;p&gt;The discussion on using &lt;a href=&quot;http://en.wikipedia.org/wiki/Storage_area_network&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;SAN&lt;/a&gt; vs. &lt;a href=&quot;http://en.wikipedia.org/wiki/Direct_access_storage_device&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;DASD&lt;/a&gt; based storage is nearly a religious war(as can be seen in a lot of discussions on &lt;a href=&quot;http://archives.postgresql.org/pgsql-performance/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;pgsql-performance&lt;/a&gt;) and in many ways similar to the infamous emacs vs. vi debate.&lt;br /&gt;
From personal experience I have found the &lt;a href=&quot;http://www-304.ibm.com/jct01004c/systems/support/supportsite.wss/supportresources?brandind=5000028&amp;amp;familyind=5329604&amp;amp;taskind=1&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;IBM DS4300&lt;/a&gt; and IBM DS4300 Turbo (basically the same as the DS4300 but with more memory/cache and a hefty markup in price) quite a reliable and basically maintenance free solution.&lt;/p&gt;

&lt;p&gt;However - for some workloads those types of SAN are not really that appropriate. A DS4300(which is a now withdrawn from marketing) can do only a bit above 100MB/s of seq IO(nearly independent on the number of disks!) per controller(about 135MB/s if used together) which is really not much when one considers how fast modern hard drives are.&lt;/p&gt;

&lt;p&gt;I recently got a SAN Array to play with that looks quite interesting since while expensive it still seems reasonably priced compared to what companies like IBM or others want for &lt;a href=&quot;http://www-03.ibm.com/systems/storage/disk/midrange/index.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;similar gear&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The array I got for testing is basically a non-branded &lt;a href=&quot;http://www.lsi.com/storage_home/products_home/external_raid/3994_storage_system/index.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;LSI/Engenio  3994&lt;/a&gt; with 16 2Gbit 10k 146FC drives and 2GB of battery backed cache per controller.&lt;br /&gt;
It is directly connected via two &lt;a href=&quot;http://support.qlogic.com/support/product_resources.asp?id=934&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;QLogic QLE2460 PCI-Express adapters&lt;/a&gt; to a &lt;a href=&quot;http://h10010.www1.hp.com/wwpc/us/en/en/WF05a/15351-15351-3328412-241644-241475-1121516.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;HP DL380 G5&lt;/a&gt; running &lt;a href=&quot;http://www.centos.org&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;CentOS 5&lt;/a&gt; for testing. &lt;br /&gt;
The first impression of the array is a solid one - it looks very familiar for people that are used to the IBM DS4000 storage line and the Management GUI is basically the same (with an Engenio logo in place of the IBM one).&lt;br /&gt;
The controller chassis can hold 16 disks (up from 14 in the older designs) in 3U and the available expansion enclosures have the same capacity and dimensions (up to 6 are supported) and can be added online(untested!) without disruption to ongoing IO.&lt;/p&gt;

&lt;p&gt;Due to the use of disks that are only capable of 2Gbit/s, the speed of the two drive channel loops is also limited to 2Gbit/s (using 4GBit FC drives it can be configured to use 4Gbit/s on the drive channels).&lt;br /&gt;
The following is not meant as a thorough benchmark of neither the array nor PostgreSQL but rather some ad-hoc testing and playing around to get some impression on the overall performance characteristics of the device  and are done using ext3(I&#039;m fully aware of the fact that other file systems - especially XFS - might provide noticeable better streaming performance, but I have a much higher level of trust in ext3 and that&#039;s my choice in production environments) in the default journaling mode.&lt;/p&gt;

&lt;p&gt;In the following test(test case 1) we use two volume groups - each a RAID10 (8 disks) and a RAID0 in the OS and write cache mirroring between the controllers(keeps both controller caches in sync so in case one controller fails the other one can take over). To utilize both controllers the HBAs are set up so that controller A is using on and controller B the other.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
convm004        16G 51121  98 188347  76 97426  28 58961  98 378240  38 732.5   2
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                512 19599  94 257598 100  8272  27 19270  91 331205  99  4879  17
convm004,16G,51121,98,188347,76,97426,28,58961,98,378240,38,732.5,2,512,19599,94,257598,100,8272,27,19270,91,331205,99,4879,17&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and the same with write mirroring disabled for both logical volumes (test case 2):&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
convm004        16G 51372  99 235020  96 122183  35 58880  98 369848  37 723.0   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                512 19888  95 256732  99 10037  32 19704  93 332286  99  5541  19
convm004,16G,51372,99,235020,96,122183,35,58880,98,369848,37,723.0,1,512,19888,95,256732,99,10037,32,19704,93,332286,99,5541,19&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;so write mirroring seems to have a 20% penalty for sequential writes and rewriting but not much impact for others - so it might be worth keeping it turned on due to the additional data integrity guarantees it provides .&lt;br /&gt;
It further seems that the device seems to be bottlenecked by the speed of the drive channels (there are two loops in the array head and half the drives are on the one and the other half on the other) due to the 2Gbit disks.&lt;br /&gt;
But it also shows that the devices seems to scale fairly well - until it hit&#039;s the bandwidth limit - at least for RAID10.&lt;/p&gt;

&lt;p&gt;and now for comparison a test using only volume group and a single controller (test case 3):&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
convm004        16G 51346  98 134822  56 69414  17 58651  97 251779  23 758.8   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                512 20048  91 259694  99  5846  18 18707  84 338671  99  2935   9
convm004,16G,51346,98,134822,56,69414,17,58651,97,251779,23,758.8,1,512,20048,91,259694,99,5846,18,18707,84,338671,99,2935,9&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;so let&#039;s see what PostgreSQL is able to do in terms of sequential IO on such device:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;bench=# select version();
                                                   version                                                    
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 8.3devel on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.1.1 20070105 (Red Hat 4.1.1-52)
(1 row)

bench=# &lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;simple sequential scan on a large table (pgbench schema generated with a scale of 10000) using only a single controller (same setup as in test case 3):&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;bench=# select count(1) from accounts;
   count    
------------
 1000000000
(1 row)

Time: 619865.939 ms
bench=# select pg_relation_size(&#039;accounts&#039;)/619::float;
     ?column?     
------------------
 216998258.558966
(1 row)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;so we are getting about 215MB/s out  of 250MB/s which looks ok.&lt;/p&gt;

so what happens with software raid 0 over two 8 disk RAID10 volume groups on different controllers (same setup as test case 1):&lt;br /&gt;
 
&lt;pre&gt;&lt;code&gt;bench=# select count(1) from accounts;
   count    
------------
 1000000000
(1 row)

Time: 478785.617 ms
bench=# select pg_relation_size(&#039;accounts&#039;)/478::float;
     ?column?     
------------------
 281008205.121339
(1 row)

Time: 265.791 ms&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;so that is more interesting - it seems that PostgreSQL is getting CPU bottlenecked(the array/file system can do &gt;370MB/s) here and those ~280MB/s are pretty much in line with what &lt;a href=&quot;http://archives.postgresql.org/pgsql-performance/2006-12/msg00448.php&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Luke&lt;/a&gt; usually quotes (PostgreSQL getting CPU bottlenecked at around 300MB/s even on very fast AMD Opteron based boxes).&lt;/p&gt;

&lt;p&gt;for those curious here are some other random tests (uncommented so judge by yourself):&lt;/p&gt;

&lt;p&gt;single raid 5 with 4 logical volumes (each 500GB) and software RAID0 in the OS - two volumes per channel&lt;br /&gt;

&lt;pre&gt;&lt;code&gt;Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
convm004        16G 50978  99 208098  82 89274  25 59058  98 236993  24 488.5   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                512 20860  94 258368  99  7770  25 21087  95 335918 100  4291  14
convm004,16G,50978,99,208098,82,89274,25,59058,98,236993,24,488.5,1,512,20860,94,258368,99,7770,25,21087,95,335918,100,4291,14
&lt;/code&gt;&lt;/pre&gt;

&lt;/p&gt;

&lt;p&gt;A single RAID5 array over all 16 disks and two identically sized logical volumes each around 1TB in size.&lt;/p&gt;

&lt;p&gt;bonnie++:&lt;/p&gt;

&lt;p&gt;on one LUN:&lt;br /&gt;

&lt;pre&gt;&lt;code&gt;Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
convm004        16G 51245  98 121190  49 69406  17 56902  94 256111  22 840.9   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                512 20781  94 235507  91  7233  23 18685  84 338017  99  4125  14
&lt;/code&gt;&lt;/pre&gt;

&lt;/p&gt;

&lt;p&gt;using both LUNs and software RAID0:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
convm004        16G 51423  99 204881  84 83740  23 59040  98 232573  23 554.7   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                512 20303  93 259481  99  7230  23 20357  93 337312 100  3793  13
convm004,16G,51423,99,204881,84,83740,23,59040,98,232573,23,554.7,1,512,20303,93,259481,99,7230,23,20357,93,337312,100,3793,13
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;with disabled write cache mirroring:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
convm004        16G 51751  99 242637  97 105392  30 58859  98 235541  23 563.2   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                512 21034  95 255377  99  6485  21 19269  88 337095  99  4119  14
convm004,16G,51751,99,242637,97,105392,30,58859,98,235541,23,563.2,1,512,21034,95,255377,99,6485,21,19269,88,337095,99,4119,14&lt;/code&gt;&lt;/pre&gt;

 
    </content:encoded>

    <pubDate>Mon, 30 Apr 2007 16:51:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.kaltenbrunner.cc/blog/index.php?/archives/10-guid.html</guid>
    
</item>
<item>
    <title>fixing e1000 TX transmit timeouts (at least some of them)</title>
    <link>http://www.kaltenbrunner.cc/blog/index.php?/archives/8-fixing-e1000-TX-transmit-timeouts-at-least-some-of-them.html</link>
            <category>hardware</category>
            <category>work</category>
    
    <comments>http://www.kaltenbrunner.cc/blog/index.php?/archives/8-fixing-e1000-TX-transmit-timeouts-at-least-some-of-them.html#comments</comments>
    <wfw:comment>http://www.kaltenbrunner.cc/blog/wfwcomment.php?cid=8</wfw:comment>

    <wfw:commentRss>http://www.kaltenbrunner.cc/blog/rss.php?version=2.0&amp;type=comments&amp;cid=8</wfw:commentRss>
    

    <author>nospam@example.com (Stefan Kaltenbrunner)</author>
    <content:encoded>
    &lt;p&gt;while trying to put new hardware into production today I found that the box (running Debian Etch/i386 with a 2.6.18 based kernel) would start to drop network connections during large transfers at Gigabit speeds. &lt;br /&gt;
Simply scping a large file over from a nearby box would result in stalled scp transfers and a large number of &quot;TX unit hang&quot; errors appearing in the kernel log as well as debugging output similar to:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Mar 29 17:30:05 xxx kernel:   Tx Queue             &amp;lt;0&amp;gt;
Mar 29 17:30:05 xxx kernel:   TDH                  &amp;lt;56&amp;gt;
Mar 29 17:30:05 xxx kernel:   TDT                  &amp;lt;57&amp;gt;
Mar 29 17:30:05 xxx kernel:   next_to_use          &amp;lt;57&amp;gt;
Mar 29 17:30:05 xxx kernel:   next_to_clean        &amp;lt;56&amp;gt;
Mar 29 17:30:05 xxx kernel: buffer_info[next_to_clean]
Mar 29 17:30:05 xxx kernel:   time_stamp           &amp;lt;1eed17&amp;gt;
Mar 29 17:30:05 xxx kernel:   next_to_watch        &amp;lt;56&amp;gt;
Mar 29 17:30:05 xxx kernel:   jiffies              &amp;lt;1eefd1&amp;gt;
Mar 29 17:30:05 xxx kernel:   next_to_watch.status &amp;lt;0&amp;gt;
Mar 29 17:30:07 xxx kernel:   Tx Queue             &amp;lt;0&amp;gt;
Mar 29 17:30:07 xxx kernel:   TDH                  &amp;lt;56&amp;gt;
Mar 29 17:30:07 xxx kernel:   TDT                  &amp;lt;57&amp;gt;
Mar 29 17:30:07 xxx kernel:   next_to_use          &amp;lt;57&amp;gt;
Mar 29 17:30:07 xxx kernel:   next_to_clean        &amp;lt;56&amp;gt;
Mar 29 17:30:07 xxx kernel: buffer_info[next_to_clean]&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The nic in question is an embedded Intel 82573E/L on a &lt;a href=&quot;http://www.supermicro.com/products/motherboard/Xeon3000/3010/PDSM4+.cfm&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Supermicro PDSM4+&lt;/a&gt; with the latest BIOS-Update available (1.2):&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;0d:00.0 Ethernet controller: Intel Corporation 82573E Gigabit Ethernet Controller (Copper) (rev 03)
0e:00.0 Ethernet controller: Intel Corporation 82573L Gigabit Ethernet Controller&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A fair bit of research turned this small &lt;a href=&quot;http://e1000.sourceforge.net/files/fixeep-82573-dspd.sh&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;shellscript&lt;/a&gt; up. This script basically greps the output of  ethtool -e interface (which in itself dumps the eeprom contents) and flips a bit in the eeprom:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;~# sh fixeep-82573-dspd.sh eth0
eth0: is a &amp;quot;82573E Gigabit Ethernet Controller&amp;quot;
This fixup is applicable to your hardware
executing command: ethtool -E eth0 magic 0x108c8086 offset 0x1e value 0xdf
Change made. You *MUST* reboot your machine before changes take effect!&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;after the reboot the nic just works fine - no more stalls and transmit timeouts ...&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Thu, 29 Mar 2007 19:38:39 +0200</pubDate>
    <guid isPermaLink="false">http://www.kaltenbrunner.cc/blog/index.php?/archives/8-guid.html</guid>
    
</item>

</channel>
</rss>