<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Zombie Process</title>
	<atom:link href="http://zombieprocess.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://zombieprocess.wordpress.com</link>
	<description>2 AM, out of caffeine.  Once more, I'm a... Zombie Process.</description>
	<lastBuildDate>Mon, 22 Jun 2009 15:34:23 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='zombieprocess.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/d275295b91b39bab0a880a59e95ea86b?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Zombie Process</title>
		<link>http://zombieprocess.wordpress.com</link>
	</image>
			<item>
		<title>Recording at 96 kHz: Requires USB 2.0 (duh&#8230;)</title>
		<link>http://zombieprocess.wordpress.com/2009/06/22/recording-at-96-khz-requires-usb-2-duh/</link>
		<comments>http://zombieprocess.wordpress.com/2009/06/22/recording-at-96-khz-requires-usb-2-duh/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 15:34:23 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[recording]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=66</guid>
		<description><![CDATA[I recently installed Ubuntu Studio on a spare, many-years old system (a Pentium 3) to try out a new Edirol UA-25EX audio interface that I picked up.  I plan to detail my experiences with Studio in a soon-to-come post, but there was one problem I ran into that warrants its own post.
After applying a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=66&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I recently installed Ubuntu Studio on a spare, many-years old system (a Pentium 3) to try out a new <a href="http://www.edirol.net/products/en/UA-25EX/">Edirol UA-25EX audio interface</a> that I picked up.  I plan to detail my experiences with Studio in a soon-to-come post, but there was one problem I ran into that warrants its own post.</p>
<p>After applying a patch for the device and rebuilding the kernel modules (again, topic for another post), I was easily able to record at 44.1 kHz.  Then I ran the following command to record at 96 kHz:</p>
<p><code>mike@studio:~$ arecord -v -r 96000 -f cd -t wav -D plughw:UA25EX test.wav</code></p>
<p>After the expected verbose output, the <code>arecord</code> command immediately terminated with the following error message:</p>
<p><code>arecord: xrun:1090: read/write error, state = PREPARED</code></p>
<p>Hmm.  Not very informative.  I thought to run <code>dmesg</code>, though, which gave me more useful information:</p>
<p><code><br />
[13469.727719] ALSA /home/mike/linux-ubuntu-modules-2.6.24-2.6.24/debian/build/build-rt/sound/alsa-driver/usb/usbaudio.c:864: cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
</code></p>
<p>Not enough bandwidth.  It occurred to me at this point that this system is old enough to pre-date the common availability of USB 2.0.  And then I was surprised to find that I didn&#8217;t know how to tell from the command line whether a system&#8217;s USB controllers are 1.1 or 2.0.</p>
<p>And so, to the point of this article:  On a Linux system, how do you determine the versions of your USB controllers?</p>
<p>Simply run <code>lspci -v | grep HCI</code>.  Any controllers that say &#8220;UHCI&#8221; or &#8220;OHCI&#8221; are USB 1.1; any that say &#8220;EHCI&#8221; are 2.0.  Sure enough, there were only USB 1.1 controllers on the system.  I picked up a PCI card with 5 USB 2.0 ports for $15, plugged the audio interface into that, and suddenly I could record at 96 kHz with no problem.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/66/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=66&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2009/06/22/recording-at-96-khz-requires-usb-2-duh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>
	</item>
		<item>
		<title>Using the Sash Widget in Java SWT</title>
		<link>http://zombieprocess.wordpress.com/2009/06/19/using-the-sash-widget-in-java-swt/</link>
		<comments>http://zombieprocess.wordpress.com/2009/06/19/using-the-sash-widget-in-java-swt/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 19:25:40 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SWT]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=61</guid>
		<description><![CDATA[This is the first in what will be a series of posts detailing some of the problems I ran into when developing an SWT-based GUI in the Eclipse development environment.  I hadn&#8217;t developed a GUI in Java since Swing was the new hotness, so SWT was new to me.
The main window design called for a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=61&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This is the first in what will be a series of posts detailing some of the problems I ran into when developing an SWT-based GUI in the Eclipse development environment.  I hadn&#8217;t developed a GUI in Java since Swing was the new hotness, so SWT was new to me.</p>
<div id="attachment_63" class="wp-caption alignright" style="width: 401px"><img class="size-full wp-image-63" title="sashlayout" src="http://zombieprocess.files.wordpress.com/2009/06/sashlayout.png?w=391&#038;h=295" alt="Sash Layout Overview" width="391" height="295" /><p class="wp-caption-text">Layout Overview</p></div>
<p>The main window design called for a toolbar across the top, a table which lists entries from a database, a composite under the table which provides details on the selected entry, and a status bar on the bottom.  It was easy enough to position the widgets using a GridLayout, but I wanted the user to be able to adjust the relative sizes of the table and detail composite, giving either more or less screen real estate to whichever of the two widgets is of the most interest at the moment.  I suspected that a <a href="http://help.eclipse.org/stable/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Sash.html">sash</a> was the way to do this, but the <a href="http://www.eclipse.org/swt/snippets/">SWT snippet library</a>, which is very useful in most cases, contained surprisingly little information on the use of sashes.  After some experimentation, here is what I learned.</p>
<p>Part of the problem was that I was using a GridLayout for the main shell.  Once I switched to using a FormLayout, the sash became trivial to implement.  (<a href="http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html">This article on layouts</a> is spectacular, by the way.)  With the GridLayout, I instantiated the widgets in order from the top to the bottom of the shell, but when I switched to a FormLayout I needed to change the order in which the widgets were created.</p>
<p>The first step when laying out the widgets is to position the sash:</p>
<pre>    final Sash sash = new Sash(shell, SWT.BORDER | SWT.HORIZONTAL);
    formData = new FormData();
    formData.top = new FormAttachment(30, 0);
    formData.left = new FormAttachment(0, 0);
    formData.right = new FormAttachment(100, 0);
    formData.height = 3;
    sash.setLayoutData(formData);</pre>
<p>When the application is started, this sash is positioned in such a way that 30% of the window space is provided for the toolbar and table at the top of the window, and 70% is provided for the detail composite and status bar at the bottom.</p>
<p>At this point, the general idea is to place the widgets from the top of the shell down, until you reach the sash.  Then you place widgets from the bottom of the shell up, again until you reach the sash.  In my case, I instantiated the toolbar first and attached it to the top of the main shell.  Then I created the table and attached the top of it to the bottom of the toolbar, and the bottom of it to the top of the sash.  The next step was to start at the bottom of the shell by attaching a composite for the status bar to the bottom of the main shell.  Then I attached the bottom of the detail composite to the top of the status bar composite, and the top of the detail composite to the bottom of the sash.</p>
<p>With that updated layout, the selection listener for the sash became relatively simple:</p>
<pre>    sash.addListener(SWT.Selection, new Listener () {
        public void handleEvent(Event e) {
            sash.setBounds(e.x, e.y, e.width, e.height);

            FormData formData = new FormData();
            formData.top = new FormAttachment(0, e.y);
            formData.left = new FormAttachment(0, 0);
            formData.right = new FormAttachment(100, 0);
            formData.height = 3;
            sash.setLayoutData(formData);
            shell.layout(true);
        }
    });</pre>
<p>When the sash is moved, this listener causes its layout data to be replaced.  The top of the sash is set to the user-specified location, and the layout() method of the shell is invoked, which will cause the table and detail widgets to be resized to accommodate the new sash location (since they are attached to the sash).</p>
<p>Obviously, it&#8217;s easy to modify this layout strategy for vertical sashes.  It does get a bit more complex if you want to have multiple sashes in the same window, but even that is not too bad: if I had wanted a vertical sash in the detail composite, I could have simply used a form layout within that composite, building widgets from the left and right sides of the composite until they met the sash in the middle.</p>
<p>So there you go:  a quick summary of my experience with the elusive sash widget.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=61&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2009/06/19/using-the-sash-widget-in-java-swt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>

		<media:content url="http://zombieprocess.files.wordpress.com/2009/06/sashlayout.png" medium="image">
			<media:title type="html">sashlayout</media:title>
		</media:content>
	</item>
		<item>
		<title>Where has Mike been?</title>
		<link>http://zombieprocess.wordpress.com/2009/06/11/where-has-mike-been/</link>
		<comments>http://zombieprocess.wordpress.com/2009/06/11/where-has-mike-been/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 18:29:36 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[rambling]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=59</guid>
		<description><![CDATA[I&#8217;ve been here all along!  Obviously, it&#8217;s been many moons since I&#8217;ve posted; I intend to remedy that post-haste.  I don&#8217;t work regularly on RAS anymore, so I had been feeling that my well of ideas for posts had been drying up.  But I&#8217;ve been involved with a number of new projects, and new projects [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=59&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve been here all along!  Obviously, it&#8217;s been many moons since I&#8217;ve posted; I intend to remedy that post-haste.  I don&#8217;t work regularly on RAS anymore, so I had been feeling that my well of ideas for posts had been drying up.  But I&#8217;ve been involved with a number of new projects, and new projects should mean that there are new things to post about.</p>
<p>I don&#8217;t think I&#8217;ve written Java code since Swing and Ant were considered the new hotness.  I&#8217;m now finishing up a Java-based GUI that leverages SWT, and realized that there were a few challenges that I had to pound through the old-fashioned way because, even with the very useful SWT snippets and Javadocs, there was little advice to be found online.  So that&#8217;s where I&#8217;ll start back up:  over the next few weeks, I will be posting articles that discuss these challenges and how I solved them.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=59&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2009/06/11/where-has-mike-been/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>
	</item>
		<item>
		<title>Servicelog Updates</title>
		<link>http://zombieprocess.wordpress.com/2008/08/19/servicelog-updates/</link>
		<comments>http://zombieprocess.wordpress.com/2008/08/19/servicelog-updates/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 17:00:43 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[RAS]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[servicelog]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=54</guid>
		<description><![CDATA[The servicelog package has been updated to version 1.0.  This new version uses an sqlite database as a backend (instead of the Berkeley DB backend that the 0.x stream used).  The primary advantage to the sqlite relational database backend is that queries of the servicelog can be performed with standard SQL queries.  The &#8211;query flag [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=54&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The <a href="http://linux-diag.sourceforge.net/servicelog/">servicelog package</a> has been updated to version 1.0.  This new version uses an sqlite database as a backend (instead of the Berkeley DB backend that the <a href="http://zombieprocess.wordpress.com/2007/12/07/servicelog-source-available/">0.x stream</a> used).  The primary advantage to the sqlite relational database backend is that queries of the servicelog can be performed with standard SQL queries.  The &#8211;query flag to the servicelog command now takes an <a href="http://en.wikipedia.org/wiki/Where_(SQL)">SQL WHERE clause</a> as an argument.  For example, to view all open serviceable events, run:</p>
<p><code>/usr/bin/servicelog --query "serviceable=1 and closed=0"</code></p>
<p>To view all migrations that a logical partition has undergone:</p>
<p><code>/usr/bin/servicelog --query 'refcode="#MIGRATE"'</code></p>
<p>The ability to register notification tools with servicelog, available in the 0.x stream, is still supported, with even more flexibility: now you can specify a query string for matching when registering a new notification tool.  When a new event is logged, the tool will only be invoked if the event matches the criteria specified in that query string.  For example, run the following command (as root) to cause a tool called <code>/opt/foo/some_command</code> to be automatically invoked just after a partition is migrated to a different system:</p>
<p><code>/usr/bin/servicelog_notify --add --command='/opt/foo/some_command' --match='refcode="#MIGRATE"'</code></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/zombieprocess.wordpress.com/54/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/zombieprocess.wordpress.com/54/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=54&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2008/08/19/servicelog-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>
	</item>
		<item>
		<title>Power Platform Diagnostics: Source Available</title>
		<link>http://zombieprocess.wordpress.com/2008/08/15/power-platform-diagnostics-source-available/</link>
		<comments>http://zombieprocess.wordpress.com/2008/08/15/power-platform-diagnostics-source-available/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 19:59:12 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[POWER]]></category>
		<category><![CDATA[RAS]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ppc64-diag]]></category>
		<category><![CDATA[predictive self healing]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=52</guid>
		<description><![CDATA[The package for performing Power platform diagnostics, ppc64-diag, has just been open sourced under the Eclipse Public License.  Much of what I discussed in my previous post about predictive self healing is implemented in this package (and in servicelog, which is already open source).
Here are some of the advantages provided by the ppc64-diag package:

retrieval of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=52&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The package for performing Power platform diagnostics, <a href="http://linux-diag.sourceforge.net/ppc64-diag/">ppc64-diag</a>, has just been open sourced under the <a href="http://www.eclipse.org/legal/epl-v10.html">Eclipse Public License</a>.  Much of what I discussed in my <a href="http://zombieprocess.wordpress.com/2008/01/10/predictive-self-healing-on-linux-on-power/">previous post about predictive self healing</a> is implemented in this package (and in <a href="http://linux-diag.sourceforge.net/servicelog/">servicelog</a>, which is <a href="http://zombieprocess.wordpress.com/2007/12/07/servicelog-source-available/">already open source</a>).</p>
<p>Here are some of the advantages provided by the ppc64-diag package:</p>
<ul>
<li>retrieval of first-failure error data from platform-level components, such as memory, CPUs, caches, fans, power supplies, VPD cards, voltage regulator modules, I/O subsystems, service processors, risers, etc.</li>
<li>the ability to offline CPUs or logical memory blocks (LMBs) that are predicted to fail</li>
<li>notifications of EPOW events (environmental and power warnings), and initiation of shutdowns due to abnormal thermal and voltage conditions if no redundant fans or power supplies are available</li>
<li>monitoring of platform-level elements (fans, power supplies, riser cards, etc.) in external I/O enclosures</li>
<li>retrieval of dumps from platform components to assist in problem determination (for example, dump data from a failed service processor)</li>
</ul>
<p>The ppc64-diag package is generally install-and-forget; any platform events that may occur are logged to servicelog, with indications of the event severity and whether the event is serviceable (i.e. requires service action) or not.  Additional relevant information is also logged to servicelog, such as a <a href="http://zombieprocess.wordpress.com/2008/02/11/power-reference-codes/">reference code</a>, and the <a href="http://zombieprocess.wordpress.com/2007/11/09/location-codes-on-power/">location code</a> and part number of a failing device (obtained from <a href="http://zombieprocess.wordpress.com/2007/11/13/hardware-inventory-with-lsvpd/">lsvpd</a>).  Tools may be registered with servicelog to be automatically notified when new events are logged.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/zombieprocess.wordpress.com/52/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/zombieprocess.wordpress.com/52/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=52&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2008/08/15/power-platform-diagnostics-source-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>
	</item>
		<item>
		<title>SystemTap Without Debug Info</title>
		<link>http://zombieprocess.wordpress.com/2008/07/02/systemtap-without-debug-info/</link>
		<comments>http://zombieprocess.wordpress.com/2008/07/02/systemtap-without-debug-info/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 21:31:58 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[RAS]]></category>
		<category><![CDATA[SystemTap]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=45</guid>
		<description><![CDATA[Just a short post today to mention a new feature in SystemTap that I should have mentioned a while ago.  A primary barrier to the adoption of SystemTap has been the requirement that SystemTap have access to the DWARF debug information for the kernel and modules.   This is no longer the case; as of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=45&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Just a short post today to mention a new feature in SystemTap that I should have mentioned a while ago.  A primary barrier to the adoption of SystemTap has been the requirement that SystemTap have access to the DWARF debug information for the kernel and modules.   This is no longer the case; as of a few weeks ago, SystemTap can operate on systems that do not provide this debug info.  SystemTap users can trace function entries and returns (and report argument values with a little extra effort) even if no debug info is provided.   This currently works for i386 and x86_64, and powerpc support is being debugged.</p>
<p>For more information, refer to <a href="http://sourceware.org/systemtap/wiki/MakeDoWithoutDebugInfo">this page on the SystemTap wiki</a>.  This, combined with <a href="http://zombieprocess.wordpress.com/2008/03/20/upcoming-systemtap-features/">user-space probing</a>, provides substantial and much-needed improvements to the usability of SystemTap.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/zombieprocess.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/zombieprocess.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=45&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2008/07/02/systemtap-without-debug-info/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>
	</item>
		<item>
		<title>Good Guitar Lessons in Austin</title>
		<link>http://zombieprocess.wordpress.com/2008/06/10/good-guitar-lessons-in-austin/</link>
		<comments>http://zombieprocess.wordpress.com/2008/06/10/good-guitar-lessons-in-austin/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 16:38:04 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[rambling]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=39</guid>
		<description><![CDATA[I&#8217;m just going to take a minute to shamelessly advertise for The School of Feedback Guitar in Austin, TX.  I started taking lessons there a few months ago, and I&#8217;m now utterly addicted to this infernal instrument.  It&#8217;s amazing that I can use these QWERTY-seized hands to cause a guitar to make sounds [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=39&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m just going to take a minute to shamelessly advertise for <a href="http://www.schooloffeedbackguitar.com/">The School of Feedback Guitar</a> in Austin, TX.  I started taking lessons there a few months ago, and I&#8217;m now utterly addicted to this infernal instrument.  It&#8217;s amazing that I can use these QWERTY-seized hands to cause a guitar to make sounds even close to what I&#8217;m trying to get it to make.  If you are considering guitar instruction in this city, even if you&#8217;ve never touched a guitar before (or any other instrument, for that matter), I don&#8217;t know that you could do better.  Dave Wirth is the instructor; stop by the school&#8217;s website to drop him a line.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/zombieprocess.wordpress.com/39/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/zombieprocess.wordpress.com/39/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=39&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2008/06/10/good-guitar-lessons-in-austin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>
	</item>
		<item>
		<title>Linux Kernel Hotpatching via ksplice</title>
		<link>http://zombieprocess.wordpress.com/2008/05/22/linux-kernel-hotpatching-via-ksplice/</link>
		<comments>http://zombieprocess.wordpress.com/2008/05/22/linux-kernel-hotpatching-via-ksplice/#comments</comments>
		<pubDate>Thu, 22 May 2008 23:11:00 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[RAS]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=43</guid>
		<description><![CDATA[There have been a few articles recently discussing ksplice, a mechanism for hotpatching a Linux kernel.  It is primarily geared towards applying security patches, which is a good thing:  it is expressly designed to address those patches that are most urgent to apply, and thus the most painful due to the sometimes short lead time.
The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=43&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>There have been a <a href="http://blogs.zdnet.com/open-source/?p=2333">few</a> <a href="http://tech.slashdot.org/article.pl?sid=08/04/24/1334234">articles</a> recently discussing <a href="http://web.mit.edu/ksplice/">ksplice</a>, a mechanism for hotpatching a Linux kernel.  It is primarily geared towards applying security patches, which is a good thing:  it is expressly designed to address those patches that are most urgent to apply, and thus the most painful due to the sometimes short lead time.</p>
<p>The <a href="http://web.mit.edu/ksplice/doc/ksplice.pdf">implementation of ksplice</a> is interesting, and not much like any hotpatching design I&#8217;ve seen.  The patched and unpatched kernels are built using the same compiler, and, effectively, the resulting binary files are diffed.  The difference gets packaged into a module which, when installed, will position jumps to excise the affected executable sections of the kernel.  All branches into the excised text also need to be redirected to the new text in the kernel module.</p>
<p>The main complaints that I have seen regarding kernel hotpatching are along the following lines:</p>
<ul>
<li><em>If you are using load balancing appropriately, hotpatching isn&#8217;t necessary.</em> (Also phrased as: <em>If there is a system that is so critical, why don&#8217;t you have two?</em>)  This sounds reasonable on the surface, but is actually somewhat nefarious.  The same argument could be made about any feature that improves system availability.  In return, I would ask: why do you need greater than 70% uptime?  After all, you can just keep adding load-balancing systems until you get the aggregate uptime that you want.  You are being hit twice with expenditure when you plan for downtime by adding systems rather than &#8220;adding nines&#8221;.  First, even if you aren&#8217;t missing any transactions, downtime inherently costs money because it results in administrative costs (i.e. someone needs to restart the system and possibly perform root cause analysis, filesystem checks, etc.).  Second, besides the cost of the other systems used to load balance, there is an ongoing expenditure for energy and cooling.</li>
</ul>
<ul>
<li><em>We have a lengthy QA process before deploying OS updates.</em> This is not really a technical issue, but more of a &#8220;certification&#8221; issue.  Presumably, the provider of the operating system distributes the hotfix, and has already vetted the fix to be applied concurrently.  Customers who have their own QA processes before deploying fixes can perform QA on hotpatches just as easily as they can on non-concurrent updates, so this is really a non-issue.</li>
</ul>
<p>The crux of the matter is simple.  If the process of applying security patches becomes so trivial that the machine doesn&#8217;t even need to wait until a service window to be fixed, more machines are likely to be patched.</p>
<p>On the topic of security patches, though: one of the issues with hotpatching is that you can technically never be certain that the replaced text is not being executed.  Most hotpatching implementations (including ksplice) resolve that problem by simply leaving the original code.  To some extent, though, this problem reduces the utility of hotpatching for patching security vulnerabilities, because one can never be certain that no CPU is executing text in the section that is supposed to have been excised.  This can really only be resolved by patch review; if there is a possibility that a CPU can be spending time in the old text for some time after the hotpatch is applied, then the system should undergo a reboot instead.  This determination should be the responsibility of the OS vendor, who can provide either a hotpatch or a standard old-fashioned fix.</p>
<p>On a side note, AIX recently introduced a kernel hotplugging implementation (refer to section 2.3.15 in <a href="http://www.redbooks.ibm.com/redpapers/pdfs/redp4367.pdf">this RedBook</a> for more information on the Concurrent AIX Update feature, first appearing in AIX 6.1.)</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/zombieprocess.wordpress.com/43/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/zombieprocess.wordpress.com/43/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=43&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2008/05/22/linux-kernel-hotpatching-via-ksplice/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>
	</item>
		<item>
		<title>AER: Advanced Error Reporting</title>
		<link>http://zombieprocess.wordpress.com/2008/04/15/aer-advanced-error-reporting/</link>
		<comments>http://zombieprocess.wordpress.com/2008/04/15/aer-advanced-error-reporting/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 02:14:07 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[RAS]]></category>
		<category><![CDATA[AER]]></category>
		<category><![CDATA[EEH]]></category>
		<category><![CDATA[PCI error recovery]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=19</guid>
		<description><![CDATA[AER is a capability provided by the PCI Express specification which allows for reporting of PCI errors and recovery from some of those errors.  AER support in Linux was implemented concurrently with EEH support; this post will give a high-level summary of AER and explain some differences between AER and EEH.  I previously discussed the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=19&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>AER is a capability provided by the PCI Express specification which allows for reporting of PCI errors and recovery from some of those errors.  AER support in Linux was implemented concurrently with EEH support; this post will give a high-level summary of AER and explain some differences between AER and EEH.  I <a href="http://zombieprocess.wordpress.com/2008/02/29/pci-error-recovery-hp-versus-linux-on-power/">previously discussed</a> the differences between EEH and PCI error handling on HP-UX.</p>
<p>AER errors are categorized as either correctable or uncorrectable.  A correctable error is recovered by the PCI Express protocol without the need for software intervention, and without any risk of data loss.  An uncorrectable error can be either fatal or non-fatal.  A non-fatal uncorrectable error results in an unreliable transaction, while a fatal uncorrectable error causes the link to become unreliable.</p>
<p>The AER driver in the Linux kernel drives the reporting of (and recovery from) these events.  In the case of a correctable event, the AER driver simply logs a message that the event was encountered and recovered by hardware.  Device drivers can be instrumented to register recovery routines when they are initialized.  Should a device experience an uncorrectable error, the AER driver will invoke the appropriate recovery routines in the device driver that controls the affected device.  These routines can be used to recover the link for a fatal error, for example.</p>
<p>So, how does this differ from <a href="http://zombieprocess.wordpress.com/2007/09/16/pci-error-recovery-in-linux/" target="_self">EEH on the Power architecture</a>?  First, on Power (System p and System i), EEH encapsulates AER, such that AER events are exposed to the operating system as EEH events.  AER and EEH both use the (above-described) PCI error recovery infrastructure in the Linux kernel, meaning that a device driver need only be instrumented once to obtain the advantages of both; the callbacks that are added within a device driver will be called in response to an EEH event if the driver is used on a Power system, and in response to an AER event if the driver is used on other systems.</p>
<p>The primary difference is that with EEH, the PCI slot is frozen in response to a detected error; the affected  device may not perform I/O until recovery is performed.  (I use the term &#8220;slot&#8221; loosely; that statement applies to onboard devices as well.)  There is no concept of an &#8220;unreliable transaction&#8221;, as the transaction does not occur, and no new transactions will occur until the slot is recovered.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/zombieprocess.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/zombieprocess.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=19&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2008/04/15/aer-advanced-error-reporting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>
	</item>
		<item>
		<title>Memory Recovery on Power</title>
		<link>http://zombieprocess.wordpress.com/2008/04/13/memory-recovery-on-power/</link>
		<comments>http://zombieprocess.wordpress.com/2008/04/13/memory-recovery-on-power/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 03:27:04 +0000</pubDate>
		<dc:creator>Mike Strosaker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[POWER]]></category>
		<category><![CDATA[RAS]]></category>

		<guid isPermaLink="false">http://zombieprocess.wordpress.com/?p=30</guid>
		<description><![CDATA[On Power systems, there is a hierarchy of protection methods to guard against progressively rarer (and more catastrophic) types of memory failures.  There are a lot of terms used to describe these memory protection methods, so I thought I&#8217;d write a post to explain the various methods and how they relate to one another.
ECC (error [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=30&subd=zombieprocess&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>On Power systems, there is a hierarchy of protection methods to guard against progressively rarer (and more catastrophic) types of memory failures.  There are a lot of terms used to describe these memory protection methods, so I thought I&#8217;d write a post to explain the various methods and how they relate to one another.</p>
<p><strong>ECC</strong> (error correcting code) provides the first level of memory protection; it is capable of correcting single-bit errors, and of detecting (but not correcting) double-bit errors.</p>
<p>While memory is idle, <strong>memory scrubbing</strong> corrects soft single-bit errors in the background.  These single-bit errors would be corrected by ECC anyways when the memory is read, but memory scrubbing vastly reduces the quantity of double-bit errors (which ECC cannot correct) by catching and fixing the errors earlier.</p>
<p>If a defined threshold of errors is reached on a single bit, that memory line is considered faulty and is dynamically reassigned to a spare memory chip on the module via <strong>bit steering</strong>.  If all the bits on this spare memory chip are already used up when the error threshold is reached, the system&#8217;s service processor will generate a deferred maintenance request to indicate that the memory module should be replaced in the next available scheduled maintenance window.</p>
<p>Bits from multiple memory chips (on the same module) are scattered across four separate ECC words, a design which is called (logically enough) <strong>bit scattering</strong>.  This allows the system to handle simultaneous errors from multiple arrays on the same memory chip, because there will be no more than one faulty bit per ECC word.  Recovery in this scenario is handled via a process called <strong>Chipkill</strong>.  Because memory has been written across multiple chips on the module (similar to striping on disk arrays), the memory controller is capable of reconstructing the data from the killed chip.</p>
<p>If memory scrubbing identifies a hard error (soft errors are recovered by rewriting the correct data back to the memory location), the OS is notified of the failure so that it can remove the associated page.  This is called <strong>dynamic page deallocation</strong>, is currently supported on AIX 5L and i5/OS, and will soon be supported in Linux.  Dynamic page deallocation protects against an alignment of failed cells in two separate memory modules.</p>
<p>A more catastrophic memory failure can result in the unavailability of an entire row or column in the array, or an entire chip.  <strong>Redundant bit-steering</strong> protects against an alignment of the failed memory cells with any future failures.</p>
<p>Interestingly, elevation has a substantial effect on the frequency of soft error rates.  An elevation of 5,000 feet results in a 3- to 5-fold increase in soft errors (in comparison to sea level).  An elevation of 30,000 feet results in a 100-fold increase, due to the substantial increase in cosmic radiation.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/zombieprocess.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/zombieprocess.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zombieprocess.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zombieprocess.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zombieprocess.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zombieprocess.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zombieprocess.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zombieprocess.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zombieprocess.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zombieprocess.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zombieprocess.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zombieprocess.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zombieprocess.wordpress.com&blog=1720575&post=30&subd=zombieprocess&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://zombieprocess.wordpress.com/2008/04/13/memory-recovery-on-power/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/45f87101a06d315bf2d99255f7f4864a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">strosaker</media:title>
		</media:content>
	</item>
	</channel>
</rss>