<?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>Esoteric Curio - OpenSolaris</title>
    <link>http://www.lethargy.org/~jesus/</link>
    <description>Theo's Contributions to Technological Surreality</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.1 - http://www.s9y.org/</generator>
    <pubDate>Wed, 02 Jul 2008 14:55:16 GMT</pubDate>

    <image>
        <url>http://www.lethargy.org/~jesus/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Esoteric Curio - OpenSolaris - Theo's Contributions to Technological Surreality</title>
        <link>http://www.lethargy.org/~jesus/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Reconnoiter and another platform</title>
    <link>http://www.lethargy.org/~jesus/archives/121-Reconnoiter-and-another-platform.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/121-Reconnoiter-and-another-platform.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=121</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=121</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=251&amp;amp;entry_id=121&quot; title=&quot;http://labs.omniti.com/trac/reconnoiter&quot;  onmouseover=&quot;window.status=&#039;http://labs.omniti.com/trac/reconnoiter&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Reconnoiter&lt;/a&gt; is coming along.  Unlike most open source project, I tend not to talk about mine until their are really useful to people.  Over the last year, I&#039;ve adopted the unhealthy attitude that useful means &quot;shiny front-end.&quot;  So, I&#039;m blogging to break that attitude and talk a bit about project that doesn&#039;t have a shiny front-end... yet.&lt;br /&gt;&lt;br /&gt;Reconnoiter is built out of years of frustration using tools like RRDTOOL, Munin, Cacti, ZenOSS, Nagios, etc. etc.  I have a lot of problems with these tools.  First, they are not efficient.  I need a powerful machine to monitor a mere 10k services.  And it actually gets to be an engineering challenge to monitor 100k services with these tools.  Also, the graphs are about 10 years old with respect to design and usability.  I want something new, something fresh, and something that doesn&#039;t need a damn web UI to configure.  Several people have asked, why are you reinventing the wheel?  Why don&#039;t you just improve an existing product?  My answer is that I want a well-thought-out product foundation so that I can trust all the bits.  I want reponsibilities decoupled at the right spots.  I want data in a form that the world can query and run reports the likes of which I have not concieved.  I don&#039;t want the load on my monitoring machines to be 8.  I want my monitoring system to check services and metrics when it planned to, not several minutes (or event 2 seconds) after it told me it would.  Simply put, I expect it to work well, all the time.  And, of course, I want it to work how I would expect it to work.&lt;br /&gt;&lt;br /&gt;Reconnoiter was born out of the need to monitor the internals of many disconnected data centers with between 10 and 1000 machines in each facility.  Monitoring can mean a lot of things, here I consider it to be the collection of metrics and awareness of their availability.  In and of itself, monitoring is pretty useless, but it is the foundation for two critical pursuits in Internet infrastructure and business management: fault detection and trending.&lt;br /&gt;&lt;br /&gt;Fault detection is as simple as understanding when something has faulted.  However, knowing something is broken is easier than knowing something is about to break.  Is it better to know that your machine just crashed because the chip slagged to the motherboard, or that the temperatures in rack 043 are rising unexpectedly?  Answer: both, but I hope I only learn the latter and not the former.  Truly, there are too many things to monitor... hundred or thousands of metrics on each piece of equipment.  I can&#039;t reasonable go in and configure good/bad thresholds on each one.  I want anomaly detection.  I want a system that I can say: &quot;this looks right, tell me when it stops looking right.&quot;  That, to me, is a much need companion to tradition fault detection.&lt;br /&gt;&lt;br /&gt;To me, trending is much more than drawing graphs... it is about intelligent data correlation, regression analysis/curve fitting and looking into the past to see how much you fucked up getting where you are now -- in the vain hope that you learn from your mistakes and plan better next time.&lt;br /&gt;&lt;br /&gt;Reconnoiter is an attempt to build these things.  Building a system requires starting with pain (need), solid structure and plumbing (good engineering).  So, reconnoiter is underway.  And this post is in mid-step:&lt;br /&gt;&lt;br /&gt;It started on OpenBSD, and added support for FreeBSD, Mac OS X, Linux.&lt;br /&gt;&lt;br /&gt;As of changeset [292], we have Solaris/OpenSolaris support.&lt;br /&gt;&lt;br /&gt;We have a pretty nice front-end for trending under construction, but it isn&#039;t there yet.  We&#039;ll have numeric data combined with textual &quot;event&quot; data on the same graphs.  All that convenient stuff.  Here&#039;s the rather plain-Jane graph you get now (because some people won&#039;t even read a post if it doesn&#039;t have a pretty graph):&lt;br /&gt;&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;img style=&quot;max-width: 800px;&quot; src=&quot;http://www.lethargy.org/%7Ejesus/uploads/noit_bw_graph.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Honestly, I don&#039;t know what the value of this post is, but people around here keep telling me that people should be aware of an open-source tool like this, even if it isn&#039;t finished (read: usable) yet.  I say it isn&#039;t usable yet, but on our development instances here, we monitor 2892 production metrics across two data centers and the load never peaks past 0.10.  I&#039;m pretty excited about where this is going.  Honestly, my favorite part right now is that I can configure and control the noitd checking nodes via a telnet console and it acts as if it is a piece of network equipment rather than an &quot;application&quot; -- as it should be IMHO.&lt;br /&gt; 
    </content:encoded>

    <pubDate>Fri, 27 Jun 2008 17:27:27 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/121-guid.html</guid>
    
</item>
<item>
    <title>ZFS. Respect.</title>
    <link>http://www.lethargy.org/~jesus/archives/114-ZFS.-Respect..html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/114-ZFS.-Respect..html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=114</wfw:comment>

    <slash:comments>28</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=114</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;Today someone asked me: &quot;You speak about ZFS a lot.  I know other people that talk about the latest filesystems with praise, but generally speaking they just don&#039;t have much to offer.  Is ZFS that different?&quot;&lt;/p&gt;

&lt;p&gt;My answer is &quot;yes.&quot;  But, of course, I can&#039;t leave it at that.  I&#039;m not going to make a performance argument -- ZFS is fast in some cases and slow in others -- just like everything else.  I think one of the things we&#039;ve seen in the last 10 years is that everyone felt the need to come out with their own filesystem -- at least on Linux.  So, you have to as yourself why.  My personal opinion is that filesystems on Linux suck.&lt;/p&gt;

