<?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/"
	>

<channel>
	<title>Observations from Uppsala &#187; fault injection</title>
	<atom:link href="http://jakob.engbloms.se/archives/tag/fault-injection/feed" rel="self" type="application/rss+xml" />
	<link>http://jakob.engbloms.se</link>
	<description>Computer Technology: Simulation, Virtualization, Virtual Platforms, Embedded, Multicore and Multiprocessing (by Jakob Engblom)</description>
	<lastBuildDate>Sun, 29 Jan 2012 19:45:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<image>
    <title>Observations from Uppsala</title>
    <url>http://jakob.engbloms.se/favicon.png</url>
    <link>http://jakob.engbloms.se</link>
    <width>32</width>
    <height>32</height>
    <description>Observations from Uppsala - http://jakob.engbloms.se</description>
    </image>		<item>
		<title>Wind River Blog: Fault Injection with Simics</title>
		<link>http://jakob.engbloms.se/archives/1600?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1600#comments</comments>
		<pubDate>Mon, 23 Jan 2012 20:57:43 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[testing]]></category>
		<category><![CDATA[Wind River Blog]]></category>
		<category><![CDATA[fault injection]]></category>
		<category><![CDATA[Simics]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1600</guid>
		<description><![CDATA[There is a new post at my Wind River blog, about how you actually do fault injection in Simics. This particular post is pretty detailed, showing the actual architecture of a fault injector in Simics, not just &#8220;yes you can do it&#8221;. It includes actual diagrams of system components and how you can insert fault [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1122" style="margin: 5px 10px;" title="Wind River Logo" src="http://jakob.engbloms.se/wp-content/uploads/2010/04/button-quicklink-blogs.png" alt="" width="46" height="46" />There is a <a href="http://blogs.windriver.com/tools/2012/01/making-a-faulty-serial-port.html">new post </a>at my Wind River blog, about how you actually do <a href="http://blogs.windriver.com/tools/2012/01/making-a-faulty-serial-port.html">fault injection in Simics</a>. This particular post is pretty detailed, showing the actual architecture of a fault injector in Simics, not just &#8220;yes you can do it&#8221;. It includes actual diagrams of system components and how you can insert fault injection into an existing system, so it is a bit more technical than most my Wind River blog posts that tend to be more conceptual.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1600"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1600" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1600" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1600/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fujitsu Server Fault Injection Robot</title>
		<link>http://jakob.engbloms.se/archives/1530?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1530#comments</comments>
		<pubDate>Sun, 11 Dec 2011 20:53:25 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[fault injection]]></category>
		<category><![CDATA[fujitsu]]></category>
		<category><![CDATA[Masafumi Matsuo]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[Yuichi Kurita]]></category>
		<category><![CDATA[Yuji Uchiyama]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1530</guid>
		<description><![CDATA[Fault Injection is a topic that has fascinated me for a long time. Not just the area of software-to-software fault injection, but more so how you inject faults into hardware using hardware (and how to conveniently approximate this using a simulator). I just stumbled on a short interesting note about such hardware-actuated fault injection in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2011/12/fujitsulogga.png"><img class="alignleft size-full wp-image-1531" style="margin: 10px 5px;" title="fujitsulogga" src="http://jakob.engbloms.se/wp-content/uploads/2011/12/fujitsulogga.png" alt="" width="57" height="47" /></a>Fault Injection is a topic that has fascinated me for a long time. Not just the area of <a href="http://en.wikipedia.org/wiki/Fault_injection">software-to-software fault injection</a>, but more so how you inject faults into hardware using hardware (and how to conveniently approximate this using a <a href="http://blogs.windriver.com/engblom/2010/10/the-virtual-basil-fawlty.html">simulator</a>). I just stumbled on a short interesting note about such hardware-actuated fault injection in a Fujitsu article.</p>
<p><span id="more-1530"></span>The <a href="http://www.fujitsu.com/global/news/publications/periodicals/fstj/">Fujitsu Scientific and Technical Journal </a>is the Fujitsu equivalent of IBM&#8217;s Journal of Research and Development. Thankfully, the FSTJ is still free while IBM erected a paywall around their articles. <a href="http://www.fujitsu.com/global/news/publications/periodicals/fstj/archives/vol47-2.html">Number 2 of 2011 </a>had the theme of servers, and there is an article about <a href="http://www.fujitsu.com/downloads/MAG/vol47-2/paper07.pdf">Quality Assurance for  Stable Server Operation </a>by Masafumi Matsuo, Yuji Uchiyama, and Yuichi Kurita.</p>
<p>The article describes the process of ensuring that the final servers that are shipped to customers (from what seems to be the Sparc-based line of Fujitsu computers, even though it might actually apply equally to their mainframes and x86-based servers) are as stable as possible. Apart from designing things right, this also requires testing the fault handling and recovery operations.</p>
<p>I found it noteworthy that they do a lot of configuration testing, where various hardware and software configurations are played off against each other. In this way, corner cases are explored and coverage of the actual configurations that customers will be using becomes more likely (it is always dangerous to only test on one or a few configurations). They push memory system and processor loads to very high levels to ensure continued operation even in extreme cases, and also try to push the actual chips to make sure they will operate reliably in a wide range of environmental conditions. Indeed, a large focus is placed on pure physical reliability, as that is the basis for system reliability.</p>
<p>The best part, however, is on page four of the article, where they show the physical fault injection robot that is applied to the chips mounted on boards. This robot  shorts out individual pins on chips, clamping them to zero volts. It goes over all pins, and the test system checks what happens to the system in each case. Some kind of exhaustive testing going on here.</p>
<p>Neat. I have heard other stories of physical fault injection, including complex mechanisms like passing computer boards through irradiation chambers all the way to brutally simple tasks like putting an axe into a board to break it or pulling boards out of racks to simulate a sudden catastrophic failure. I would like to see more of just how these things are done in the real world. I suspect there are quite a few interesting robotics setups out there that do fault injection.</p>
<p>In any case, the article offered an interesting glimpse of many of the techniques used to make computer systems robust and reliable. Recommended.</p>
<p>It ends by noting that deeply consolidated SoC designs and aggressive dynamic power management are challenging from a testing and observation perspective, as well as creating more single points of failure. If a single system on chip fails, that system is all gone&#8230;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1530"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1530" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1530" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1530/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wind River Blog: &#8220;Virtual Basil Fawlty&#8221;</title>
		<link>http://jakob.engbloms.se/archives/1292?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1292#comments</comments>
		<pubDate>Wed, 20 Oct 2010 07:59:00 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[virtual platforms]]></category>
		<category><![CDATA[Wind River Blog]]></category>
		<category><![CDATA[Basil Fawlty]]></category>
		<category><![CDATA[fault injection]]></category>
		<category><![CDATA[Simics]]></category>
		<category><![CDATA[Wind River]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1292</guid>
		<description><![CDATA[Last week, I posted a discussion about fault injection in virtual systems, using Basil Fawlty as the perfect example of a fault injection agent. Tweet]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/10/184829-1_m1.jpg"><img class="alignleft size-full wp-image-1294" style="margin: 10px 5px;" title="John Cleese as Basil Fawlty" src="http://jakob.engbloms.se/wp-content/uploads/2010/10/184829-1_m1.jpg" alt="" width="100" height="121" /></a>Last week, I posted a <a href="http://blogs.windriver.com/tools/2010/10/the-virtual-basil-fawlty.html">discussion about fault injection in virtual systems</a>, using Basil Fawlty as the perfect example of a fault injection agent.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1292"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1292" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1292" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1292/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freescale Online Fault-Tolerance &#8220;Demo&#8221;</title>
		<link>http://jakob.engbloms.se/archives/1011?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1011#comments</comments>
		<pubDate>Wed, 18 Nov 2009 12:21:58 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[fault injection]]></category>
		<category><![CDATA[fault tolerance]]></category>
		<category><![CDATA[freescale]]></category>
		<category><![CDATA[MPC564XL]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1011</guid>
		<description><![CDATA[I just spotted a fun little application on Freescale&#8217;s homepage: an interactive demo of the fault tolerance functions of the MPC564XL dual-core microcontroller. The demo is really just an interactive presentation, it runs no code or anything, but it is still a very nice way to educate about how the chip deals with errors. Tweet]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2009/08/freescale-logo-icon.png"><img class="alignleft size-full wp-image-878" style="margin: 10px 5px;" title="freescale-logo-icon" src="http://jakob.engbloms.se/wp-content/uploads/2009/08/freescale-logo-icon.png" alt="freescale-logo-icon" width="80" height="80" /></a>I just spotted a fun little application on Freescale&#8217;s homepage: an <a href="http://www.freescale.com/files/graphic/flash/training/32bit/MPC564XL_Safety_Demo.html">interactive demo of the fault tolerance functions of the MPC564XL dual-core </a>microcontroller.</p>
<p><span id="more-1011"></span>The demo is really just an interactive presentation, it runs no code or anything, but it is still a very nice way to educate about how the chip deals with errors.</p>
<p><a href="http://jakob.engbloms.se/wp-content/uploads/2009/11/FSL-fault-injection-demo-app.png"><img class="aligncenter size-full wp-image-1012" title="FSL fault injection demo app" src="http://jakob.engbloms.se/wp-content/uploads/2009/11/FSL-fault-injection-demo-app.png" alt="FSL fault injection demo app" width="482" height="339" /></a></p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1011"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1011" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1011" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1011/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pulling the Virtual Ethernet Plug</title>
		<link>http://jakob.engbloms.se/archives/248?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/248#comments</comments>
		<pubDate>Wed, 27 Aug 2008 09:25:00 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer simulation technology]]></category>
		<category><![CDATA[virtual machines]]></category>
		<category><![CDATA[virtual platforms]]></category>
		<category><![CDATA[ACM Queue]]></category>
		<category><![CDATA[bryan cantrill]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[fault injection]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=248</guid>
		<description><![CDATA[I just read the panel interview at the start of the latest issue (Number 4, 2008) of ACM Queue. Here, you have Bryan Cantrill of Sun (the man behind dTrace) bemoan the difficulty of testing faults. In particular: Part of the reason I&#8217;m interested in virtualization is as a development methodology. It has not delivered [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-249" style="margin: 5px 10px;" title="acm-queue-logo" src="http://jakob.engbloms.se/wp-content/uploads/2008/08/acm-queue-logo.gif" alt="" width="87" height="51" />I just read the <a href="http://mags.acm.org/queue/20080708/?pg=10&amp;pm=2">panel interview </a>at the start of <a href="http://mags.acm.org/queue/20080708/">the latest issue (Number 4, 2008) of ACM Queue</a>. Here, you have <a href="http://mags.acm.org/queue/20080708/?pg=14&amp;pm=2">Bryan Cantrill of Sun </a>(the man behind dTrace) bemoan the difficulty of testing faults. In particular:</p>
<blockquote><p>Part of the reason I&#8217;m interested in virtualization is as a development methodology. It has not delivered on this, but one of the things that I ask is can I use virtualization to automate someone pulling the Ethernet cable out of the jack? I can get a lot closer to simulating it if you let me create a toy virtual machine than I can running on the live machine.</p></blockquote>
<p>Well, <a href="http://www.virtutech.com/solutions/virtual_platform">this already exists</a>. It is a common feature to any virtual platform that is not a datacenter-oriented runtime engine like VmWare, Xen, LPAR, and its ilk. Doing fault injection is a primary use case for virtual platforms, especially for larger servers and systems featuring redundancy and fault tolerance.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/248"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/248" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/248" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/248/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