&lt;p&gt;Most filesystems on the market support snapshots.  No open source filesystems on Linux (that I&#039;m aware of) support snapshots.  Of course, you can use LVM to do block-level snapshots.  First off, that&#039;s a pain in the ass w.r.t. storage provisioning.  Other systems make the process of allocating and managing snapshots &quot;not my problem.&quot; (simple and easy).  Let&#039;s be frank, ext2 and ext3 are nothing to write home about. reiserfs, xfs, jfs, the list goes on and on.&lt;/p&gt;

&lt;p&gt;There are a few closed-source filesystems that are really nice.  Specifically Veritas Filesystem (VxFS) and its excellent layered volume manager VxVM which appears to have heavily inspired geom on FreeBSD.  DEC thought it was so cool that they pulled it white-label into Tru64.  Respect.&lt;/p&gt;

&lt;p&gt;So, what makes ZFS so different?  ZFS is a disruptive technology as it abolishes the sacred line in the sand between block devices, volume management and filesystems.  This means it just make storage management easy.  When I say easy... I mean &lt;b&gt;easy&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;So you want more space?  Add more disks.  Want to move from from failing disks to replacements?  Tell zfs to add the new ones and tell it to remove the old ones.  Read that report by Google about disk errors?  ZFS checksums all data.  My personal experience says checksums are &lt;em&gt;good&lt;/em&gt;.   Snapshots?  Sure snapshot to your heart&#039;s content.  We snapshot some systems hourly and never &lt;em&gt;ever delete&lt;/em&gt; the old ones.  Snapshots are really cool, but what if you could rollback to a snapshot?  zfs rollback.  What if you wanted to make a read/write copy of the fileystem or an old snapshot? zfs clone.  You want to store a lot of raw data? zfs has built-in compression.  Oh, and it is open-source.&lt;/p&gt;

&lt;p&gt;Simply put.  ZFS.  Respect.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Tue, 22 Apr 2008 23:16:32 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/114-guid.html</guid>
    
</item>
<item>
    <title>PostgreSQL: Looking under the hood with Solaris</title>
    <link>http://www.lethargy.org/~jesus/archives/111-PostgreSQL-Looking-under-the-hood-with-Solaris.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/111-PostgreSQL-Looking-under-the-hood-with-Solaris.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=111</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=111</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=190&amp;amp;entry_id=111&quot; title=&quot;http://lethargy.org/~jesus/misc/PostgreSQLonSolaris.pdf&quot;  onmouseover=&quot;window.status=&#039;http://lethargy.org/~jesus/misc/PostgreSQLonSolaris.pdf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://lethargy.org/~jesus/misc/PostgreSQLonSolaris.title.png&quot; height=&quot;240&quot; width=&quot;320&quot; alt=&quot;PostgreSQL on Solaris&quot; style=&quot;padding: 2px; border: 1px solid #ccc;&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For those interested, here is my slide stack from PostgreSQL Conference East &#039;08.  I think the title of the talk was &quot;&lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=190&amp;amp;entry_id=111&quot; title=&quot;http://lethargy.org/~jesus/misc/PostgreSQLonSolaris.pdf&quot;  onmouseover=&quot;window.status=&#039;http://lethargy.org/~jesus/misc/PostgreSQLonSolaris.pdf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PostgreSQL: Looking under the hood with Solaris&lt;/a&gt;.&quot;&lt;/p&gt;

&lt;p&gt;The presentation was 90 minutes long and had lots of shell-based show-and-tell.  Obviously that stuff isn&#039;t available in the slides.  I think it went over quite well.  The audience was small, but hopefully people took away the a lasting impression of what DTrace has to offer and at least one person had the response: &quot;By the power of Greyskull.&quot;  Regardless, enjoy the slides!&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 30 Mar 2008 09:21:05 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/111-guid.html</guid>
    
</item>
<item>
    <title>Talking w/ Sun</title>
    <link>http://www.lethargy.org/~jesus/archives/108-Talking-w-Sun.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/108-Talking-w-Sun.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=108</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=108</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;New acquaintances walk away from their first conversation with me and either think that I am in love with a particular vendor or technology or they think I truly hate all technology.  Both are true in some fashion.&lt;/p&gt;

&lt;p&gt;The fact that I have an OpenSolaris feed on my blog might indicate that I&#039;m a fan of &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL3N1bi5jb20v&amp;amp;entry_id=108&quot; title=&quot;http://sun.com/&quot;  onmouseover=&quot;window.status=&#039;http://sun.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Sun&lt;/a&gt;.  The truth is I am and I am not.  As is true of any large organization, it&#039;s really tough to be enamored with all of it.  I &lt;em&gt;am&lt;/em&gt; a huge fan of Solaris 10 and Sun&#039;s initiative to support strict ABI compatibility for stable interfaces, and I&#039;m downright giddy about their ZFS and DTrace technologies.  I think Zones/Containers are cool and I think their engineering team has some brilliant shining stars and is on the whole smarter than average.  Yet, the OpenSolaris community is challenged in a lot of ways due to the corporate involvement by Sun that leaves me with a funny taste in my mouth.  I&#039;m luke-warm about Java and feel like their hardware initiative is going down-hill with bad quality problems on some of their new offerings compared to their spectacularly rock-solid history (sans the E4500). &lt;/p&gt;

&lt;p&gt;Recently, I did an interview with Mark Thacker of Sun about &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL29tbml0aS5jb20v&amp;amp;entry_id=108&quot; title=&quot;http://omniti.com/&quot;  onmouseover=&quot;window.status=&#039;http://omniti.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;our&lt;/a&gt; use of Solaris for their &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL3d3dy5zdW4uY29tL3NvZnR3YXJlL3NvbGFyaXMvcG9kY2FzdHMuanNw&amp;amp;entry_id=108&quot; title=&quot;http://www.sun.com/software/solaris/podcasts.jsp&quot;  onmouseover=&quot;window.status=&#039;http://www.sun.com/software/solaris/podcasts.jsp&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Solaris Podcast series&lt;/a&gt;.  We&#039;ve had some bad experiences here and there, but all-in-all it has been a win.  DTrace has been a god-send and ZFS has saved my bacon several times.  Anyone who&#039;s talked to me knows that I&#039;m brutally honest and appreciate those that return the favor.   I&#039;ll look at solution and I tell you what you did wrong.  I don&#039;t tell you what you did correctly... after all it was &lt;strong&gt;all&lt;/strong&gt; supposed to be done correctly.  So, upon listening to this &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL3djZGF0YS5zdW4uY29tL3dlYmNhc3QvZG93bmxvYWQvcG9kY2FzdC9Tb2xhcmlzUmV2ZWFsZWQvT21uaVRJLTMuNi4wOC5tcDM=&amp;amp;entry_id=108&quot; title=&quot;http://wcdata.sun.com/webcast/download/podcast/SolarisRevealed/OmniTI-3.6.08.mp3&quot;  onmouseover=&quot;window.status=&#039;http://wcdata.sun.com/webcast/download/podcast/SolarisRevealed/OmniTI-3.6.08.mp3&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Sun podcast&lt;/a&gt;, several of my colleagues said: &quot;that had to have been edited.&quot;  As marketing people usually do, they attempt to limit the negative exposure as much as possible -- most notably, they removed a section about lack of tight integration between ZFS and Zones which has made for some very painful upgrade paths.  We have marketing here at OmniTI too, I know the drill.  All-in-all, I think the interview went rather well and fairly represents the benefits we&#039;ve realized by deploying Solaris 10.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sun, 16 Mar 2008 23:21:55 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/108-guid.html</guid>
    
</item>
<item>
    <title>dtrace.conf(08)</title>
    <link>http://www.lethargy.org/~jesus/archives/107-dtrace.conf08.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/107-dtrace.conf08.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=107</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=107</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;As many people already know, I&#039;m a big fan of DTrace.  Well, today I attended &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=180&amp;amp;entry_id=107&quot; title=&quot;http://wikis.sun.com/display/DTrace/dtrace.conf&quot;  onmouseover=&quot;window.status=&#039;http://wikis.sun.com/display/DTrace/dtrace.conf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;dtrace.conf(08)&lt;/a&gt; -- the first (un)conference revolving around planet DTrace.  It was awesome.  Many people who know me well have heard me say, &quot;my good days are when I&#039;m the dumbest person in the room.&quot;  That&#039;s not to be confused with &quot;I like having bad days.&quot;  Instead, I like to be at my best and still struggle to keep up.  Here at dtrace.conf(08), the people here are damn smart -- a bunch of higher level thinking.&lt;/p&gt;

&lt;p&gt;I gave a demo of the &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=181&amp;amp;entry_id=107&quot; title=&quot;https://labs.omniti.com/trac/pgsoltools&quot;  onmouseover=&quot;window.status=&#039;https://labs.omniti.com/trac/pgsoltools&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PostgreSQL stuff we do using dtrace&lt;/a&gt;.  I put back my &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=182&amp;amp;entry_id=107&quot; title=&quot;http://wikis.sun.com/display/DTrace/sdt+Provider&quot;  onmouseover=&quot;window.status=&#039;http://wikis.sun.com/display/DTrace/sdt+Provider&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;SDT&lt;/a&gt; postgres probes into our internal packaging systems -- I hope that I can get those back into PostgreSQL soon...  I talked very briefly about the ZFS magic we&#039;ve experienced, but as the conference was focused intensely on DTrace, I saved most of that for &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=183&amp;amp;entry_id=107&quot; title=&quot;http://www.postgresqlconference.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.postgresqlconference.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PostgreSQL Conference East 08&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As usual, I particularly enjoyed &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=184&amp;amp;entry_id=107&quot; title=&quot;http://blogs.sun.com/bmc/&quot;  onmouseover=&quot;window.status=&#039;http://blogs.sun.com/bmc/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Bryan Cantril&lt;/a&gt;&#039;s infectious excitement and pungent humor.  I&#039;d like to thank Sun and the DTrace Team for running the conference (as well as the sponsors).  I really appreciate the effort.  DTrace has empowered OmniTI to make our customers more successful.  Hands-down awesome technology.&lt;/p&gt;

&lt;p&gt;I&#039;ve said it before and I&#039;ll say it again.  ZFS and DTrace are the most impressive operating system advances I&#039;ve seen this decade.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 14 Mar 2008 21:28:49 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/107-guid.html</guid>
    
</item>
<item>
    <title>Spine-tingling dtrace euphoria: &quot;What the SCSI?&quot;</title>
    <link>http://www.lethargy.org/~jesus/archives/104-Spine-tingling-dtrace-euphoria-What-the-SCSI.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/104-Spine-tingling-dtrace-euphoria-What-the-SCSI.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=104</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=104</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;I am oft in the position where SCSI is not working right for me.  Whereas I &lt;i&gt;always&lt;/i&gt; seem to be in the position where SATA over promises and under delivers.  When SCSI misbehaves, it usually really matters.  Where&#039;s my disk go?  Time outs?  And the king of all frustrations: wassup with that tape robot?!&lt;/p&gt;

&lt;p&gt;This clearly puts me in the sysadmin geek category, but I had to share.  I had a spin-tingling euphoria when I read the details of SCSI packet sniffer written in dtrace. OMG this is cool: &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=175&amp;amp;entry_id=104&quot; title=&quot;http://blogs.sun.com/chrisg/resource/scsi_d/scsi.d-1.12&quot;  onmouseover=&quot;window.status=&#039;http://blogs.sun.com/chrisg/resource/scsi_d/scsi.d-1.12&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://blogs.sun.com/chrisg/resource/scsi_d/scsi.d-1.12&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 20 Dec 2007 08:52:01 -0500</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/104-guid.html</guid>
    
</item>
<item>
    <title>Zimbra on ZFS and Zones.</title>
    <link>http://www.lethargy.org/~jesus/archives/98-Zimbra-on-ZFS-and-Zones..html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/98-Zimbra-on-ZFS-and-Zones..html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=98</wfw:comment>

    <slash:comments>8</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=98</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;So, we&#039;re moving from an old Cyrus installation to &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL3ppbWJyYS5jb20v&amp;amp;entry_id=98&quot; title=&quot;http://zimbra.com/&quot;  onmouseover=&quot;window.status=&#039;http://zimbra.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Zimbra&lt;/a&gt;.  We considered moving to Dovecot, but the need for tight corporate calendaring that isn&#039;t hosted by big brother (&lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9hY2NvdW50cy9TZXJ2aWNlTG9naW4/c2VydmljZT1jbCZwYXNzaXZlPXRydWUmbnVpPTEmY29udGludWU9aHR0cCUzQSUyRiUyRnd3dy5nb29nbGUuY29tJTJGY2FsZW5kYXIlMkZyZW5kZXImZm9sbG93dXA9aHR0cCUzQSUyRiUyRnd3dy5nb29nbGUuY29tJTJGY2FsZW5kYXIlMkZyZW5kZXI=&amp;amp;entry_id=98&quot; title=&quot;https://www.google.com/accounts/ServiceLogin?service=cl&amp;amp;passive=true&amp;amp;nui=1&amp;amp;continue=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender&amp;amp;followup=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender&quot;  onmouseover=&quot;window.status=&#039;https://www.google.com/accounts/ServiceLogin?service=cl&amp;amp;passive=true&amp;amp;nui=1&amp;amp;continue=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender&amp;amp;followup=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Google&lt;/a&gt; or &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL3lhaG9vLmNvbS8=&amp;amp;entry_id=98&quot; title=&quot;http://yahoo.com/&quot;  onmouseover=&quot;window.status=&#039;http://yahoo.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Y!&lt;/a&gt;) was too strong.&lt;/p&gt;

&lt;p&gt;So, I call up Zimbra...&lt;/p&gt;

&lt;blockquote&gt;
&lt;strong&gt;Me&lt;/strong&gt;: Gimme that for Solaris.&lt;br /&gt;
&lt;strong&gt;Zimbra&lt;/strong&gt;: No.&lt;br /&gt;
&lt;strong&gt;Me&lt;/strong&gt;: Umm... It&#039;s open source and the &quot;closed&quot; bits are non-native Java.&lt;br /&gt;
&lt;strong&gt;Zimbra&lt;/strong&gt;: Umm... It doesn&#039;t work on Solaris, just install Linux.&lt;br /&gt;
&lt;strong&gt;Me&lt;/strong&gt;: Just give me a sound off-site backup strategy that works as well as ZFS.&lt;br /&gt;
&lt;strong&gt;Zimbra&lt;/strong&gt;: Umm... Install Linux, it&#039;s easy.&lt;br /&gt;
&lt;strong&gt;Me&lt;/strong&gt;: You&#039;re kinda missing the point.&lt;br /&gt;
&lt;/blockquote&gt;

&lt;p&gt;I then turn to Sergey, master of brute force, on our SA team and said: you&#039;ve got five days to run this on Solaris.  Sergey says: &quot;done.&quot;&lt;/p&gt;

&lt;p&gt;From here, we test quite a bit, doing migrations from the existing solution and installation tests. Whiz, bang, whirrrrr.  We&#039;re happy, and I go back to Zimbra with some trepidation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;strong&gt;Me&lt;/strong&gt;: How much?&lt;br /&gt;
&lt;strong&gt;Zimbra&lt;/strong&gt;: Fill out this form and fax it.&lt;br /&gt;
&lt;strong&gt;Me&lt;/strong&gt;: Okay... [faxed form]&lt;br /&gt;
&lt;strong&gt;Me&lt;/strong&gt;: I sent it.&lt;br /&gt;
&lt;strong&gt;Zimbra&lt;/strong&gt;: Got it, you should have your license.&lt;br /&gt;
&lt;strong&gt;Me&lt;/strong&gt;: Wow, that was easy.&lt;br /&gt;
&lt;/blockquote&gt;

&lt;p&gt;While I like free software a lot.  Boy is it refreshing to find a company that knows how to take your money without pain and suffering, like &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL21pY3Jvc29mdC5jb20v&amp;amp;entry_id=98&quot; title=&quot;http://microsoft.com/&quot;  onmouseover=&quot;window.status=&#039;http://microsoft.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;some companies I know&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I&#039;m sure that Zimbra is just trying to limit the support platforms to help control their engineering costs.  The support for Linux is a no-brainer -- it&#039;s the most popular new deployment platform for just about everyone.  But, support for Mac OS X... as if there is demand for that in the enterprise?!  WTF?  I know all about &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL21lc3NhZ2VzeXN0ZW1zLmNvbS8=&amp;amp;entry_id=98&quot; title=&quot;http://messagesystems.com/&quot;  onmouseover=&quot;window.status=&#039;http://messagesystems.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;developing mail products&lt;/a&gt; and I understand that Mac OS X support is often iintroduced due to the engineering staff owning MacBook Pros.  But, come on... Tier 1 support for Mac OS X before Solaris, not very good market research here fellas.&lt;/p&gt;

&lt;p&gt;Anyway, we&#039;ve got Zimbra cooking on a sweet Solaris box attached to a Sun StorEdge T3.  One zone runs Zimbra Network Edition and another zone runs Zimbra Open Source Edition.  Both of these running on some nice ZFS mount points that are conveniently backed up with &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cHM6Ly9sYWJzLm9tbml0aS5jb20vdHJhYy96ZXRhYmFjay8=&amp;amp;entry_id=98&quot; title=&quot;https://labs.omniti.com/trac/zetaback/&quot;  onmouseover=&quot;window.status=&#039;https://labs.omniti.com/trac/zetaback/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Zetaback&lt;/a&gt;... Bliss.&lt;/p&gt;

&lt;p&gt;Oh yeah.  One detractor to my bliss: I spent 2 days deleting old mail folders and eliminating cruft (built up over the last 10 years).  11 hours of imapsync to get my now down to 14 gigabyte mail store over is just painful.  There should be a universal mail store format so that I can &quot;burn&quot; by old mail into a universal archive format and just plug that into mail any mail server.  Right.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 29 Oct 2007 22:13:59 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/98-guid.html</guid>
    
</item>
<item>
    <title>PostgreSQL warm standby on ZFS crack</title>
    <link>http://www.lethargy.org/~jesus/archives/92-PostgreSQL-warm-standby-on-ZFS-crack.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/92-PostgreSQL-warm-standby-on-ZFS-crack.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=92</wfw:comment>

    <slash:comments>10</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=92</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;So, the state of open source database replication is pretty sad.  &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=145&amp;amp;entry_id=92&quot; title=&quot;http://www.mysql.com/&quot;  onmouseover=&quot;window.status=&#039;http://www.mysql.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;MySQL&lt;/a&gt; replication just doesn&#039;t cut it in many serious environments because the slaves can&#039;t keep up with the write load on the master.  So, &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=146&amp;amp;entry_id=92&quot; title=&quot;http://www.postgresql.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.postgresql.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PostgreSQL&lt;/a&gt; right?  Well, not so fast.  PostgreSQL replication is handled in one of two ways: &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=147&amp;amp;entry_id=92&quot; title=&quot;http://slony.info/&quot;  onmouseover=&quot;window.status=&#039;http://slony.info/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Slony&lt;/a&gt; or &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=148&amp;amp;entry_id=92&quot; title=&quot;http://www.postgresql.org/docs/8.2/static/continuous-archiving.html&quot;  onmouseover=&quot;window.status=&#039;http://www.postgresql.org/docs/8.2/static/continuous-archiving.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PITR&lt;/a&gt; (point-in-time recovery).&lt;/p&gt;

&lt;p&gt;Slony provides all the same features as MySQL&#039;s replication (except that it is much harder to setup and maintain), but also boasts the same acute performance issues -- a busy master can easily outpace slaves, leaving them in the dust.  Query-log-based replication is pretty flawed and while &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=149&amp;amp;entry_id=92&quot; title=&quot;http://mysqldatabaseadministration.blogspot.com/2007/05/pre-fetch-binlogs-to-speed-up-mysql.html&quot;  onmouseover=&quot;window.status=&#039;http://mysqldatabaseadministration.blogspot.com/2007/05/pre-fetch-binlogs-to-speed-up-mysql.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;creative people will do whack shit to try to push the envelope&lt;/a&gt; this still doesn&#039;t make it a good method.&lt;/p&gt;

&lt;p&gt;PITR is much more like &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=150&amp;amp;entry_id=92&quot; title=&quot;http://www.oracle.com/&quot;  onmouseover=&quot;window.status=&#039;http://www.oracle.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Oracle&lt;/a&gt;&#039;s replication mechanism.  PITR takes the WAL (write-ahead logs) and ships them over to the slave to be reapplied.  This leaves you with an identical database (block for block) and a weak machine can easily keep up with a beefy master.  In Oracle terminology &quot;WALs&quot; are called &quot;archive logs.&quot;&lt;/p&gt;

&lt;p&gt;So, with PITR, all our problems are solved, right?  No.  When using a PITR-style warm standby configuration the database is in &quot;recovery mode&quot; all the time.  This means the database is &quot;sorta up&quot; waiting for the next WAL log to appear so that it can play forward through the transactions and &quot;catch up&quot; to the master: &quot;continuous recovery.&quot;  This means the database isn&#039;t available for queries.  Now, Oracle works the same way.  While Oracle is recovering, you can&#039;t use the database.  However, using Oracle you can cancel recover, mount the database read-only, do some queries, unmount and begin recovery again picking right up where you left off.  In PostgreSQL you cannot open the database in read-only mode and then later continue recovery as the act of opening the database (even in read-only mode) will deviate from the path of the recovery -- can we say design flaw?&lt;/p&gt;

&lt;p&gt;While Oracle&#039;s &quot;got game&quot; on PostgreSQL, the concept of stopping recovery so that we can run queries on the slave isn&#039;t ideal.  If my queries are substantial my &quot;warm standby&quot; will get colder and colder as it sits neglecting to apply archive logs.  So, I want my warm standby and I want to be able to run long, heavy queries against it.  &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=151&amp;amp;entry_id=92&quot; title=&quot;http://code.google.com/soc/2007/postgres/appinfo.html?csaid=6545828A8197EBC6&quot;  onmouseover=&quot;window.status=&#039;http://code.google.com/soc/2007/postgres/appinfo.html?csaid=6545828A8197EBC6&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;And someone&#039;s going to give it to me!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, I&#039;m impatient.  So, I&#039;m going to make it work myself.  Using the power of ZFS, I&#039;m going to snap my PITR slave and clone it into a &quot;disposable&quot; &quot;point-in-time&quot; copy.  This is really useful for running heavy reports.&lt;/p&gt;

The basic concept is this:

&lt;ul&gt;
&lt;li&gt;I&#039;ve got PostgreSQL running on my box as a PITR slave.  The master is pushing WAL logs over and this box is running in recovery mode.&lt;/li&gt;
&lt;li&gt;Per best practices, my postgres data directory, xlogs and WAL archives are on different filesystems (ZFS of course).

&lt;pre&gt;
intmirror/postgres/82_xlogs  64.1M  66.8G  64.1M  /data/postgres/82_xlogs
store2/postgres/82    10.5G  1.97T  8.15G  /data/postgres/82
store2/postgres/82_walarchives 14.4G  1.97T  3.89G  /data/postgres/82_walarchives
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;zfs create store2/clonedb&lt;/li&gt;
&lt;li&gt;I create zone called &quot;clonedb&quot; with a zonepath /zones/clonedb&lt;/li&gt;
&lt;li&gt;I make &#039;store2/clonedb&#039; subject to an &#039;add dataset&#039; in the clonedb zone configuration.&lt;/li&gt;
&lt;li&gt;I setup the zone to run postgres just as the globalzone does.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, all I have to do is get a copy of the PITR stuff into that zone.  There are a few caveats: (1) due to postgres&#039; design the copy must be read-write as it will be destructive even in read-only mode and (2) it will still be in recovery mode, so I&#039;ll need the last WAL archive so that it can &quot;finish&quot; recovery before I bring it online.&lt;/p&gt;

&lt;p&gt;ZFS gives us cheap, fast read-write clones of filesystems:&lt;/p&gt;
&lt;pre&gt;
&lt;b&gt;In the global zone:&lt;/b&gt;
zfs snapshot store2/postgres/82@clonebase
zfs clone store2/postgres/82@clonebase store2/clonedb/82

&lt;b&gt;In the clonedb zone:&lt;/b&gt;
zfs mount /store2/postgres/82
zfs set mountpoint=/data/postgres/82 store2/clonedb/82
&lt;/pre&gt;

&lt;p&gt;I need to make sure I copy the latest WAL archive from the PITR slave into the pg_walarchives directory on my clonedb zone. Then I just startup my postgres instance in the zone and touch the /data/postgres/82/failover file (this file tells my recovery script to stop recovering and start up normally).  Viola.&lt;/p&gt;

&lt;p&gt;It might sound complicated, but we just run ./&lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=152&amp;amp;entry_id=92&quot; title=&quot;https://labs.omniti.com/trac/pgsoltools/browser/trunk/pitr_clone/clonedb_startclone.sh&quot;  onmouseover=&quot;window.status=&#039;https://labs.omniti.com/trac/pgsoltools/browser/trunk/pitr_clone/clonedb_startclone.sh&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;clonedb_startclone.sh&lt;/a&gt; and in about one minute we have a fully operational read-write database and the PITR slave is merrily continuing recovery.&lt;/p&gt;

&lt;pre&gt;
# ./clonedb_startclone.sh
[Mon Jul  2 20:37:14 EDT 2007] Stopping postgres in clonedb
[Mon Jul  2 20:37:20 EDT 2007] Dropping clone and base snapshot
[Mon Jul  2 20:37:38 EDT 2007] Snapshot store2/postgres/82
[Mon Jul  2 20:37:39 EDT 2007] Clone to store2/clonedb/82
[Mon Jul  2 20:37:41 EDT 2007] Mount store2/clonedb/82 at /data/postgres/82 in clonedb
[Mon Jul  2 20:37:43 EDT 2007] Copy last WAL [0000000100000016000000FA]
[Mon Jul  2 20:37:43 EDT 2007] Make it active [induce failover]
[Mon Jul  2 20:37:43 EDT 2007] Start postgres in clonedb
[Mon Jul  2 20:38:07 EDT 2007] System up
&lt;/pre&gt;

&lt;p&gt;Now I can run long data mining queries and other complicated reports against my standby database.  No load is induced on the master database at all (so no concern about negative production service effects) and the standby recovery is continuing on unaffected, so from the failover point-of-view nothing has changed either.  I am not even limited to one zone!  Any time I&#039;d like to, I can just &quot;snap&quot; myself a new query slave.  It&#039;s a &lt;em&gt;cheap&lt;/em&gt;, mutable, entirely disposable copy. Nice.&lt;/p&gt;

&lt;p&gt;It&#039;s worth noting that this same technique should work like a charm on Oracle as well.  Also, it should work well with any other filesystem that supports copy-on-write cloning -- though I don&#039;t know of any other than ZFS.&lt;/p&gt;

&lt;p&gt;This, in a long line of things, just lets you know that when your database doesn&#039;t quite have the spunk to finish the race, today&#039;s operating systems are actually powerful enough to drag them across the finish line.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 02 Jul 2007 21:06:32 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/92-guid.html</guid>
    
</item>
<item>
    <title>ZFS rules: congratulations to FreeBSD, Sun and Pawel Dawidek</title>
    <link>http://www.lethargy.org/~jesus/archives/88-ZFS-rules-congratulations-to-FreeBSD,-Sun-and-Pawel-Dawidek.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/88-ZFS-rules-congratulations-to-FreeBSD,-Sun-and-Pawel-Dawidek.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=88</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=88</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;I am very pleased to learn that shortly (a year or so) after Sun&#039;s opening of Solaris under the CDDL open source license that communities outside of the Sun/Solaris community are truly seeing benefit.  &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL2RvY3MuZnJlZWJzZC5vcmcvY2dpL2dldG1zZy5jZ2k/ZmV0Y2g9NTM2MDQrMCtjdXJyZW50L2ZyZWVic2QtZnM=&amp;amp;entry_id=88&quot; title=&quot;http://docs.freebsd.org/cgi/getmsg.cgi?fetch=53604+0+current/freebsd-fs&quot;  onmouseover=&quot;window.status=&#039;http://docs.freebsd.org/cgi/getmsg.cgi?fetch=53604+0+current/freebsd-fs&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Pawel Dawidek announced yesterday that ZFS is now in FreeBSD HEAD and will be available in 7.0&lt;/a&gt;.  This is very exciting news.  We use ZFS and many of its advanced features extensively here at the &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL29tbml0aS5jb20v&amp;amp;entry_id=88&quot; title=&quot;http://omniti.com/&quot;  onmouseover=&quot;window.status=&#039;http://omniti.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;$DAYJOB&lt;/a&gt; and I can say with authority that ZFS is damn cool juju.&lt;/p&gt;

&lt;p&gt;We manage quite a few FreeBSD machines (in addition to Linux and Solaris).  It&#039;s good to know that some of the elegant solutions we&#039;ve deployed on Solaris leveraging ZFS will now translate well to another platform we work with.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 06 Apr 2007 09:29:15 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/88-guid.html</guid>
    
</item>
<item>
    <title>Sun/OmniTI PostgreSQL Case Study</title>
    <link>http://www.lethargy.org/~jesus/archives/84-SunOmniTI-PostgreSQL-Case-Study.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/84-SunOmniTI-PostgreSQL-Case-Study.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=84</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=84</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;I&#039;ve blogged a few times in the past about running large PostgreSQL applications on Solaris.  I&#039;ve also spoken about the same adventure at various industry conferences.  I&#039;m pretty excited to see that the case study that we worked on with Sun has finally hit the bit pipes of the Internet.&lt;/p&gt;

&lt;p&gt;I&#039;ll note that we run Solaris, FreeBSD, OpenBSD, Mac OS X, and Linux here at the &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL29tbml0aS5jb20vaG9tZQ==&amp;amp;entry_id=84&quot; title=&quot;http://omniti.com/home&quot;  onmouseover=&quot;window.status=&#039;http://omniti.com/home&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;$DAYJOB&lt;/a&gt;.  A whole lot of Linux, actually.  The reason we run these various things is that they are all UNIX or UNIX-like and all make us happy.  Each is a different, yet effective, lance to shatter the windmills at which we tilt.  Each OS has its issues, none is perfect.&lt;/p&gt;

&lt;p&gt;This particular tale is one of a datawarehouse application and astoudingly effective application of Solaris 10 and PostgreSQL 8 to boast.  Enjoy.&lt;/p&gt;

&lt;blockquote&gt;
OmniTI’s move from a proprietary application 
to PostgreSQL for its customer was prompted 
by growing database requirements that were 
threatening to send software costs skyrocketing. 
The company’s existing online transaction 
processing (OLTP) and data warehouse 
capabilities strained to keep up with the demands 
of a half-terabyte OLTP database peaking at 
10,000 transactions per second and a data 
warehouse database consuming 1.2 terabytes.
&lt;/blockquote&gt;

&lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL3d3dy5zdW4uY29tL2Vtcmt0L3Nyc2MvcG9zdGdyZXNxbC5odG1s&amp;amp;entry_id=84&quot; title=&quot;http://www.sun.com/emrkt/srsc/postgresql.html&quot;  onmouseover=&quot;window.status=&#039;http://www.sun.com/emrkt/srsc/postgresql.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Read more about the case study.&lt;/a&gt; 
    </content:encoded>

    <pubDate>Mon, 19 Feb 2007 23:36:45 -0500</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/84-guid.html</guid>
    
</item>
<item>
    <title>ZFS send^H^H^H^H trickle.</title>
    <link>http://www.lethargy.org/~jesus/archives/80-ZFS-sendHHHH-trickle..html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/80-ZFS-sendHHHH-trickle..html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=80</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=80</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;One of the things that ZFS boast most is its scalability -- Z is for zetabyte after all.  Trivia question: what is the first thing you do after you put data on your production ZFS volume?  That&#039;s right, you back it up to your backup infrastructure.  A lot of systems use tar or other archive like derivatives to manage backups.  This technique is particularly awful with databases.  Databases usually consist of very very large files (multi-gigabyte) that have minimal changes to them.  With full archive systems, any attempt at incremental backups results in horrible space and time inefficiency as a small (8192 byte) change in a datafile will necessitate the whole file to be backed up in the next incremental.&lt;/p&gt;

&lt;p&gt;Enter block-level incremental (BLI) backups.  The idea here is that you ask your filesystem to track which blocks change from a certain moment in time.  And you can ask the filesystem for all blocks of a filesystem (view consistent, of course) and then later ask it for the changeset.  In other words its like doing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;snapshot FS as &#039;base&#039;, backup &#039;base&#039;.&lt;/li&gt;
&lt;li&gt;wait a day&lt;/li&gt;
&lt;li&gt;snapshot FS as &#039;inc1&#039;, backup diff &#039;base&#039; &#039;inc1&#039;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Filesystems have supported this type of behavior for a while now (Veritas VxFS has a magnificent implementation).  Needless to say I was ecstatic when I read the zfs manpage and learned of the &#039;zfs send&#039; and &#039;zfs recv&#039; operation.  Functionally, they implement BLIs.&lt;/p&gt;

&lt;p&gt;We have a database on which we have around 1TB of information on zfs.  So, I figured we&#039;d whip together a script to tie in zfs send (including incremental support) to our Veritas NetBackup infrastructure.&lt;/p&gt;

&lt;p&gt;We have three mount points that we need to snap and send to NetBackup, so I create three FIFOs on disk and fork off three parallel &#039;zfs send&#039; operations.  Then I fork off three parallel netbackup jobs (one for each FIFO).  We have three tape heads so, they all actually run in parallel and should fly like the wind (all over GigE).&lt;/p&gt;

&lt;pre&gt;
# date; ./zbackup.sh -s -l 2006121402; date
Thu Dec 14 12:58:43 EST 2006
./zbackup.sh:
  backuplabel: 2006121402
  full

zfs destroy intmirror/xlogs@lastfull
zfs destroy xsr_slow_1/pgdata@lastfull
zfs destroy xsr_slow_2/pgdata@lastfull

Backing up as &#039;2006121402&#039;
starting postgres backup on label 2006121402
zfs snapshot intmirror/xlogs@lastfull
zfs snapshot xsr_slow_1/pgdata@lastfull
zfs snapshot xsr_slow_2/pgdata@lastfull
stopping postgres backup on label 2006121402
/sbin/zfs send intmirror/xlogs@lastfull &gt;&gt; /pgods/scratch/intmirror:xlogs.lastfull.full &amp;amp;
/sbin/zfs send xsr_slow_1/pgdata@lastfull &gt;&gt; /pgods/scratch/xsr_slow_1:pgdata.lastfull.full &amp;amp;
/sbin/zfs send xsr_slow_2/pgdata@lastfull &gt;&gt; /pgods/scratch/xsr_slow_2:pgdata.lastfull.full &amp;amp;

Sat Dec 23 15:39:47 EST 2006
&lt;/pre&gt;

&lt;p&gt;SWEET JESUS!  That&#039;s a 9 day, 2 hour, 41 minutes and 4 second backup.  Somehow I think that doing daily incremental backups is out of the question.  I tried zfs send redirected to /dev/null (just to demonstrate that netbackup was not the bottleneck) and, as expected, there was no noticeable speedup.  I&#039;ve tested this on some other machines and got the send operation to run quite fast.  However, any time a very competitive I/O load is added, it just suffers miserably and becomes so slow that it is useless.&lt;/p&gt;

&lt;p&gt;Reading the source code to the ZFS layer leads me to believe that all the operations for doing the send are scheduled serially (each after the previous completes) and compete equally for system I/O with all other processes.  I saw no intuitive way to make the ioctl()s with ZFS act as if they were more important that other things going on in the system.  This leads me to believe that it may not be so easy to fix.  However, those Sun engineers have wicked tricks up their sleeves and tend to pull of some amazing feats.  So, here&#039;s hoping!&lt;/p&gt;

&lt;p&gt;Until then, I hereby suggest that the &#039;zfs send&#039; be renamed &#039;zfs trickle&#039;.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 27 Dec 2006 15:13:04 -0500</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/80-guid.html</guid>
    
</item>
<item>
    <title>Choosing Solaris 10 over Linux</title>
    <link>http://www.lethargy.org/~jesus/archives/77-Choosing-Solaris-10-over-Linux.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/77-Choosing-Solaris-10-over-Linux.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=77</wfw:comment>

    <slash:comments>17</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=77</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;h3&gt;The Domain&lt;/h3&gt;
&lt;p&gt;
So, at the $DAYJOB, we were faced with building a large operational data store.  Large has many meanings to many people.  I&#039;ve written about this before, but I&#039;ll reiterate the scope: (&gt; 1TB data, thousands of tables, several tables with around one billion rows).  So, for a variety of reasons, we chose &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=161&amp;amp;entry_id=77&quot; title=&quot;http://www.postgresql.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.postgresql.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PostgreSQL&lt;/a&gt;.  I&#039;ve written about that choice a few times, but didn&#039;t write about the choice to use &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=162&amp;amp;entry_id=77&quot; title=&quot;http://www.sun.com/os&quot;  onmouseover=&quot;window.status=&#039;http://www.sun.com/os&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Solaris&lt;/a&gt;.
&lt;/p&gt;

&lt;h3&gt;A Bad Choice&lt;/h3&gt;
&lt;p&gt;
So, I&#039;ll start by saying we chose Linux -- &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=163&amp;amp;entry_id=77&quot; title=&quot;http://www.centos.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.centos.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;CentOS 4&lt;/a&gt; (an RHEL4 clone).  The box we chose was a 4 processor Opteron with 16GB of RAM, three internal drives and the rest is fiber-attached storage.  While I like &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=164&amp;amp;entry_id=77&quot; title=&quot;http://oss.sgi.com/projects/xfs/&quot;  onmouseover=&quot;window.status=&#039;http://oss.sgi.com/projects/xfs/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;XFS&lt;/a&gt; a lot as a file system, but I&#039;ve seen some odd issues here and there (specifically on our 1TB mail server here and out 1TB subversion server).  So, just to be safe, we used the tried and true ext3.
&lt;/p&gt;

&lt;p&gt;
It started out well.  One day /data/ (our large postgresql data mount point) suddenly went read-only.  Postgres, of course, was quite displeased with this occurrence.  So, naturally, I tried to fix the problem by umounting and mounting again, all to no avail.  It turns out that a reboot was required to rectify the issue.  While this was disturbing, we rebooted and continued on with life.  The more annoying issue was the subsequent 18 times this occurred.  The show stopper was the 20th time it failed; upon reboot I found catastrophic data loss.
&lt;/p&gt;

&lt;p&gt;
To set the scene appropriately: we run Linux in a lot of places and run &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=165&amp;amp;entry_id=77&quot; title=&quot;http://www.freebsd.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.freebsd.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;FreeBSD&lt;/a&gt; and &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=166&amp;amp;entry_id=77&quot; title=&quot;http://www.openbsd.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.openbsd.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;OpenBSD&lt;/a&gt; and &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=162&amp;amp;entry_id=77&quot; title=&quot;http://www.sun.com/os&quot;  onmouseover=&quot;window.status=&#039;http://www.sun.com/os&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Solaris&lt;/a&gt;.  Where we run these it runs well -- because when it doesn&#039;t we replace it with something does.  I love FreeBSD, but I have some application code that will make it kernel panic inside 5 minutes.  Long story short, fear PostgreSQL on 64-bit Linux.  Once bitten, twice shy... 20 times you&#039;re an idiot.
&lt;/p&gt;

&lt;h3&gt;A Better Choice&lt;/h3&gt;
&lt;p&gt;
So, we chose Solaris 10.  Why?  We&#039;ve run a lot on Solaris and been quite pleased with its stability.  It has excellent support for enterprise storage hardware and multi-processor AMD Opteron systems.  We&#039;ve used &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=168&amp;amp;entry_id=77&quot; title=&quot;http://www.symantec.com/enterprise/products/overview.jsp?pcid=1020&amp;amp;pvid=203_1&quot;  onmouseover=&quot;window.status=&#039;http://www.symantec.com/enterprise/products/overview.jsp?pcid=1020&amp;amp;pvid=203_1&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;VxFS&lt;/a&gt; (Veritas File System) and it has been a &quot;good life.&quot;  Solaris 10 sports a new file systems called &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=169&amp;amp;entry_id=77&quot; title=&quot;http://www.sun.com/software/solaris/data_management.jsp&quot;  onmouseover=&quot;window.status=&#039;http://www.sun.com/software/solaris/data_management.jsp&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ZFS&lt;/a&gt; which boasts a lot of the features of the VxFS file system (but not quite the performance).  ZFS&#039;s volume management, built in compression, snapshot capabilities, and simple management makes it a hands-down winner over &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=170&amp;amp;entry_id=77&quot; title=&quot;http://sources.redhat.com/lvm2/&quot;  onmouseover=&quot;window.status=&#039;http://sources.redhat.com/lvm2/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;LVM&lt;/a&gt; (&lt;span class=&quot;strike&quot;&gt;Linux&lt;/span&gt; Logical Volume Manager) and ext3.  Now we have two 2.7TB ZFS pools, soon to add another 1.4TB pool, and management has been quite painless.
&lt;/p&gt;

&lt;p&gt;
Another issue that we had with PostgreSQL (coming from &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=171&amp;amp;entry_id=77&quot; title=&quot;http://www.oracle.com/&quot;  onmouseover=&quot;window.status=&#039;http://www.oracle.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Oracle&lt;/a&gt;) was severe inability to introspect the database.  Why is a query slow?  How many disk reads did it do?  Which locks did it acquire, when and how long did it block waiting for the lock to be granted?  If a query hits disk, which spindles were accessed?  PostgreSQL simply does not provide an interface to this information.  How, you ask, does Solaris help with this?  Enter &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=172&amp;amp;entry_id=77&quot; title=&quot;http://www.sun.com/2004-0518/feature/&quot;  onmouseover=&quot;window.status=&#039;http://www.sun.com/2004-0518/feature/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;DTrace&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=173&amp;amp;entry_id=77&quot; title=&quot;http://www.sun.com/software/solaris/observability.jsp&quot;  onmouseover=&quot;window.status=&#039;http://www.sun.com/software/solaris/observability.jsp&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;DTrace&lt;/a&gt; allows us to dynamically instrument the undercarriage of PostgreSQL (see what it is doing from the application level all the way down through the kernel).  Because you can instrument application space right along side kernel space, we can see the queries being performed, the SQL plan being executed, the memory allocations, lock acquisitions, disk reads and writes, simply put: everything.  Using DTrace we were able to develop a PostgreSQL administration toolkit that provides information such as the number of blocks read and written to each individual spindle over the course of a given query.
&lt;/p&gt;

&lt;p&gt;
We also use &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=174&amp;amp;entry_id=77&quot; title=&quot;http://opensolaris.org/os/community/smf/&quot;  onmouseover=&quot;window.status=&#039;http://opensolaris.org/os/community/smf/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;SMF&lt;/a&gt;, but I honestly don&#039;t think that buys us anything really special.  It&#039;s nice that it &quot;just works,&quot; but quite frankly you can my SysV scripts &quot;just work&quot; as well.
&lt;/p&gt;

&lt;p&gt;
In the works is a set of PostgreSQL administrator tools that transparent database-level access to systemic information about PostgreSQL back end processes.
&lt;/p&gt;

&lt;h3&gt;Not everything is peaches and cream.&lt;/h3&gt;
&lt;p&gt;
One of the nice features of ZFS is the snapshot backups and the ability to &quot;dump&quot; the differences between one snapshot and the next.  This, in essence, is a BLI: block-level incremental backup.  ZFS manages this on a &quot;zobject&quot; level as I understand it, but it should accomplish the same thing.  It means that if you have only 1GB of changes on a 5TB filesystem, it is feasible to restore a 5TB base image and then a 1GB changeset to get a block-level accurate restore.  This in turn means that you can backup 5TB once per week an then each day backup only the changes between that &quot;level 0&quot; backup and the current snapshot (which should be small and manageable).  I love this feature -- but hate that it doesn&#039;t work.  On our system, at least, a &quot;zfs send&quot; of the differences between one snapshot and the next can take 40-50 hours.  This appears to be a flaw in the ZFS send works in that it doesn&#039;t prioritize its I/O requests over normal traffic.  I hope the Sun guys get to work on this one soon!
&lt;/p&gt;

&lt;h3&gt;Review&lt;/h3&gt;
&lt;p&gt;
After running the system for some time now, I can say that Solaris 10 was an excellent decision.  We&#039;ve since launched four more respectably sized PostgreSQL instances on Solaris 10 with equal success.
&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Tue, 28 Nov 2006 22:31:17 -0500</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/77-guid.html</guid>
    
</item>
<item>
    <title>PostgreSQL performance through the eyes of DTrace</title>
    <link>http://www.lethargy.org/~jesus/archives/74-PostgreSQL-performance-through-the-eyes-of-DTrace.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/74-PostgreSQL-performance-through-the-eyes-of-DTrace.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=74</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=74</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;
We&#039;ve been doing a lot of PostgreSQL work lately and we have one largish system (terabytes) that runs on top of Apple XServe RAIDs.  While people argue that SATA is getting better, let it be understood that Fibre channel SCSI drives rule.  The difference between carrier class storage and &quot;enterprise&quot; (a.k.a. commodity) is pretty tremendous.
&lt;/p&gt;

&lt;p&gt;
While this system will eventually make good use of the XServer RAIDs and long-term storage containers for write-once read-many data tables (archives), the &quot;fast&quot; storage it currently tied up and we&#039;ve been &quot;making due&quot; with all of our heavy read/write activity on 14 SATA drives.  It is always advisable to understand the access patterns of your database so that you can put files that are heavily utilized at the same time on different spindles.  This allows for a set of drives heads to be occupied with one style of work load without being distracted by another.  In big databases, getting more spindles is a must and usually not a budgetary concern.  BUT, how do you know which files?
&lt;/p&gt;

&lt;p&gt;
Oracle provides enough information inside the database itself for a DBA to do an assessment of which datafiles could benefit from running on separate spindles.  PostgreSQL&#039;s statistics exist, but are very lacking in comparison.  The rule of thumb is that you pur indexes and data on different spindles.  In big systems you don&#039;t follow &quot;rules of thumb&quot; you instead use them as the basis for experimentation and emperical analysis.  Big systems often vary widely in their configuration and stress points and the &quot;rules of thumb&quot; are for generic problems, while they &lt;strong&gt;may&lt;/strong&gt; hold true on your system, &quot;don&#039;t jump.&quot;
&lt;/p&gt;

&lt;p&gt;
So, what is a PostgreSQL user to do?  First, run Solaris 10.  Second leverage Dtrace to really answer the age old question &quot;where does it hurt?&quot;  I scratched together a little perl/dtrace to measure the min/avg/max read() and write() times induced by PostgreSQL (yes it uses read() and write() for all of its I/O ops on UNIX) and break it down by filename.  I initially used the io::: provider to only measure the ones that induced physical reads against media (didn&#039;t come out of buffer cache).  While it is really cool that you can do this, we would miss the reads that &lt;strong&gt;would&lt;/strong&gt; happen we moved things around and blew our buffer cache -- so I opted for all reads (less cool : more useful).
&lt;/p&gt;

&lt;p&gt;
After we collect metrics from all the file I/O, we connect to PostreSQL and ask it which database objects correspond to the files we see being read and written to.  The result is a simple prstat-like output by database object of the number of reads/writes performed along with the minimum, avergage and maximum turn-around time for the operation in milliseconds.  Quite useful for understanding &quot;what hurts.&quot;
&lt;/p&gt;

So the command &#039;&lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url=aHR0cDovL29tbml0aS5jb20vfmplc3VzL3Byb2plY3RzL3BnX2ZpbGVfc3RyZXNz&amp;amp;entry_id=74&quot; title=&quot;http://omniti.com/~jesus/projects/pg_file_stress&quot;  onmouseover=&quot;window.status=&#039;http://omniti.com/~jesus/projects/pg_file_stress&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pg_file_stress&lt;/a&gt; -d dbname -u postgres -i 30 -n 20&#039; would yield useful output like:
&lt;pre class=&quot;wide&quot;&gt;
           FILENAME/DBOBJECT                                      READS                 WRITES      
                                                         #   min   avg   max     #   min   avg   max
ods_users                                             9494    84   144  1039     6     0    34   207
ods_tblfl_unsub_users_p_2006_10                          1   201   201   201   127     0     0     0
ods_tblusersanswers_p2006_12_ix_timestamp                1   179   179   179     0     0     0     0
tbluser_address                                        307    91    91  1076     0     0     0     0
pg_rewrite                                               8     0    93   749    12     0     4    59
ods_tblusersanswers_p2006_11_ix_timestamp                1    80    80    80     0     0     0     0
ods_tblhits_sum01_p2005_11_partner                      20     0    60   897     0     0     0     0
pg_depend_reference_index                               38     0    46   700    48     0     0     0
ods_tblfl_unsub_users_p_2006_09                          1    28    28    28    94     0     0     0
pg_depend_depender_index                                29     0    22   407    11     0     1    14
ods_users_pk                                           306     0    16   777     0     0     0     0
ods_tblhits_sum01_p2005_10_partner                       4     0    12    48     0     0     0     0
pg_statistic                                           158     0     9   819    88     0     0     0
ods_tblhits_sum01_p2005_11                            5279     0     4  1102     0     0     0     0
ods_tblhits_sum01_p2005_10                            1277     0     3   755     0     0     0     0
ods_tblusersanswers                                   4295     0     1  1422     0     0     0     0
pg_statistic_relid_att_index                            41     0     1    67    31     0     0     0
pg:3083076                                            1702     0     1  1015   808     0     0     0
mv_users                                              2751     0     1  1036    26     0     0     0
users_tx_p20061022                                    2264     0     0   667     0     0     0     0
&lt;/pre&gt;

&lt;p&gt;
9494 read operations with an average turn around time of 144ms.  Sweet Jesus!  I suppose that could use its own spindles.  307 ops at 91ms ain&#039;t pretty either.
&lt;/p&gt;

&lt;p&gt;
More than demonstrating how to solve our problem, this demonstrates the acute need to decommission the box using our fast storage and swing those units over to our database of pain.
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 27 Oct 2006 14:17:18 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/74-guid.html</guid>
    
</item>
<item>
    <title>ZFS and mixed results</title>
    <link>http://www.lethargy.org/~jesus/archives/71-ZFS-and-mixed-results.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/71-ZFS-and-mixed-results.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=71</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=71</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    We&#039;ve had great luck with ZFS on some &quot;largish&quot; systems.  I haven&#039;t worked out how to blog about them yet as they contain a lot of client specifics, but I now have ZFS in a happy place of my mind.  However, most of the stuff we do doesn&#039;ts go over NFS.  So, Eric (who leads out operations group) was tasked to solve some heterogenous home dir issues across a large build cluster we have at the $DAYJOB.  &lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=93&amp;amp;entry_id=71&quot; title=&quot;http://www.nanobyte.org/blog/index.php?/archives/7-Economical-Shared-Home-Directories-with-Solaris-and-ZFS.html&quot;  onmouseover=&quot;window.status=&#039;http://www.nanobyte.org/blog/index.php?/archives/7-Economical-Shared-Home-Directories-with-Solaris-and-ZFS.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;His experience with NFS on ZFS&lt;/a&gt; wasn&#039;t so golden as mine.  It didn&#039;t turn out all bad, but it&#039;s really good to know the pitfalls before you start a project -- so read up. 
    </content:encoded>

    <pubDate>Sat, 26 Aug 2006 20:58:45 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/71-guid.html</guid>
    
</item>
<item>
    <title>Big Bad PostgreSQL</title>
    <link>http://www.lethargy.org/~jesus/archives/66-Big-Bad-PostgreSQL.html</link>
            <category>OpenSolaris</category>
    
    <comments>http://www.lethargy.org/~jesus/archives/66-Big-Bad-PostgreSQL.html#comments</comments>
    <wfw:comment>http://www.lethargy.org/~jesus/wfwcomment.php?cid=66</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=66</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;I just gave a talk at OSCON on PostgreSQL.  Specifically, it is a talk on migrating a portion of a large data architecture from Oracle to PostgreSQL.  It is an honest assessment of what was gained and the pains involved.  Several people have requested the talk be put online.  Here it is:&lt;/p&gt;

&lt;center&gt;
&lt;a href=&quot;http://www.lethargy.org/~jesus/exit.php?url_id=91&amp;amp;entry_id=66&quot; title=&quot;http://images.omniti.net/omniti.com/~jesus/misc/BBPostgres.pdf&quot;  onmouseover=&quot;window.status=&#039;http://images.omniti.net/omniti.com/~jesus/misc/BBPostgres.pdf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; border=0&gt;&lt;img src=&quot;http://images.omniti.net/omniti.com/~jesus/misc/BBPostgres.png&quot; width=320 height=240&gt;&lt;/a&gt;
&lt;/center&gt;
 
    </content:encoded>

    <pubDate>Wed, 26 Jul 2006 17:21:36 -0400</pubDate>
    <guid isPermaLink="false">http://www.lethargy.org/~jesus/archives/66-guid.html</guid>
    
</item>

</channel>
</rss>