<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11523106</id><updated>2011-11-27T17:52:29.697-06:00</updated><category term='Venti'/><category term='Plan 9'/><category term='uem'/><category term='ibm'/><category term='HARE'/><category term='Linux 9P'/><category term='brasil'/><category term='Inferno'/><title type='text'>Grave Robbers From Outer Space</title><subtitle type='html'>This blog is now my public notebook.  In it you'll find rough ideas, designs, and implementation notes as I work through various projects that have been publicly funded or done in my free time.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>83</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11523106.post-8980401018503336410</id><published>2011-02-07T18:54:00.004-06:00</published><updated>2011-02-07T19:27:44.109-06:00</updated><title type='text'>Standing Desk</title><content type='html'>&lt;div&gt;Since building standing desks seem to be all the rage, I decided to put one together for work.  I used an Ikea &lt;a href="http://www.ikea.com/us/en/catalog/products/60111123"&gt;Fredrik&lt;/a&gt; as the base, but only used the two shelf pieces and discarded the main desk piece as I wanted it to fit in a corner.  The Fredrik has multiple slots along the side allowing you to position the shelves wherever you'd like.  One thing I would caution is decide once where you want the stuff as pulling it apart and reassembling is a bit of a chore and you have to built it from the bottom up.  It's got quite a nice solution for cable routing and hiding power strips.  I also used the &lt;a href="http://www.ikea.com/us/en/catalog/products/30138317"&gt;Fredrik Accessory Pack&lt;/a&gt; mostly so I could add cup holders to the desk, but the hooks came in quite handy for wire routing and for hanging my backpack.  The official instructions actually have variations which seem appropriate for standing desks.  One thing I did notice with the way mine is configured is it a bit shaky if I type too hard.  The vibration isn't pronounced, but its enough to slightly shake the LCD on my laptop.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I attached a &lt;a href="http://solutions.3m.com/wps/portal/3M/en_US/ergonomics/home/products/keyboardtrays/AKT151LE/"&gt;3M keyboard tray&lt;/a&gt; to the top shelf, but had to use some nylon spacers to attach it since there is a metal support beam running down the center of the shelf.  I used two cheap &lt;a href="http://www.amazon.com/gp/product/B003L171KW/ref=oss_product"&gt;LCD arms&lt;/a&gt; for the extra monitors -- although these tend to tilt slightly with the way I have them mounted.  They also need some wood blocks added under the shelf so they have the right thickness to attach to.  To top it off, I bought a &lt;a href="http://www.walmart.com/ip/Black-And-Chrome-Bar-Stool-Height-Drafting-Stool-With-Tractor-Seat/10996244"&gt;cheap drafting chair&lt;/a&gt; for days when I feel a bit tired of standing -- but I went for one that looked uncomfortable so that I wouldn't be tempted to sit all that often.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've been using it for a couple of weeks now and seem to be able to stand most of the day while being productive.&lt;/div&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_nbtXd3baZsQ/TVCUXGr4zVI/AAAAAAAAAgc/FCD4X_hU6DY/s1600/DSC_2124.JPG"&gt;&lt;img src="http://3.bp.blogspot.com/_nbtXd3baZsQ/TVCUXGr4zVI/AAAAAAAAAgc/FCD4X_hU6DY/s320/DSC_2124.JPG" border="0" alt="" style="text-align: center;clear: both; float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_nbtXd3baZsQ/TVCUXael82I/AAAAAAAAAgk/a8kHGL2a7-4/s1600/DSC_2125.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_nbtXd3baZsQ/TVCUXael82I/AAAAAAAAAgk/a8kHGL2a7-4/s320/DSC_2125.jpg" border="0" alt="" style="text-align: center;clear: both; float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_nbtXd3baZsQ/TVCUXgx9k-I/AAAAAAAAAgs/5f1uD46Hp78/s1600/DSC_2126.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_nbtXd3baZsQ/TVCUXgx9k-I/AAAAAAAAAgs/5f1uD46Hp78/s320/DSC_2126.jpg" border="0" alt="" style="text-align: center;clear: both; float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_nbtXd3baZsQ/TVCUXyjG_EI/AAAAAAAAAg0/E07oGFHPTow/s1600/DSC_2127.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_nbtXd3baZsQ/TVCUXyjG_EI/AAAAAAAAAg0/E07oGFHPTow/s320/DSC_2127.JPG" border="0" alt="" style="text-align: center;clear: both; float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; " /&gt;&lt;/a&gt; &lt;div style="text-align: center;clear: both; "&gt;&lt;a href="http://picasa.google.com/blogger/" target="ext"&gt;&lt;img src="http://photos1.blogger.com/pbp.gif" alt="Posted by Picasa" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;" align="middle" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-8980401018503336410?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/8980401018503336410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=8980401018503336410' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8980401018503336410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8980401018503336410'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2011/02/standing-desk.html' title='Standing Desk'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_nbtXd3baZsQ/TVCUXGr4zVI/AAAAAAAAAgc/FCD4X_hU6DY/s72-c/DSC_2124.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-5324147161075565937</id><published>2011-02-01T14:27:00.001-06:00</published><updated>2011-02-01T14:43:32.968-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ibm'/><title type='text'>IBM Centennial Film: 100 X 100 - A century of achievements that have cha...</title><content type='html'>&lt;iframe width="480" height="295" src="http://www.youtube.com/embed/39jtNUGgmd4?fs=1" frameborder="0" allowFullScreen=""&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-5324147161075565937?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/5324147161075565937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=5324147161075565937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5324147161075565937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5324147161075565937'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2011/02/ibm-centennial-film-100-x-100-century.html' title='IBM Centennial Film: 100 X 100 - A century of achievements that have cha...'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/39jtNUGgmd4/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-9059879386281677998</id><published>2010-10-05T12:19:00.005-05:00</published><updated>2010-10-05T12:28:07.215-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><category scheme='http://www.blogger.com/atom/ns#' term='HARE'/><title type='text'>Multi-pipes</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nbtXd3baZsQ/TKtfXderJeI/AAAAAAAAAfU/NN11KaJ1MLs/s1600/multipipe-logo.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 160px; height: 81px;" src="http://2.bp.blogspot.com/_nbtXd3baZsQ/TKtfXderJeI/AAAAAAAAAfU/NN11KaJ1MLs/s320/multipipe-logo.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5524614224554960354" /&gt;&lt;/a&gt;&lt;div&gt;Here's &lt;a href="http://goo.gl/AcVw"&gt;our poster&lt;/a&gt; we presented at OSDI last night on multi-pipes. Will be giving a short talk on them at IWP9 which you should be able to view next week &lt;a href="http://www.livestream.com/iwp9"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-9059879386281677998?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://goo.gl/5eFB' title='Multi-pipes'/><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/9059879386281677998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=9059879386281677998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9059879386281677998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9059879386281677998'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2010/10/multi-pipes.html' title='Multi-pipes'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_nbtXd3baZsQ/TKtfXderJeI/AAAAAAAAAfU/NN11KaJ1MLs/s72-c/multipipe-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-554554999188143948</id><published>2010-08-27T16:24:00.002-05:00</published><updated>2010-08-27T16:51:28.150-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>4P: a four-protocol API for synthetic filesystems</title><content type='html'>I've been implementing a lot of synthetic filesystems lately, and it struck me that (at least in the Plan 9 world, but it also seems to hold true for many Linux synthetic file systems) there is a lot of boilerplate gunk in synthetic file systems which is largely unnecessary -- particularly for control interface synthetic file systems (as opposed to normal disk access file systems or some sort of data-exchange file system).  For this I'm talking more about interfaces like /proc.&lt;br /&gt;&lt;br /&gt;In any case, it seems to me what things largely boil down two is two basic operations, get and put, with perhaps two other protocol elements for flushing and outstanding request and reporting errors.  By and large this is the same conclusion that the Octopus protocol [&lt;a href="http://lsub.org/ls/export/op.pdf"&gt;1&lt;/a&gt;] folks came to (although they have more complexity and operations than I think are necessary), and its also the fundamental observation underlying web-style RESTful transactions.&lt;br /&gt;&lt;br /&gt;The advantage of a minimal interface for synthetic control file systems is that it should allow you to keep the server implementation extremely simple and it will minimize the over-the-wire transactions necessary to complete a given operation (which for many control interfaces is even more critical due to the synchronous nature of walk, open, read, close or walk, open, write, close operations -- particularly for large latency network links).  This last point was, I believe the primary motivation for the Octopus folks.&lt;br /&gt;&lt;br /&gt;So, punting on security for the moment, the basic principle is to have the 4 protocol operations (Get, Put, Flush, Error -- hence 4P).  They follow the same basic protocol convention of 9P with a basic header of size[4] op[1] tag[2].  We ditch fids and the state associated with them for just sending the full path on every operation -- the basic observation being that in most synthetic control file systems we tend to open, read/write, and then close the file -- so there is no reason to have the file held open, and path resolution is simple enough to obviate the need for fid processing/tracking.  The basic operations are similarly simplified:&lt;br /&gt;&lt;br /&gt;size[4] TPut tag[2] flag[s] path[s] meta[s] data[s]&lt;br /&gt;size[4] RPut tag[2] &lt;br /&gt;&lt;br /&gt;Put ends up assuming the job of creation as well as writing data.  RESTful semantics are assumed, so individual operations are treated as atomic and whole-file operations -- there is no partial update in the protocol, so no offsets.  meta[s] is actually a subset of the typical stat style meta-data, as control systems typically only have user, group, and perm style metadata.  flag[s] allows some extended operations and semantic features allow exclusive creation (don't create if it's already there), blocking (to wait for it to not be there before putting data we have), append operation (add to the end instead of just replacing), as well as specification of meta-data only put operations (which might change owner but not data for instance).  Using a string for the flags allows file-specific flags (which might lead to nightmares, but I'm leaving it in for now), and partial support of flags is of course allowed (returning an error on an unsupported flag).&lt;br /&gt;&lt;br /&gt;size[4] TGet tag[2] flag[s] path[s] nmsg[4] count[4]&lt;br /&gt;size[4] RGet tag[2] meta[s] data[s] more[1]&lt;br /&gt;&lt;br /&gt;Get has a similar simplified nature, although it does allow specification of partial reads (although always from the top of the&lt;br /&gt;file) by using count[4].  Since gets can also be streaming (multiple reply messages, get allows you to specify the maximum&lt;br /&gt;number of reply messages you wish to receive relating to this transaction) - the response more field lets the client know when there are more packets coming related to this transaction on the same tag.  Get also accommodates flags allowing the specification of advanced functionality including removing the file after getting (linda style), truncating the file after getting, waiting for an update to be put into the file before processing a get (server relative time), only retrieving data, only retrieving metadata, and specification of streaming (allow up to nmesg[4] return messages on updates to the file).&lt;br /&gt;&lt;br /&gt;From a client perspective we could build these as either a 9P gateway or a VFS file system (as well as building a client library for tighter binding with an application or application(s)).  From a server perspective, we could build servers in a similar fashion to the golang http servers, allowing handlers to be registered for elements, using regular expressions for allowing parameters to be encoded into paths.  To enhance modular construction, we could allow for hierarchical representation of the handler tables which should also make search more efficient.&lt;br /&gt;&lt;br /&gt;Using such a system it would be possible to construct a hello world file server in a few lines of code, with more complicated dynamic control file systems able to be constructed with not too much additional effort since the system takes care of managing the path hierarchy for you.  Its not intended for such a system to be used for typical storage file systems or anyplace where large amounts of data need to be processed or accessed with varying degrees of granularity -- but for command/control file systems this should provide a more optimal solution both in terms of time to develop as well as network latency and efficiency.&lt;br /&gt;&lt;br /&gt;A big motivation here as well as this takes some of the state out of the 9P protocol, which might allow more complicated distributed dynamic command/control frameworks.  I imagine this might be particularly useful for xcpu style distributed execution environments -- which is where we intend to play with the approach.&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://lsub.org/ls/export/op.pdf"&gt;Octopus Protocol&lt;/a&gt;: http://lsub.org/ls/export/op.pdf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-554554999188143948?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/554554999188143948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=554554999188143948' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/554554999188143948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/554554999188143948'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2010/08/4p-four-protocol-api-for-synthetic.html' title='4P: a four-protocol API for synthetic filesystems'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-1141640513512359502</id><published>2010-01-27T21:34:00.002-06:00</published><updated>2010-01-27T21:35:26.405-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>Linux 9P Trace and Walkthrough</title><content type='html'>&lt;div style='width:425px;text-align:left'&gt;&lt;object style='margin:0px' width='425' height='355'&gt;&lt;param name='movie' value='http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=9pvirtfscode-12646254287829-phpapp02&amp;stripped_title=9p-virtfs-code-walkthrough' /&gt;&lt;param name='allowFullScreen' value='true'/&gt;&lt;param name='allowScriptAccess' value='always'/&gt;&lt;embed src='http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=9pvirtfscode-12646254287829-phpapp02&amp;stripped_title=9p-virtfs-code-walkthrough' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='425' height='355'&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately video didn't come out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-1141640513512359502?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/1141640513512359502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=1141640513512359502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1141640513512359502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1141640513512359502'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2010/01/linux-9p-trace-and-walkthrough.html' title='Linux 9P Trace and Walkthrough'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-3730958422960809532</id><published>2010-01-27T15:00:00.005-06:00</published><updated>2010-06-02T21:20:58.158-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>9P Overview Slides</title><content type='html'>&lt;div style='width:425px;text-align:left'&gt;&lt;object style='margin:0px' width='425' height='355'&gt;&lt;param name='movie' value='http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=9pvirtfsoverview-12646254344022-phpapp01&amp;stripped_title=9p-overview' /&gt;&lt;param name='allowFullScreen' value='true'/&gt;&lt;param name='allowScriptAccess' value='always'/&gt;&lt;embed src='http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=9pvirtfsoverview-12646254344022-phpapp01&amp;stripped_title=9p-overview' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='425' height='355'&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.arl-external.com/9p/9p-overview.m4v"&gt;MP4 Video Link&lt;/a&gt; or Livestream below:&lt;br /&gt;&lt;br /&gt;&lt;object width="340" height="340" id="preview-player1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&gt;&lt;param name="movie" value="http://cdn.livestream.com/grid/LSPlayer.swf?channel=graverobbers&amp;amp;clip=pla_5da534c4-5d1f-460e-adda-836aee4b514e&amp;amp;autoPlay=false"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed id="preview-player" src="http://cdn.livestream.com/grid/LSPlayer.swf?channel=graverobbers&amp;amp;clip=pla_5da534c4-5d1f-460e-adda-836aee4b514e&amp;amp;autoPlay=false" width="340" height="340" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px;padding-top:10px;text-align:center;width:340px"&gt;Watch &lt;a href="http://www.livestream.com/?utm_source=lsplayer&amp;utm_medium=embed&amp;utm_campaign=footerlinks" title="live streaming video"&gt;live streaming video&lt;/a&gt; from &lt;a href="http://www.livestream.com/graverobbers?utm_source=lsplayer&amp;utm_medium=embed&amp;utm_campaign=footerlinks" title="Watch graverobbers at livestream.com"&gt;graverobbers&lt;/a&gt; at livestream.com&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-3730958422960809532?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/3730958422960809532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=3730958422960809532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3730958422960809532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3730958422960809532'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2010/01/9p-overview-slides.html' title='9P Overview Slides'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-5305412785412384796</id><published>2009-10-23T09:28:00.000-05:00</published><updated>2009-10-23T09:28:41.040-05:00</updated><title type='text'>International Workshop on Plan9 - live streaming video powered by Livestream</title><content type='html'>&lt;a href="http://www.livestream.com/iwp9"&gt;International Workshop on Plan9 - live streaming video powered by Livestream&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-5305412785412384796?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.livestream.com/iwp9' title='International Workshop on Plan9 - live streaming video powered by Livestream'/><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/5305412785412384796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=5305412785412384796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5305412785412384796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5305412785412384796'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/10/international-workshop-on-plan9-live.html' title='International Workshop on Plan9 - live streaming video powered by Livestream'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2639187717990981296</id><published>2009-10-06T09:21:00.003-05:00</published><updated>2009-10-06T09:25:48.156-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Grande</title><content type='html'>As a quick experiment the other day, I wrote a file-system back-end for Venti which serves the Venti protocol, but instead of using Indexes/Arenas/etc. for the back-end, it creates a hierarchical directory structure similar to Git with a file per score.  This was done in the context of some other experiments (which I will post about later when they are complete), but I figured this may useful in of itself.  The code is currently available in my vdiskfs branch of Plan 9 Ports on bitbucket (&lt;a href="http://bitbucket.org/ericvh/vdiskfs/src/tip/src/cmd/venti/grande.c"&gt;http://bitbucket.org/ericvh/vdiskfs/src/tip/src/cmd/venti/grande.c&lt;/a&gt;).  It is very much a prototype, so not very robust -- but feel free to use it or build on it if you think it is useful to you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2639187717990981296?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://bitbucket.org/ericvh/vdiskfs/src/tip/src/cmd/venti/grande.c' title='Grande'/><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2639187717990981296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2639187717990981296' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2639187717990981296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2639187717990981296'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/10/grande.html' title='Grande'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-7996739031479629809</id><published>2009-08-04T10:53:00.002-05:00</published><updated>2009-08-04T19:04:06.409-05:00</updated><title type='text'>acme-js</title><content type='html'>I wonder how hard it would be to craft a web 2.0 ACME -- the basic widget sets are all there more or less, the new portal examples from the prototype JS libraries would be most of the work, just need handles to allow stretching the portals and a bit more interactivity in the title bars.  Chording may be a bit of an issue, but according to the W3C spec I should be able to detect events for all three buttons.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course, there is more to it than just the interface.  The back-end would be a file system providing both the traditional ACME synthetic file server and a separate directory (or perhaps view) with the necessary UI components (as JS and whatever).  I was thinking a third view might be necessary for interaction with other users, but perhaps that could all be managed from the system view.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-7996739031479629809?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/7996739031479629809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=7996739031479629809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7996739031479629809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7996739031479629809'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/08/acme-js.html' title='acme-js'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-4132111887113716415</id><published>2009-07-16T09:27:00.001-05:00</published><updated>2009-07-16T09:27:21.750-05:00</updated><title type='text'>stats</title><content type='html'>For profiling and regression tests it would be nice to log snapshots of certain system performance counters (/dev/sysstat, /dev/swap, etc.) before and after the kernel of the benchmark (which may not be the entire application). It would also be nice to be able to enable periodic logging (although that would interfere with many benchmarks -- particularly OS noise). Periodic logging interference could be mitigated by placing the log process on a different core than the application kernel core (when possible).&lt;br /&gt;&lt;br /&gt;I think the general idea would be to have a file in the namespace which can be written to to either snapshot the stats or start periodic logging on a particular core. The file could then be read to get the snapshot data in some convienient format. If this was all done on a single open that may even allow for several simultaneous users -- although the specific scenario that we are using probably wouldn't require that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-4132111887113716415?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/4132111887113716415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=4132111887113716415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4132111887113716415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4132111887113716415'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/07/stats.html' title='stats'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-9205317904114899908</id><published>2009-07-08T11:15:00.003-05:00</published><updated>2009-07-08T11:17:01.034-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HARE'/><title type='text'>Tree and Torus Woes</title><content type='html'>Some of my modifications to cpu (specifically chdiring after backmounting the initiator to allow for a poor-man's desktop extension model) seems to have tickled a big bug on the CPU nodes -- namely the torus starts getting errors even though the torus isn't being used (by anything). Could be a sign of major memory corruption, but I doubt the cpu application itself could be the cause. More likely the backmount which becomes the CWD of the compute node starts issuing lots of 9P requests over the tree and things fall down. Of course it could just be a slightly different binary tickling the system in a slightly different way and producing a corner-case error condition that scrambles memory. At least it seems to be reproducable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-9205317904114899908?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/9205317904114899908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=9205317904114899908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9205317904114899908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9205317904114899908'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/07/tree-and-torus-woes.html' title='Tree and Torus Woes'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-1729678134621633497</id><published>2009-07-08T11:12:00.003-05:00</published><updated>2009-07-08T11:16:47.934-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HARE'/><title type='text'>CPU, Desktop Extensions, and Caches</title><content type='html'>Okay - having the default be mounting our home directory seems to be a really bad idea. ftq- which writes one line at a time takes f-o-r-e-v-e-r to complete just writing out the data. We need a custom cfs that does aggressive cache and also does some write-back caching as well for this to even remotely work.&lt;br /&gt;&lt;br /&gt;Of course that will fly in the face of doing this from all cpu nodes to a single file.&lt;br /&gt;&lt;br /&gt;This turns out to be a nice driver, doesn't it? So what we want is a single cache running on the IO node and the cpu nodes mounting that. That could be a matter of switching to the chaining cpu method (of course that would require more modifications to cpu.c).&lt;br /&gt;&lt;br /&gt;The other thing I've been toying with is the idea of being able to pass a setup script or namespace script to cpu in the same manner than xcpu allows. This would allow us to establish a default namespace, including mounting relevant file servers and/or setting up cache servers.&lt;br /&gt;&lt;br /&gt;The other side of this is that this work will all be completely obviated once we have the execution model in place -- but it is useful to have this naive approach as a point of comparison to justify the execution model.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-1729678134621633497?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/1729678134621633497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=1729678134621633497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1729678134621633497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1729678134621633497'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/07/cpu-desktop-extensions-and-caches.html' title='CPU, Desktop Extensions, and Caches'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-5573595909527351867</id><published>2009-06-29T15:16:00.004-05:00</published><updated>2009-06-29T15:23:10.673-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><category scheme='http://www.blogger.com/atom/ns#' term='HARE'/><title type='text'>HARE FastOS Workshop Talk Video Available</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nbtXd3baZsQ/SkkiS_LJsFI/AAAAAAAAAQE/Gz8LYS4AcHU/s1600-h/fast09-03.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 160px; height: 160px;" src="http://4.bp.blogspot.com/_nbtXd3baZsQ/SkkiS_LJsFI/AAAAAAAAAQE/Gz8LYS4AcHU/s320/fast09-03.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5352847341697740882" /&gt;&lt;/a&gt;&lt;div&gt;The video podcast of my talk on HARE for the FastOS June 2009 Workshop is now available for &lt;a href="http://files.getdropbox.com/u/1355632/Hollistic%20Aggregate%20Resource%20Environment.m4v"&gt;download &lt;/a&gt;or from &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=320529228"&gt;iTunes&lt;/a&gt;.  Slides are available separately &lt;a href="http://sites.google.com/site/fastos2/fastos-workshop-slides/fastos-workshop-materials/fastos09-hare.pdf?attredirects=0"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-5573595909527351867?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/5573595909527351867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=5573595909527351867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5573595909527351867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5573595909527351867'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/06/hare-fastos-workshop-talk-video.html' title='HARE FastOS Workshop Talk Video Available'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_nbtXd3baZsQ/SkkiS_LJsFI/AAAAAAAAAQE/Gz8LYS4AcHU/s72-c/fast09-03.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2216461356453905018</id><published>2009-06-25T16:35:00.002-05:00</published><updated>2009-06-25T16:37:21.098-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HARE'/><title type='text'>On regressions and progress</title><content type='html'>&lt;div&gt;Initial take will just use the single threaded ftq for regression, we still need a regression script to organize results, but this should be relatively straightforward since all the version info is availabel in the #P device. Not clear how we get md5sum of the binary unfortunately, we can make certain assumptions based on surveyor.  To keep things simple, we'll start with hardcoded version and then generalize.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;bugs in lat_ctx may be timing related, potentially complicated by the virtual machine.  Need to get criswell rebooted and try out there to make sure its not something stupid tripping things up.  Be good to have ftq and 9bench numbers for a typical x86 machine to calibrate against anyways.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nope FP errors happen on criswell as well, something is buggered in the timing code when the measurements are too small.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Okay, not a whole lot of progress today.  Futz'd a bit with the lmbench code to see what works and what doesn't.  It will be a nice set of numbers at the end of the day and we have the x86 code to compare against.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since criswell is running the same hardware as the box next to it I should be able to get numbers for Plan 9 vesus Linux easily enough and we can use these as baselines for the normal Plan 9 regressions.  We'll need to get the kittyhawk and/or zeptos code base running and try either lmbench or our modified versions there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course, the thing I was suppose to be doing today was getting a top-level script together which runs on the desktop and initiates data collection (initially only of ftq) and stores results in a hierarchy based on kernel configuration (as read by '#P'/version and md5sum 9bgp.elf). I suppose I may still be able to pull those basics together this evening.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2216461356453905018?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2216461356453905018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2216461356453905018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2216461356453905018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2216461356453905018'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/06/on-regressions-and-progress.html' title='On regressions and progress'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-422198502492403859</id><published>2009-06-22T15:56:00.003-05:00</published><updated>2009-06-22T16:05:00.849-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Regressions</title><content type='html'>Its become clear in the process of the HARE work that we really need a regular regression suite to verify functionality as well as track performance over the course of development. It strikes me that whatever we come up with may be generally useful for the Plan 9 kernel since it seems we don't really have any quantitative tracking of kernel performance.&lt;br /&gt;&lt;br /&gt;Seems like one of the first things we need is better information about the kernel encoded in the binary. We've got the date in KERNDATE of when it was build, but little information about where and when it was built (and also, by who). &amp;amp;nbsp;This seems increasingly important in an environment where we aren't just building out of a single directory. For my purposes, some sort of tree identifier such as a venti score or a git HEAD would be useful to encode to track exactly which version of the kernel we are testing. Eventually it seems like it would be a good idea to have a unique id for the build tools and root file system as well.&lt;br /&gt;&lt;br /&gt;Regressions will be stored in a temporal directory hierarcy (similar to yesterday), then a directory with the $OBJTYPE filled a directory labeled by the md5sum of the kernel binary at the leaf. This directory will contain an info file with extracted meta-data about the kernel and a numbered subdirectory per run collected. Each of the numbered subdirectories will contain a console output file, and a test output file per test (named by the test). There will also be an info file with any relevant information about the run (in the case of BG/P this will be the personality and bump-id).&lt;br /&gt;&lt;br /&gt;The regression binaries will be included with the kernel as part of the initial ramdisk to make things simple at first.  The script will be modular and run from the front-end node, requiring nodes be able to boot to the point where one could cpu into them.&lt;br /&gt;This will also require us to be able to determine the assigned IP address of the IO Node(s) automatically.  It makes sense to go for 128-node configurations with 2 IO nodes so we can test the Ethernet bandwidth between IO nodes and not just to the front end.&lt;br /&gt;&lt;br /&gt;The idea right now is to have a set of 5 initial performance regressions covering computation, sparse memory access, OS interference, file system access, and network access using a typical 4-way SMP configuration.  Eventually we may broaden these tests to cover a range of configurations including uniprocessor and large-page.  The general idea is to have a short regression which runs around a minute or so for simple sanity check of the system at boot-up and have a longer regression which runs on a daily schedule and does a more comprehensive evaluation.&lt;br /&gt;&lt;br /&gt;For the longer test one option might be to measure the time it takes to build the entire system from scratch (kernel build or kernel+applications) on every Blue Gene node hitting a single file server for source files and storing results to a ramdisk.  A variation on this would be to develop a parallel build system in which all 128 nodes collaborated on compiling the system.&lt;br /&gt;&lt;br /&gt;Another idea I am considering is the use of linuxemu to run Linux benchmarks under Plan 9 to both measure the kernel and the emulation infrastructure.  Candidates would include lmbench, postmark, dbench, and netperf.&lt;br /&gt;&lt;br /&gt;The initial focus is on gathering results, but the idea is one we have started collecting data to allow web-based visualization of the results tracked over time so we can monitor the general health and performance of the system,  As use cases materialize for testing we'll add them to the matrix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-422198502492403859?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/422198502492403859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=422198502492403859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/422198502492403859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/422198502492403859'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/06/regressions.html' title='Regressions'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2145304178502404271</id><published>2009-06-18T12:13:00.006-05:00</published><updated>2009-06-18T12:17:44.806-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>FastOS Podcast Launched</title><content type='html'>I went through and worked out the creation of a video podcast including setting up the right iTunes syndication.  I'll be posting all the FastOS talks (including the HARE/Plan 9 one) eventually.  They (and the slides) are available on the FastOS site (&lt;a href="http://www.fastos2.org"&gt;http://www.fastos2.org&lt;/a&gt;) and via &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=320529228"&gt;iTunes&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Its fairly easy, assuming you have a good mic for the speakers.  I may try to go and clean up the old IWP9 talks we have video of, but as a community it would really be a good idea to start making video podcasts of talks, tutorials, and whatnot.  All the kids are doing it these days after all.  I'm thinking of going back and capturing all of my past talks that I still have the slides for.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2145304178502404271?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2145304178502404271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2145304178502404271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2145304178502404271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2145304178502404271'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/06/fastos-podcast-launched.html' title='FastOS Podcast Launched'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-1550162978977848409</id><published>2009-06-18T12:13:00.001-05:00</published><updated>2009-06-18T12:13:39.742-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Plan 4?</title><content type='html'>Perhaps instead of changing names or increasing numbers with Plan 9, we should reduce numbers in subsequent versions since we strive to have less code and complexity (unlike certain other operating systems).&lt;br /&gt;&lt;br /&gt;Of course, there is the problem that all the other Plans did fail to enslave humanity. Still, there would be something nice to a Plan 4 which was more compact and simple, and it could use a reduced operating protocol 4P for communication. Of course, counting down from 9, we have a short window of opportunity to succeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-1550162978977848409?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/1550162978977848409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=1550162978977848409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1550162978977848409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1550162978977848409'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/06/plan-4.html' title='Plan 4?'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-8100391202524562725</id><published>2009-05-28T14:50:00.001-05:00</published><updated>2009-05-28T14:50:46.071-05:00</updated><title type='text'>Inferno ACME BG/P Environment</title><content type='html'>Have everything setup now to be able to launch and mount a remote inferno and then interact with the host using its devcmd and file system (and its network).&lt;br /&gt;&lt;br /&gt;This lets me deal with BG/P (and cobalt and telneting to the nodes) completely inside ACME -- except the Inferno telnet (inside ACME anyways) is spewing CRs and not echoing my input. &amp;amp;nbsp;Blech.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-8100391202524562725?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/8100391202524562725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=8100391202524562725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8100391202524562725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8100391202524562725'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/inferno-acme-bgp-environment.html' title='Inferno ACME BG/P Environment'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-7577842460715326962</id><published>2009-05-28T09:44:00.001-05:00</published><updated>2009-05-28T09:44:20.509-05:00</updated><title type='text'>ACME Trivia</title><content type='html'>So Feedkey allows me to setup ACME to prompt for Factotum challenges -- but how do I get Feedkey to start every time I start ACME? &amp;amp;nbsp;It doesn't show up in the dump, so its not as clear as autostarting other aspects of the system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-7577842460715326962?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/7577842460715326962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=7577842460715326962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7577842460715326962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7577842460715326962'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/acme-trivia.html' title='ACME Trivia'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-1493870620607302547</id><published>2009-05-27T17:48:00.004-05:00</published><updated>2009-05-27T17:55:00.646-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>export over ssh stdio</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;So, I've modified the lcmd stuff a bit and am able to mount a remote inferno instance that I start with an os ssh:&lt;br /&gt;&lt;br /&gt;(local script)&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;div&gt;#!/dis/sh&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;load std expr string&lt;/div&gt;&lt;div&gt;args := $*&lt;/div&gt;&lt;div&gt;s := sh -c ${quote $"args}&lt;/div&gt;&lt;div&gt;mkdir -p /tmp/lpipe&lt;/div&gt;&lt;div&gt;bind '#|' /tmp/lpipe&lt;/div&gt;&lt;div&gt;echo os&lt;/div&gt;&lt;div&gt;os ssh $remote /home/ericvh/inferno/Linux/power/bin/emu -I -r /home/ericvh/inferno /dis/sshexport  /tmp/lpipe/data1 &amp;amp;&lt;/div&gt;&lt;div&gt;echo shell&lt;/div&gt;&lt;div&gt;mount -A /tmp/lpipe/data /n/remote&lt;/div&gt;&lt;div&gt;/dis/sh&lt;/div&gt;&lt;div&gt;echo halt &gt; /n/remote/dev/sysctl&lt;/div&gt;&lt;div&gt;unmount /n/remote&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;(remote script)&lt;div&gt;&lt;blockquote&gt;&lt;div&gt;#!/dis/sh&lt;/div&gt;&lt;div&gt;load std&lt;/div&gt;&lt;div&gt;or {ftest -e /net/cs} {ndb/cs}&lt;/div&gt;&lt;div&gt;bind -c '#U*' /n/local&lt;/div&gt;&lt;div&gt;bind -a '#C' /&lt;/div&gt;&lt;div&gt;bind  '#|' /tmp/pipes&lt;/div&gt;&lt;div&gt;cat /tmp/pipes/data &gt; /dev/hoststdout&amp;amp;&lt;/div&gt;&lt;div&gt;cat /dev/hoststdin &gt; /tmp/pipes/data&amp;amp;&lt;/div&gt;&lt;div&gt;export / &lt;&gt;/tmp/pipes/data1 &gt;[2] /dev/null&lt;/div&gt;&lt;div&gt;echo halt &gt; /dev/sysctl&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The problem is that if I terminate the local inferno, the remote emu still runs. &amp;amp;nbsp;I'm not sure how to catch and clean that up gracefully....&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-1493870620607302547?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/1493870620607302547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=1493870620607302547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1493870620607302547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1493870620607302547'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/export-over-ssh-stdio.html' title='export over ssh stdio'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-8874875970394687402</id><published>2009-05-27T10:16:00.003-05:00</published><updated>2009-05-27T17:55:15.998-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='brasil'/><title type='text'>converting push to pull</title><content type='html'>Forsyth pointed me at the Owen papers with the labor exchange methodology for grid workload management. It works more on a pull principal (as does Cilk workload-stealing come to think of it).&lt;br /&gt;&lt;br /&gt;The basic model behind PUSH's distributed pipelines are that the workers "pull" their data from the pipes -- but the problem is that the work is currently uniformly distribtued by the fan-out process.  What we need is the equivilent of an alt which will distribute new work to workers with the capacity for it versus getting jammed out round-robin'ing work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-8874875970394687402?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/8874875970394687402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=8874875970394687402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8874875970394687402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8874875970394687402'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/converting-push-to-pull.html' title='converting push to pull'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-6954476229018354914</id><published>2009-05-26T08:57:00.002-05:00</published><updated>2009-05-26T08:58:49.425-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Call for Interns</title><content type='html'>I'm starting the selection process for a 6 month intern position working on Plan 9 technology for the DOE project (details at http://www.research.ibm.com/hare). The 6 months would have to be between Sept of this year and August of next. Graduate students or post graduates preferred. You'll need a strong background in C programming with Plan 9 and/or Inferno experience preferred.  If interested, I need a resume and availability by this time next week (June 2, 2009) and we'll need to chat on the phone by the end of next week.&lt;br /&gt;&lt;br /&gt;There will be a second opportunity for a 3 month position for a separate (but still somewhat related) project - I'll post more details on that project when it becomes available -- it may be during next summer (2010).&lt;br /&gt;&lt;br /&gt;Please send resumes, recommendation letters, and availability to me (ericvh AT gmail DOT com).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-6954476229018354914?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/6954476229018354914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=6954476229018354914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/6954476229018354914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/6954476229018354914'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/call-for-interns.html' title='Call for Interns'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-8908492457465441879</id><published>2009-05-25T17:03:00.003-05:00</published><updated>2009-05-25T17:06:12.360-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>lcmd games and 9P tunneling over ssh</title><content type='html'>So I've started playing around with lcmd (see ipn lab 83 for more details) -- and its got the right data path for what I want, but I need a slightly different application than simple rcmd.&lt;br /&gt;&lt;br /&gt;Effectively I want to use os from one Inferno to ssh to another machine and then use the ssh pipe to allow the two Inferno instances to mount eachother. The will allow me to securely traverse an ssh-only firewall and get more or less full service connectivity between the two inferno's (so that one can use the others network, or file system, or underlying host, etc.)&lt;br /&gt;&lt;br /&gt;First stage is to use the ssh tunnel to either import or export a file system - I suppose import makes the most sense initially. The second stage is to build a 9P mux which differentiates which pipe to service depending on the 9P message header (directing responses to a client pipe and requests to a server pipe).&lt;br /&gt;&lt;br /&gt;Simple experiments with lcmd seem to fail under OSX -- but I was trying to do them between acme-sac and emu, so its possible that one or both have issues with their hoststdio implementation (of course it could be something else I'm doing wrong as well) -- I do notice slight differences in behavior with hoststdin between the two -- acme-sac seems to report all activity, while regular emu seems to be muxing between a process reading hoststdin and another thread (perhaps the shell).&lt;br /&gt;&lt;br /&gt;Come to think of it, the ipn stuff does an enormous amount of work to mux the hoststdin and hoststdout into a single pipe, why not just do this from the get-go? &amp;amp;nbsp;This applies to both hoststdio as well as the os command stdio -- easy enough to fix in both cases (I think).&lt;br /&gt;&lt;br /&gt;In the case of the OS command, its just in how its written. &amp;amp;nbsp;The underlying devcmd just differentiates at the op level, not at the open level. &amp;amp;nbsp;So we just need to modify a line in os.b to use the same descriptor for both stdin and stdout. The hostio isn't quite as straightforward due to some hard-coded permissions. &amp;amp;nbsp;In order to preserve existing semantics, i'm just going to create a new Qid for r/w io.&lt;br /&gt;&lt;br /&gt;The other problem here is that the target system is actually linux-powerpc.  An open question is whether to port acme-sac there just to keep the source base consistent between client and server, or whether to attempt to use traditional emu as the server (implying changes in both).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-8908492457465441879?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/8908492457465441879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=8908492457465441879' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8908492457465441879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8908492457465441879'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/lcmd-games-and-9p-tunneling-over-ssh.html' title='lcmd games and 9P tunneling over ssh'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-3730826948580992604</id><published>2009-05-22T13:06:00.003-05:00</published><updated>2009-05-22T13:20:33.275-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>acme sac does seem much better under OSX</title><content type='html'>Wow - I guess I had never really tried ACME-sac out on OSX. It seems much better integrated. &amp;amp;nbsp;The mouse scrolling works (which doesn't sound like much of anything, but really makes a difference), the default fonts better match the Mac. Its making me reconsider some of the client-side configurations I was considering for a new working environment for dealing with Blue Gene.&lt;br /&gt;&lt;br /&gt;So -- what would be the implications of going with ACME-sac for the front-end instead of a vanilla Inferno? There was some consideration of using Inferno as a drawterm replacement, but that sort of faded due to latency concerns. 9cpu seems to be present, but broken -- perhaps its something that is easily fixed.&lt;br /&gt;&lt;br /&gt;EDIT: Of course trying to fix things ends up revealing how much more restricted of an environment it is.  I was never a huge fan of the Inferno wm-based debugger, but it did make problem determination significantly easier than without it.  The case could easily be made that the right thing to do is "port" some of these wm applications to acme -- the common difficulty is one of time to do these sort of things.&lt;br /&gt;&lt;br /&gt;So, what's the more pain in the ass, back-porting improvements from acme-sac into inferno or porting over "missing" items to acme-sac?  "If I were king", I suppose I would take a slightly different approach: &lt;br /&gt;# kill the binaries in both targets to ease source control woes mentioned earlier&lt;br /&gt;# structure a generic build script like p9p to allow easy builds without binaries and modifying mkconfig every, freaking, time &lt;br /&gt;# create a distribution target that would build the acme-sac configuration directly out of inferno&lt;br /&gt;&lt;br /&gt;Of course, I'm not in direct control of either of these distributions, but I think if I do branch Inferno for Brasil, maybe I'll follow this guidance myself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-3730826948580992604?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/3730826948580992604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=3730826948580992604' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3730826948580992604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3730826948580992604'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/acme-sac-does-seem-much-better-under.html' title='acme sac does seem much better under OSX'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-7659918643296116476</id><published>2009-05-22T10:32:00.002-05:00</published><updated>2009-05-22T11:15:24.230-05:00</updated><title type='text'>Source Control Woes</title><content type='html'>Blech. I've been trying to work in a branch of my mirror of the inferno-os tree on google code.  The problem is that it contains a bunch of binaries which royally screws with the source control system. &amp;amp;nbsp;I removed most of the binaries, but of course now I can't pull from that tree without it freaking out.&lt;br /&gt;&lt;br /&gt;As far as I can see, I have two alternatives:&amp;amp;nbsp;&lt;br /&gt;&lt;br /&gt;* meticulously create (and maintain) a gitignore file so that every time I rebuild it won't put binary changes into the commit. This will (probably) fix the merge issues, but I'm not certain.&lt;br /&gt;&lt;br /&gt;* create a full fork of the inferno-os tree and manually patch source files based on the changesets from svn. &amp;amp;nbsp;Actually, it would probably make the most sense to just fork a brazil-os tree from the inferno-os tree and strip out absolutely everything we don't really need.&lt;br /&gt;&lt;br /&gt;EDIT: I've gone with gitignore for now, but a bit unsure how to commit the file back to the central repository.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-7659918643296116476?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/7659918643296116476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=7659918643296116476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7659918643296116476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7659918643296116476'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/source-control-woes.html' title='Source Control Woes'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-972122230580157492</id><published>2009-05-20T16:16:00.002-05:00</published><updated>2009-05-20T16:17:58.707-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uem'/><category scheme='http://www.blogger.com/atom/ns#' term='brasil'/><title type='text'>UEM: Incremental Approach</title><content type='html'>I realized I was getting a bit overwhelmed by the complexity of what I described in the whitepaper and it was leading me to write more and implement less. I'm going to switch gears and go for some small, incremental steps to get the ball rolling.&lt;br /&gt;&lt;br /&gt;First things first, I need a method for initiating commands on Inferno hosts using only a synthetic file system. Noah has the basics for this within exportcmd, but I need to go over it and make sure it fits my goals.&lt;br /&gt;&lt;br /&gt;Second, I need the ability to mount that file server on OSX, Linux, and Plan 9 -- preferably over the stdio of the Inferno&lt;br /&gt;process. There's an Inferno Lab which covers something similar that I can use as a base.&lt;br /&gt;&lt;br /&gt;Next, I'll need to be able remotely mount this service while simultaneously exporting my namespace to it by using a mux on the communication channel which appropriately directs requests.&lt;br /&gt;&lt;br /&gt;Then I can get into extensions which are necessary for devcmd, but the more I think about it, the more I think many of these extensions may be better implemented from an application level versus trying to do them within the driver (mostly things to do with namespace manipulation).&lt;br /&gt;&lt;br /&gt;Also (where possible), I'll need a mechanism within devcmd to actually back mount an Inferno sandbox where I can setup the namespace for the target application.&lt;br /&gt;&lt;br /&gt;Once all of this is in place I can move on to thinking about the front-end file system which is used to reserve resources and allocate nodes. &amp;amp;nbsp;I'm leaving this for last because it will require a plugin module and I'm still not entirely sure what form that will take.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-972122230580157492?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/972122230580157492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=972122230580157492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/972122230580157492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/972122230580157492'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/uem-incremental-approach.html' title='UEM: Incremental Approach'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-4125310907874013462</id><published>2009-05-20T13:57:00.003-05:00</published><updated>2009-05-20T13:57:50.193-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uem'/><category scheme='http://www.blogger.com/atom/ns#' term='brasil'/><title type='text'>BG/P</title><content type='html'>The other approach I could take would be finally digging in and reworking my environment for Blue Gene using elements of the UEM. There is more complexity to a complete solution here, but I could start with the basics and get rid of the Plan 9/Linux/cobalt/ssh scripts I use now, unifying into a single consistent environment which I can completely host from my laptop instead of having to involve intermediate CPU servers. The advantage of doing this will also be to ease others who need to transition to using BG/P.&lt;br /&gt;&lt;br /&gt;There are two sides to the BG/P story -- there's initial machine allocation and then there is an environment for actually executing applications on the allocated machine.&lt;br /&gt;&lt;br /&gt;For these there is less emphasis on cloud-like allocation like with Kirin, but more of a focus on the BG/P boot environment combined with clever network tricks to traverse the multiple network domains involved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-4125310907874013462?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/4125310907874013462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=4125310907874013462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4125310907874013462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4125310907874013462'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/bgp.html' title='BG/P'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-8783802940910119243</id><published>2009-05-20T09:53:00.004-05:00</published><updated>2009-05-20T10:03:43.756-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uem'/><category scheme='http://www.blogger.com/atom/ns#' term='brasil'/><title type='text'>UEM Pre-Implementation Notes</title><content type='html'>I need to lay out a pragmatic model for getting the execution model prototype going.  In order to keep one of my interested end-users I'm going to need to rapidly prototype a version which fits his current needs and then build upon that in order to obtain the more general model.  Leaving out the loftier goals for zero-configuration and plug-in modularity, I think the easiest approach would be to augment devcmd with sufficient additional files and control interfaces to provide a more complete xcpu set of facilities and information (without treespawn).  We can then build a front-end task-based control interface using exportcmd as a foundation which interacts with the back-end augmented command facilities.&lt;br /&gt;&lt;br /&gt;Since Inferno will be the baseline for these activities, I guess it makes the most sense to operate under a full fork (at least for now) -- I  have had thoughts of stripping an Inferno branch down to a bare minimal set to meet my purposes, but for now I think it just makes sense to use a proper fork in case I change my mind and forsyth wants to accept changes mainline.  Oops - I guess things don't really work that way, since I own the inferno-os repository I can't do a proper repo fork, I'll need to operate within a branch for now (which is probably more efficient space wise anyways.&lt;br /&gt;&lt;br /&gt;Also, one /proc we didn't include in our description was the Linux proc which has grown quite signifigantly (I guess OSX doesn't have a proc? - I thought BSD did).  Gonna update white paper with interesting tidbit of linux proc leafs.  I wonder how many of these we should give access to (if not all, I suppose that would make the most sense but would change the character of devcmd somewhat - most specifically&lt;br /&gt;in directly linking it to an underlying process id.  That's an interesting concept anyways I suppose - of course different data would be available on different host operating systems (Plan 9, Linux, and OSX being the interesting portions in our case.  In the OSX case there won't be a procfs to access the data through (unless we use the FUSE version, but it would seem we would be better off directly providing the interfaces within Inferno instead of using a proxy).&lt;br /&gt;&lt;br /&gt;A related idea would be to provide file system interfaces which could be used to attach gdb to these remote tasks.  Since GDB doesn't really work on synthetic file systems like acid, I suppose the best approach would be to just provide a ctl message which sets up a remote gdb slave attached to the process in question.  Is that sufficient to allow remote debugging, or do we need something more?  Of course, in a cluster we really want a meta-gdb capable of controlling multiple tasks on multiple systems.  ACID really does seem to have a leg-up here.&lt;br /&gt;&lt;br /&gt;cmd should have sufficient infrastructure for the backend (at least for running host threads which is the first thing we are concerned with, we can accommodate running native Inferno threads later).  The front-end may be a bit more challenging, based on the example write-ups we did it seems clear to me that the task based model is likely the most natural for Damir's programing model -- but we'll want top-level reservation control, so that implies a slightly deeper hierarchy than the existing exportcmd.  As such, we'll need a top level clone directory which specifies tasks, the tasks directory will have their own set of files which will allow aggregate command execution or data collection.  Then we'll have a set of subdirectories for each thread of execution with specific data and control files for interacting with the thread (which will ultimately be a binding of the backend devcmd session directory).  &lt;br /&gt;&lt;br /&gt;The difficult part for GPUs is distributing those threads based on available resources (and doing it in such a way that the technique is generalizable).  My current thoughts on this is to use a generic key/value tagging facility to specify what resources&lt;br /&gt;are available on each system and use ctl messages to (atomically?) manipulate use-count flags.  This needs to be thought through a bit more.  The other difficulty here is hooking into the GPU tools (in this case Nvidia runtimes) to setup what resources are available.  Fortunately (from an implementation perspective anyways), the lack of external interfaces for querying the GPUs means there isn't a whole lot of information for me to publish or update.&lt;br /&gt;&lt;br /&gt;There's an interesting side issue here which is who is the agent that collects and updates the information.  For the system itself (load average, available memory, number of cores, architecture), it may make sense to do it within the architecture specific cmd implementation.  But for something like GPUs (which may or may not be on a particular architecture) - it may make more sense to use a limbo plugin which uses the native devcmd to query the device and update attributes and tags.  The question is to know when to run these helpers.  For the pragmatic prototype, we'll always run them since we'll always have a GPU present on the system -- but we'll need a long range plan versus always running every potential back-end plugin to query the device.  I suppose something which scans (and rescans for hotplug?) the host peripherals may be necessary.  Suggestions welcome on this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-8783802940910119243?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/8783802940910119243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=8783802940910119243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8783802940910119243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8783802940910119243'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/uem-pre-implementation-notes.html' title='UEM Pre-Implementation Notes'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-7758922231861160352</id><published>2009-05-20T09:42:00.004-05:00</published><updated>2009-05-20T09:51:52.570-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='brasil'/><title type='text'>A Few Words on Brasil</title><content type='html'>The astute will notice the brasil tag at the bottom of many of these posts - since its genesis predates the use of this blog for brain dumping, I think its appropriate to briefly describe what "brasil" is.&lt;br /&gt;&lt;br /&gt;Brasil is intended to be a meta-project for a collection of experiments relating to non-incremental changes to the Plan 9 operating system.  At the moment, most of these ideas are focused around the needs of the DOE HARE project, but this may not always be the case.  The main experiments currently in the roadmap are as follows:&lt;br /&gt;&lt;br /&gt;* Create a Plan 9 microkernel where the kernel only provides the IPC mux for 9P messages, this will include the migration of all non-synthetic-file-system based system services (such as the scheduler) to file systems.&lt;br /&gt;* A new unified registry model with multiple scopes facilitating dynamic distributed resource access without static configuration files or reliance on DNS&lt;br /&gt;* A Unified Execution Model which extends across the network and contains support for creation and management of logical node instances and physical hardware as well as threads.&lt;br /&gt;* A peer-to-peer DHT approach to storage and file systems including transitive mount short-circuiting support, caches, distributed lock management.&lt;br /&gt;* Semantic file systems which have more of the properties of databases versus flat file trees.&lt;br /&gt;* Additional library support for message passing style interprocess communication and synchronization.&lt;br /&gt;* Synthetic file systems incorporating collective communications semantics&lt;br /&gt;* web-browser targeted synthetic file system user interface model with tightly bound collaboration components (fluff)&lt;br /&gt;&lt;br /&gt;I'm using modifications of hosted Inferno as a prototyping platform for everything except for the microkernel work. &amp;amp;nbsp;The concept being that I can implement infrastructure in Inferno and use it natively on Plan 9, Linux, and OSX (among others). More specifically, I plan to take a co-operating-system approach where Inferno exports all of the interfaces to these services as synthetic file systems to the host (which use 9P, v9fs, or MacFUSE to mount the resources within the system's namespace).&lt;br /&gt;&lt;br /&gt;I have speculated about creating a stripped down version of Inferno (without graphics, the virtual machine, or other components which I don't currently need) to keep things as tight as possible, but for now am doing my work within a full Inferno tree.&lt;br /&gt;&lt;br /&gt;Not that it matters much, but the name itself is stolen from the "code name" (perhaps that's not the right word) for an evolution of the Plan 9 system in the early 90's which was renamed Plan 9 in the late 90's (&lt;a href="http://swtch.com/plan9history/"&gt;cite&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Alternatively it can be an acronym:&lt;br /&gt;Basic Resource Aggregate System Interface Layer&lt;br /&gt;(or perhaps more descriptive of the prototype)&lt;br /&gt;Basic Resource Aggregate System Inferno Layer&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-7758922231861160352?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/7758922231861160352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=7758922231861160352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7758922231861160352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7758922231861160352'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/few-words-on-brasil.html' title='A Few Words on Brasil'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-6602555270118363345</id><published>2009-05-20T09:29:00.003-05:00</published><updated>2009-05-20T12:26:40.313-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uem'/><category scheme='http://www.blogger.com/atom/ns#' term='brasil'/><title type='text'>Next Steps: UEM</title><content type='html'>Based on early feedback, there are several points that require additional clarification within the unified execution model (UEM) design description. &amp;amp;nbsp;I need to spend some time writing up sections (which will manifest themsleves as entries within the blog) on the following topics.&lt;br /&gt;&lt;br /&gt;* More detail on semantic file systems, including descriptions of how they can be used for search and monitoring as well as specifying attribute requirements for provisioning.&lt;br /&gt;* Provide detail on the underlying design and implementation model for user and system defined tagging of objects with key/value pairs.&lt;br /&gt;* Need to start defining the core semantic and syntax specification for back-end elements as well as core models for certain classes of back-end resources in order to optimize re-use of tools which may use the file system&lt;br /&gt;* Need to further clarify best-effort approach for guessing what resources a user/application wants based on existing context&lt;br /&gt;* Need to identify a motivating example to frame/focus LADIS paper around.&lt;br /&gt;* Need to write up multi-dimensional file views in a more consistent factor to get the idea across to folks that aren't as familiar, and I need to include a more formal write-up on the dot-dot-dot shortcut idea.&lt;br /&gt;* Need to describe the canonical form reference fs dimension and describe how it can be used to short-circuit transitive mounts and otherwise be used as a sort of global file reference.  Go on to compare/contrast this to the idea of a global file descriptor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-6602555270118363345?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/6602555270118363345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=6602555270118363345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/6602555270118363345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/6602555270118363345'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/next-steps-uem.html' title='Next Steps: UEM'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-8448298805736493564</id><published>2009-05-19T19:46:00.011-05:00</published><updated>2009-05-20T09:10:09.888-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uem'/><category scheme='http://www.blogger.com/atom/ns#' term='brasil'/><title type='text'>Unified Execution Model</title><content type='html'>&lt;span style="font-style:italic;"&gt;This is a mind to whitepaper brain dump I've been working through with Noah and Pip -- its rough, incomplete, and may not make a lot of sense.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Motivation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While Plan 9 established a cohesive model for accessing distributed resources across a cluster, it employed only a rudimentary methodology for initiating and controlling remote execution. More specifically, the cpu(1) facility provided a mechanism to initiate remote execution while providing transparent access to certain aspects of the initiating terminal's resources using Plan 9's dynamic private namespace facilities. While the cpu(1) facility provided an elegant mechanism for remote execution, it was limited to a single remote node, which was explicitly selected either by the user or DNS configuration. This worked well enough for small clusters of terminals with a few large scale-up CPU servers, but is less appropriate for today's scale-out clouds.&lt;br /&gt;&lt;br /&gt;Breaking from Plan 9's paradigm of representing everything as a synthetic file system, the cpu(1) facility was instead provided as a more traditional network service, giving it less flexibility than many of the other services which were represented in the file system and could be reorganized in arbitrary ways or exported over heterogenous remote networks. This also restricted access to remote execution to systems which were directly connected to the same network as the initiating terminal, in other words firewalls and separate network domains created additional hurdles to initiating remote execution.&lt;br /&gt;&lt;br /&gt;As we deploy Plan 9 to larger scale clusters with heterogeneous network configurations, there has been an increasing need to address the limitations in the current remote execution model. In my personal experience, three classes of cluster configuration require something beyond the current mechanisms: clouds, hybrid systems, and extreme scale HPC installations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Cloud&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Clouds introduce a signifigant new factor to cluster configurations in that they facilitate a fluid allocation, provision, and configuration of services. As end-users require new resources, they can merely provision them, dynamically hooking them into virtualized storage or virtualized networks (which themselves are organized dynamically). Additionally, clouds themselves are typically composed of a large number of smaller nodes versus a few large SMPs.&lt;br /&gt;&lt;br /&gt;Services such as Amazon's EC2 allow end-users to dynamically provision new resources programmatically, with the new resources brought online in the time span of minutes versus the hours (or days) it would typically take to order, build and configure a server. Services may be deprovisioned at a similar pace, allowing users to scale back the expense of hosting a service when demand is low.&lt;br /&gt;&lt;br /&gt;This fluid environment with resources appearing and disappearing at regular intervals, static configuration is no longer an acceptable strategy. Host configuration either using Zeroconf or some other form of registry will have to be the norm in order to reach the potential of the dynamic cloud. The flexibility from an administrative standpoint is only half the cloud story, as applications are enabled to demand and release cluster resources we have the potential for entering into a new golden age of distributes systems with Amazon, Google, and other service providers providing the appearance of limitless resources for distributed computation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Hybrid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nbtXd3baZsQ/ShNUyuLQsKI/AAAAAAAAAOM/eYpMTN35v_k/s1600-h/hybrid-topology.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://4.bp.blogspot.com/_nbtXd3baZsQ/ShNUyuLQsKI/AAAAAAAAAOM/eYpMTN35v_k/s320/hybrid-topology.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5337703213729624226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;center&gt;Figure 1: Hybrid Topologies&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Another recent trend is the rise of hybrid system and hybrid cluster models. Hybrid systems incorporate heterogeneous cores, either with different processing characteristics or difference instruction set architectures. The Cell Processor, with its combination of a general purpose PowerPC cores (PPU) and eight synergistic processing elements (SPE) for vector operations is a classic example. In such systems, the various cores have coherent access to eachother's memory, but memory transfers between PPU and SPE are handled explicitly.&lt;br /&gt;&lt;br /&gt;A slightly more loosely coupled version of this can be seen in systems using GPUs to accelerate compute. In such systems, the GPU accelerators are often located on the other side of a peripheral bus with their own memory and execution units. Existing runtime frameworks for GPUs, such as CUDA, provide preciously little introspection and control to the external system - making monitoring and control difficult.&lt;br /&gt;&lt;br /&gt;The Road Runner tri-blades used a set of cell processors connected over peripheral buses to a general purpose opteron combining both of the previous examples. Road Runner poses many interesting challenges as a Hybrid as it has multiple instruction sets, multiple endian, and multiple peripheral buses.&lt;br /&gt;&lt;br /&gt;These sorts of hybrid systems can themselves be composed together with other more general purpose systems in a hybrid clusters. The Virtual PowerXcell Environment (VPE) was an attempt to create a runtime which addressed such a loosely coupled hybrid cluster by trying to maintain the illusion of a single system image.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Extreme Scale&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A final area of particular interest is extreme scale computing. Blue Gene is capable of having hundreds of thousands of cores, with subsequent versions aiming for millions. Managing and debugging the physical hardware at this scale presents a challenge, deploying, monitoring and controlling application threads if even more daunting. The lack of infrastructure capable of coping with this extreme scale, has lead to oversimplified application frameworks only capable of statically defined and managed embarassingly parallel applications. We believe the development of a dynamic command and control framework for extreme scale is the key to unlocking its true potential and broadening its applications base.&lt;br /&gt;&lt;br /&gt;Beyond sheer scale, systems such as Blue Gene present a number of interesting challenges for execution frameworks. The machine employs a physical paritioning mechanism to allow it to be used concurrently by multiple users. The physical partition scheme is limited by the underlying machine architecture, creating a minimum allocation of one I/O node and 64 compute nodes (at least at Argonne, smaller granularities are possible, but the smallest is one I/O node to 8 compute nodes). As a result, when requesting additional resources, you actually are requesting a private cluster composed of some number of I/O nodes (which are good for running certain types of tasks) and a certain number of compute nodes (which are good for running another type of tasks). This complicates the cloud scenarios discussed earlier.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nbtXd3baZsQ/ShNVOYlLYCI/AAAAAAAAAOU/nNisjgIn79Y/s1600-h/bgp-topology.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 190px;" src="http://2.bp.blogspot.com/_nbtXd3baZsQ/ShNVOYlLYCI/AAAAAAAAAOU/nNisjgIn79Y/s320/bgp-topology.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5337703688969084962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;center&gt;Figure 2: Extreme Scale Topologies&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Furthermore, extreme scale systems such as Blue Gene incorporate several underlying physical network technologies which creates several different network domains which cluster elements have to work within. For example, end-user workstations can only access the front-end nodes (which are general purpose PowerPC servers). The front-end servers can talk directly to the management infrastructure as well as the IO Nodes, but not the compute nodes. The Compute Nodes can talk to the IO nodes over the tree network, but not the high-bandwidth torus network. Coordinating management components (not to mention applications) in such a diverse topology is challenging.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Requirements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While primarily intended as a research project, it is important that whatever solution is developed is deployable in a number of contexts including Linux, MacOSX, and Plan 9. It needs to be able to support Intel and PowerPC architectures (in 32 bit and 64 bit varietys) and it is desirable that it incorporate support for accelerators such as GPUs and SPUs. It needs to be network agnostic, requiring only a reliable, in-order tansport - and it needs to support some forms of dynamic configuration and shouldn't require static configuration files to work.&lt;br /&gt;&lt;br /&gt;In order to accomodate cloud configurations, an execution model must not only be able to initiate remote applications, but potentially to provision new nodes to initiate remote applications on. This essentially also implies control of booting (and shutting down) system instances. On clouds which support it, it might also incorporate controls for migrating system images (and contained applications) to new physical hardware.&lt;br /&gt;&lt;br /&gt;Resource management software, such as load balancers will have to monitor the currently allocated assets and know when to acquire more or release existing resources in order to adapt to changing workloads. Since the cloud environments have multiple network security domains, such an execution model will require mechanisms to be able to cope with traversing the multiple network spaces to maintain monitoring and control of remote processes.&lt;br /&gt;&lt;br /&gt;With so many different resources spread out across the cluster, users and applications will need new tools to be able to keep track of what resources they are currently being charged for and how they are being used.&lt;br /&gt;&lt;br /&gt;Additionally, there are cases were it is desirable to run many instances of an application on many remote nodes, breaking the original one-to-one model of cpu(1). We've seen this requirement take two forms: in one form the important thing is just to start many duplicate copies of the application with the same arguments and environment. In such cases, it is the applications responsibility to configure each instance appropriately. Standard I/O in these cases is primarily a logging mechanism as opposed to a mechanism for interaction or reporting data. The other case requires the ability to spawn off many instances, with individual configurations and control channels. Finally, while in most cases the applications are spawned from a single terminal or front-end node - we feel it is important that new instances (or resources) may be allocated from within the cluster as well as from the front-end.&lt;br /&gt;&lt;br /&gt;For heterogeneous systems, we must have the ability to provision systems with specific characteristics (ISA, Accelerator Properties, Memory, etc.) on specific nodes. We must also be able to accomodate infrastructures such as CUDA which combine execution on the general-purpose CPU and the GPU accelerators. As such, execution must be conditionalized on being able to find sufficient resources to initiate execution. In environments which support it, such as Cell, the execution model should provide controls to hybrid accelerator hardware.&lt;br /&gt;&lt;br /&gt;Since hybrid models such as CUDA operate as black boxes, we must be able to support dedicating hardware to a particular task as well as standard time sharing models - incorporating the same basic features as a cluster provisioning system such as cobalt or the sun-grid-engine at a system image and/or task level.&lt;br /&gt;&lt;br /&gt;Given that hybrid accelerators may be present over tightly coupled peripheral buses (or even on chip) - whever mechanisms are used to establish command/control must be transport independent (ie. able to run over a peripheral bus as well as over a standard IP network).&lt;br /&gt;&lt;br /&gt;In order to be able to use the execution model at systems with the scale of Blue Gene (or potentially larger), the execution model interface needs an organizational interface which can scale to millions of threads. To be complete, it will have to handle physical resource provisioning at multiple granularities (to match underlying cluster management tools) and provide mechanisms to access hardware debug facilities.&lt;br /&gt;&lt;br /&gt;Application threads at extreme scale often require extremely low latency access to computational peers, adding the requirements of data locality and physical topological awareness to any workload distribution and management system. Furthermore, it is likely that such applications will require similar knowledge be integrated into whatever inter-thread communication and synchronization primitives provided by the framework.&lt;br /&gt;&lt;br /&gt;Application (and system image) deployment at large scale also provides a challenging problem. Some manner of aggregated deployment of application images (and data) will be necessary in order to accomodate simulataneous execution of thousands of new threads.&lt;br /&gt;&lt;br /&gt;Furthermore, the overhead of monitoring such a large scale system is signifigant. Any monitoring/reporting infrastructure will have to be augmented so that the overheads of monitoring nodes does not overwhelm their communication or computation capability.&lt;br /&gt;&lt;br /&gt;Finally, the sheer number of components of such large scale systems make failure of individual components more likely. The systems infrastructure for providing the execution model should be resilient in the face of such errors, migrating workloads as appropriate and not failing itself when it can no longer contact some of its components.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Related Work&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Suffice to say, there have been a number of projects attempting to address distributed execution models. Within the space of the motivating examples, the two most prominent paradigms are Map/Reduce and MPI mechanisms - both of which were designed with a particular application structure in mind. We seek a more general-purpose execution model capable of handling the aforementioned requirements.&lt;br /&gt;&lt;br /&gt;The XCPU runtime infrastructure was an attempt at bringing the power of Plan 9's cpu(1) facility to HPC systems running other operating systems. It incorporated facilities for dealing starting large numbers of threads on large numbers of nodes. It optimizes binary deployment using the treespawn mechanism which allows it to task clients as servers to aggregate the work. Its associated monitoring infrastructure uses s-expressions to more easily allow collection of correlated remote monitoring data from nodes. The xcpu client also had provisions for supporting multi-architecture hosts.&lt;br /&gt;&lt;br /&gt;XCPU suffers from a rather ad-hoc authentication mechanism which isn't persistent and ends up being a bit of a pain to deal with. It doesn't incorporate workload scheduling itself, relying instead on external tools. It also suffers from static configuration, and doesn't easily support fanning out with individual arguments and I/O paths. Finally, XCPU's currently implementation is linked to scoket transports, and while it supports the use of private namespaces and limited binding in XCPU2, it only does so on modern Linux kernels.&lt;br /&gt;&lt;br /&gt;There are a large number of process style interfaces both to local processes and remote clusters. These are summarized here for reference:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Design&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The core idea is to build upon the ideas present in xcpu, xcpu2, and to some extent spufs, cellfs and kvmfs to provide a comprehensive execution model which covers allocation and management of logical nodes as well as distributed execution and to some extent communication. The idea is that this could provide a more dynamic execution model for EC2 deployments of Plan 9 and Inferno as well as provide the foundation for large scale deployments of applications as part of the DOE HARE project. This should also fill the distributed execution requirements for the PUSH project (which in turn will provide facilities for connecting distributed execution in a pipeline fashion).&lt;br /&gt;&lt;br /&gt;The core interface principle remains as a service-oriented file system based on the same basic design as proc(3) or Inferno's prog(3). The idea, is at its core, each thread will have its own directory with a number of control files.&lt;br /&gt;&lt;br /&gt;The basic design builds upon these past designs by using clone files to allocate new resources in much the same fashion as the cmd device from Inferno or xcpufs. Each newly allocated resource will have a subdirectory containing control/status files specific to the resource which the directory represents. Certain standard files are provided at every level (for instance ctl and status) - but the semantics/syntax of interacting with them may be more specific to the underlying resource.&lt;br /&gt;&lt;br /&gt;The use of clone files to instantiate threads may be a bit controversial as it always comes up as the example of how we don't want to use a file system for everything. However, I believe the need for distributed execution contexts trumps prior reasons for not instantiating new threads through a file system interface. Its not clear that there should be a complete switchover to using file system operations for things such as fork, but it seems clear that we need an architected mechanism for execution in other contexts. By using a synthetic file system for this interface, it means we can easily export it to other environments - all the system would need is a 9P client library or file system in order to access the execution model.&lt;br /&gt;&lt;br /&gt;For example - Inferno and Plan 9 have different files based on what underlying information and controls are avaialble. Given the wide space we intend to address, this will likely be the case for us as well.&lt;br /&gt;&lt;br /&gt;The sheer number of nodes and threads we intend to support will not be possible with a flat organizational structure. One approach would be to use a hierarchical structure matching the physical organization of the nodes (ie. data center -&gt; row -&gt; rack -&gt; chassis -&gt; slot -&gt; lpar -&gt; thread for a blade configuration). Such a model might have multiple clone files at multiple levels providing abilities to intantiate new logical nodes, logical partitions, or threads. Another model would be to match the logical organization of a cluster management tool (i.e. job number -&gt; IO Node -&gt; CPU Node -&gt; Core or Thread for Blue Gene). A similar model would be possible for Cloud configurations. Another related model would be to use network topology in order to address resources. This would provide semantic information in order to directly contact or allocate neighbors in a torus or other locality based topology.&lt;br /&gt;&lt;br /&gt;Perhaps the most flexible approach would be to allow users to define an arbitrary hierarchical organizational structure using a /n-like dynamically generated organization terminated by a clone file to allocate resources at that level of the hierarchy. In cloud configurations, such a dynamic hierarchy could also be used to help allocate machines with specific attributes (i.e. /cloud/x86/gpus=1/mem=4G/clone). The same technique could be a general mechanism to find hardware capable of supporting the objtype of a given application (or allocating the hardware as necessary). There should be a relative mechanism available which chooses reasonable defaults based on the currently executing application such that a user doesn't have to specify an exhaustive list of attributes for every innvocation.&lt;br /&gt;&lt;br /&gt;The likely case is that any chosen organizational structure will not be optimal for every type of access. That is to say, one organization will not be sufficient. As such, it is desirable to provide multiple views into the model: supporting physical, logical, and user-defined views. This should be possible through the use of a generic key/value tagging facility which should provide sufficient flexibility to satisfy most constraints. This same solution should be able to work with both physical resources as well as user-defined tasks and logical resources.&lt;br /&gt;&lt;br /&gt;Another parameter which might be useful in such organizations is to provide scoped dynamic attribute specified access. That is to say, provide a subdirectory which when traversed will perform resource lookup based on the scope of the current level of the hierarchy. This could be used to find a node within the current logical group which has a certain resource available, or be used to provide flat access to all processes within the current logical group.&lt;br /&gt;&lt;br /&gt;Finding a mechanism to be able to switch between these alternate views of the unified execution model will be critical. A shortcut mechanism such as dot-dot-dot may be appropriate here.&lt;br /&gt;&lt;br /&gt;Due to the variety of underlying resources, it is desirable to provide a plug-in interface for both the organizational structure of the execution model as well as the thread-level elements for different back-ends. This will allow for new resources to be added to the model with a minimum of fuss, and allow for easy construction of unforseen organizational structures.&lt;br /&gt;&lt;br /&gt;An vital design element is that the unified execution model is not a centralized resource. Each element of the system which can will run their own instance of the synethetic service-oriented file system. These instances will coordinate with one another in a fashion appropriate to their underlying network topology. Since many nodes will never have to contact one another, cross-mounts are lazy and initiated on access.&lt;br /&gt;&lt;br /&gt;This approach implies that every client is also a server. Since we want to be able to traverse network boundries such as firewalls, NAT appliances, and bridges between different network technologies it is important that we are able to use a single connection for the two nodes to be able to access eachothers resources and provide mechanisms for nodes to be able to transitively access eachother through bridge nodes. In the future, these relationships will be managed by retooling the srv(3) mechanisms to be more cluster aware - but in the short term we can experiment with these different methodologies directly within the execution model.&lt;br /&gt;&lt;br /&gt;Aggregated data access is a critical element of the execution model in order to be able to cope with scale. It will be unacceptable to issue millions of directory traversals and individual file operations in order to obtain a snapshot of the cluster's state. As such, directory data must be available in a compressed alternate form such as the s-expressions employed by xcpufs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hosted Inferno seems a natural choice to implement these designs. It already has its own authentication mechanism and full dynamic private namespace facilities. It runs on all target operating systems and provides a nice abstraction of their underlying differences. Furthermore, through the cmd(3) infrastructure it is able to initiate and control processes on the underlying system. An interesting aspect of this setup is that we can start both Inferno threads or host threads using roughly the same interface - that can be extended to initiation of CUDA threads and/or emulated environments (such as linuxemu on Plan 9 or cnkemu on BG/P Plan 9). These threads can access resources such as the initiating nodes file system through a 9P backmount which can be organized and exported via Inferno (MacOSX will have to use FUSE to do the back-mount, but this allows us an Inferno pseudo-dynamic-private namespace on OSX).&lt;br /&gt;&lt;br /&gt;Additionally, the general idea is for Inferno to export the synthetic file system interface of the exection model to the underlying host allowing it to directly access the interfaces and initiate actions either via shell scripts of library APIs. This is why it is of vital important that all interaction should be possible using only the file system based interface.&lt;br /&gt;&lt;br /&gt;A potential gap is that Inferno does not currently support .U extensions necessary for some Linux applications. We'll need to look into mechanisms for either implementing .U semantics within Inferno or bridging them to remote servers which implement them.&lt;br /&gt;&lt;br /&gt;While Inferno may seem a bit heavy weight for this task, consider that the text size of many comparable infrastructures is far greater. Even XCPU isn't that much smaller than a full blown Inferno execution. In the future this overhead may be further diminished by creating an Inferno stand-alone-complex for the execution model which eliminates the virtual machine and graphical components of the hosted inferno emulator. The working term I've been using for such a stripped environment is the Basic Resource Aggregation System Inferno Layer (aka Brasil).&lt;br /&gt;&lt;br /&gt;Limbo's dynamic module loading seems to be a fairly optimal solution for the integration of plugins. A file based interface (perhaps even a plumbed one) can be used to instruct the execution model to load new plugins dynamically - relying on a static configuration to load the defaults for a particular system (and/or user).&lt;br /&gt;&lt;br /&gt;It seems clear that there are at least two different forms of plugins: back-ends which supports allocation, execution, monitoring, and control of specific physical or logical resources (clusters, nodes, logical partitions, threads, accelerators, etc.) and front-ends which support different organizational models (physical hierarchy, logical hierarchy, attribute based search, task-based, etc.). The existence of different underlying transport mechanisms may require plugin support as well - but it is less clear to me how that can be easily integrated and may be best left to a separate infrastructure (such as /net or /srv).&lt;br /&gt;&lt;br /&gt;Back-end plugins will provide two levels of directories - a toplevel which is the same for each physical instance of the resource group, and an instance directory with the per-instance control and status interfaces. These two level directories can be stacked (such that per-instance directories might contain another resource's toplevel and instance subdirectories). This allows compositional hierarchies to be easily built. TODO: figure out syntax of how this is going to play out via the file system or modular interface.&lt;br /&gt;&lt;br /&gt;Access to compressed aggregated information about a subset of the resources will be made available through an alternate attach point of the synthetic file system (and optionally through a dot-dot-dot shortcut).&lt;br /&gt;&lt;br /&gt;Communication and coordination of different instances of the execution model will be accomplished via a single pipe. Client and Server messages will be sent on the same pipe, with a special mux on either end capable of distributing requests or responses as appropriate. This will allow communication between two hosts when only one of the hosts is addressable, it will also allow easier tunneling of communication paths. Extensions on this mux to allow bridging of network domains will also have to be investigated.&lt;br /&gt;&lt;br /&gt;The essential idea is that each participant in the unified environment will run their own instance of the execution model. They will communicate directly with that instance in order to interact with other nodes (through their instances). In other words, every thread talks to its local instance, and the instances are responsible for coordinating with eachother. This keeps the model decentralized and should allow for enhanced latencies when dealing with local resources versus remote resources.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Examples&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to validate the interfaces described above, I'd like to run through a few scenarios of user or application interaction with Brasil.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Kirin Hybrid Cluster&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first use case we will explore is the use of this mechanism within our KIRIN cluster, which is a set of opteron workstations running Linux with GPU peripherals and CUDA runtimes. We want to be able to allocate machines (and GPUs) to run distributed applications on, and have some rudimentary communication mechanisms for control of the threads of the application as well as a communications channel for communicating results back to the initiating host as segments of computation complete. In our case, the initiating host is a Mac Pro laptop running its own instance of CUDA in order to visualize the results of the computation.&lt;br /&gt;&lt;br /&gt;For the purposes of this example, lets say our application is a computational intensive imaging application. The image to be processed is a large file on the disk of the initiating host. The front-end application is setup to split up the image into uniform tiles and provide the tiles to the distributed worker threads to process and return the processed tile back to the initiating host.&lt;br /&gt;&lt;br /&gt;The master thread parses the image file to a sufficent degree in order to determine an upper bound on the number of logical instances which would be required to process the image completely in parallel. The user, either by parameter, configuration file, or environment may limit the maximum number of requested logical gpu instances. It then requests reservation of that many GPU instances across the cluster and initiates execution of subject threads built using the CUDA runtimes. These subject threads then block on reading their standard-in to request work. The master thread, who has references to the stdin, stdout, and stderr of each subject thread instance issues work assignments by sending a relative path to the master file along with coordinates specifying the tile that the thread in question is instructed to process. It is important to note here that, following the xcpu2 model, the subject threads have the same file system namespace as the initiating thread. As threads complete their assigned work, they can either write an image file of their own to the shared file system or send the results over standard out directly to the master thread. Upon receiving results, the master thread can issue more work, or instruct the subject thread to terminate and release the resource.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nbtXd3baZsQ/ShNVlarisjI/AAAAAAAAAOc/W2rmK2tSzk4/s1600-h/kirin-proc.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 114px; height: 320px;" src="http://1.bp.blogspot.com/_nbtXd3baZsQ/ShNVlarisjI/AAAAAAAAAOc/W2rmK2tSzk4/s320/kirin-proc.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5337704084669641266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;center&gt;Figure 3: Kirin Task Example&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;The master thread can coordinate this activity and communication directly using the synthetic file system, but it is much more likely that it will do so via a simple library API. Specialized versions of this library can be constructed for certain classes of application and provide more advanced facilities such as Cilk-like work stealing, data pipelining between computational elements (ala PUSH), or transactional semantics enabling either checkpoint/restart or triple modular redundancy of computation. Eventually, it would be nice to incorporate these facilities into runtimes which manage issues involving different instruction set architectures.&lt;br /&gt;&lt;br /&gt;From an implementation perspective, we really have two different organizational elements: physical resource allocation and task based execution. The first thing we need to do is allocate some number of GPU nodes where the maximum is defined by user specification or the actual available resources. There is not really an existing example mechanism which allows us to allocate a group of physical resources without logical sharing or blocking. We could query existing available resources and then dispatch tasks using the clone mechanism - but there is an inherent race condition between the checking of the resources and the dispatch of children.&lt;br /&gt;&lt;br /&gt;A strawman approach is to use a task-based organization - the master thread opens the clone file on the task view of the execution model. This clone file creates a new task session id, and creates a subdirectory with that session id. Subsequent reads and writes to the fd which was opened as the clone file will be directed to the ctl file of that subdirectory following the typical clone semantic of Plan 9.&lt;br /&gt;&lt;br /&gt;For the purposes of this strawman, lets say his image has 100 tiles to process. He issues a command to reserve 100 GPUs, and gets an error response that only 4 GPUs are available. He re-issues the request asking for 8 GPUs, which succeeds. This creates 8 new subdirectories in the task session directory, each representing a thread on the local or remote system which has been allocated a GPU resource. Since he is executing the same subject thread on the resources he can use his existing fd handle to issue the execute command to all subject threads. The master thread can then open the data file of each subdirectory in order to obtain a communications handle to the remote threads on which he can issue work assignments and read results (or pointers to results).&lt;br /&gt;&lt;br /&gt;When finished, he can cleanup the allocated resources by closing the handle to the ctl file. Individual threads can be shutdown or retasked by opening their individual ctl files present in the subject thread subdirectories.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;BG/P Allocation and Debug&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On more of an infrastructure focus, I'd like to use the unified execution model to be able to allocate resources and provide hooks to debug the kernel using either JTAG hardware (for BG/P) or hooks in the hypervisor (for Cloud). As mentioned earlier, Blue Gene presents an interesting problem in that physical partitions of the machine have to be allocated at some fixed granularity (such as 1 IO node and 64 compute nodes on the BG/P at ANL). Another interesting factor is that physical machine allocations are handled by a batch-job allocator underneath. So, we need to be able to cope with group allocations of multiple granularities, and must be prepared for waiting for extended period of times while the parition is allocated or resources for that size partition become available.&lt;br /&gt;&lt;br /&gt;A model similar to the resource reservation methods described in the Kirin cluster should allow us to request various physical partition sizes and characteristics. Instead of failing when resources aren't available, an option to the reservation can choose to block the request until resources become available. Since Blue Gene can be configured to boot different kernel images, the reservation mechanism can specify alternate kernel profiles and/or parameterization to the various kernels. Configuration commands needs to be set prior to issuing the reservation command.&lt;br /&gt;&lt;br /&gt;The top level control file can be used to issue commands to Cobalt (such as terminating an allocation) and can also be used to query both the status of our task and obtaining the status of other runs on the machine and direct access to various machine log files.&lt;br /&gt;&lt;br /&gt;The hierarchical nature of Blue Gene's physical topology creates another interesting difference. When the reservation successfully completes, the top level session directories will be for the IO nodes for a particular logical partition. The compute nodes accessible via that IO node will be represented in session directories under the IO node's session directory.&lt;br /&gt;&lt;br /&gt;For Blue Gene we are interested in both remote command execution and physical node access and debug. As such, in addition to the normal execution control and status files in the IO node and Compute Node directories, we'll also provide top-level debug and memory access. Since each of the cores on a BG/P have separate hardware registers, we'll provide access to the per-core registers in subdirectories. Since the normal session syntax uses numbers which will relate to processes executing on that node, we'll use alphabetically identifiers (A, B, C, D) for the various cores. Debug commands issued to the ctl file in the core subdirectories will only effect that core, while debug commands issued at the top level will effect the entire node.&lt;br /&gt;&lt;br /&gt;While initiating tasks from the physical hierarchy view can be useful, it is much more likely we'll want other configurations for starting new tasks. One possibility is the desire to start a task on a neighbor node in the torus. In order to do this, we'll need to provide an alternate organizational topology for the node session access which takes the form of the Torus's three dimensional configuration. This can provided in an alternate attach namespace reachable from the partition's top-level or through a dot-dot-dot shortcut. Beyond physical or network topology, it may be desirable to provide user allocated node groupings, this will be accomplished through a new special session control file named tag which will be present at all levels of the hierarchy and can be used to apply new tags to individual nodes or nodes and their children. Access to nodes using these tags can be done through a semantic search hierarchy also accessible from the top level of the partition session directory.&lt;br /&gt;&lt;br /&gt;So, to execute a Monte Carlo simulation on a BG/P, the Master Thread of the application needs to first request a BG/P partition of the appropriate size (lets say 512 nodes). If that size allocation is not immediately available, it returns an error, and the master thread re-requests the 512 nodes with an option which blocks the read until the resources become available. Once the resources become available, the read unblocks.&lt;br /&gt;&lt;br /&gt;The user sets up the Monte Carlo thread execution on all available cores passing parameters via stdin just like in the Kirin example. For the sake of the example, lets say some of the Monte Carlo threads have a state where they need to spawn off additional simulations with slightly different parameters to complete their simulation. When these threads reach this state, they can initiate thread execution using their local instance of the unified execution model. It will find nodes that have either already completed their simulation or those who have a lower load average and schedule the new threads there. Alternatively, the user can provide parameters specifying they want the execution to completely closer to the initiating thread and the execution model will try to schedule the thread on the same node, or on a node which is located closer from a network point of view.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Discussion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The examples in the prior section map out a set of experiments to explore various interface and interaction models for the unified execution model. They are not intended to provide a complete set detailing the scope of its functionality, but serve as a jumping off point to evaluate and extend the ideas.&lt;br /&gt;&lt;br /&gt;Another thing we didn't talk about at all as how this relates to the aggregation infrastructure discussed in the MTAGS paper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-8448298805736493564?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/8448298805736493564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=8448298805736493564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8448298805736493564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8448298805736493564'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/unified-execution-model.html' title='Unified Execution Model'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_nbtXd3baZsQ/ShNUyuLQsKI/AAAAAAAAAOM/eYpMTN35v_k/s72-c/hybrid-topology.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-7424910210832000760</id><published>2009-05-19T17:22:00.003-05:00</published><updated>2009-05-19T17:43:03.105-05:00</updated><title type='text'>And Now For Something Completely Different</title><content type='html'>I realize that I don't post much here, part of the reason is that I tend to like to post prepared ideas or results. The problem is that I then end up writing rougher ideas in some other notebook where they get lost (either physically or in the deluge of similar notes). For the longest time I was keeping these notes on my tablet PC in ink form which was a natural and convienent way to organize my thoughts and do illustrations without much thought.&lt;br /&gt;&lt;br /&gt;However, recently I've switched to the macbook pro as my primary platform and so have more or less left the tablet behind and now find myself blogging in files using ACME, or in private Plan 9 wikis, or even within source control systems. The problem is these different sources end up being difficult to search and correlate. Since almost everything I'm doing is now publically funded, there is less reason to keep anything confidential.&lt;br /&gt;&lt;br /&gt;So, in the spirit of transparency I'm going to start trying to use this blog to keep my thoughts and rough ideas. &amp;amp;nbsp;More refined versions which come out of these rough thoughts will make there way to the &lt;a href="http://www.caerwyn.com/ipn/"&gt;Inferno Programmer's Notebook&lt;/a&gt; (if appropriate), &lt;a href="http://www.linux.com/community/blogs/blogger/ericvh/"&gt;my Linux.com blog&lt;/a&gt; (in particular for v9fs bits), or my &lt;a href="http://www.ibm.com/developerworks/mydeveloperworks/blogs/ericvh/"&gt;DeveloperWorks blog&lt;/a&gt; (for IBM specific stuff).  For more personal stuff, things tend to trickle through on &lt;a href="http://www.twitter.com/airwick"&gt;my twitter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'll try to keep things tagged appropriately to help manage the signal/noise ratio for folks looking for specific bits (and also to help enhance my searchability.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-7424910210832000760?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/7424910210832000760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=7424910210832000760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7424910210832000760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7424910210832000760'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/05/and-now-for-something-completely.html' title='And Now For Something Completely Different'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-8939798757231618518</id><published>2009-04-16T14:24:00.003-05:00</published><updated>2009-04-16T14:29:28.148-05:00</updated><title type='text'>quick idea: plumbing twits</title><content type='html'>Because I own a tablet, I use evernote as my online notebook to organize thoughts and whatnot.  They introduced a twitter bot this week that allows me to twit notes to my Evernote notebooks.  It struck me that this is kind of the tip of the iceberg -- I'd like to play with the idea of using plumber(1) on Plan 9 to route tagged plumbed messages to a uBlog, Blog, Wiki, Todo list, or whatever.  I suppose this might be obvious to some people, but I think it would be really useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-8939798757231618518?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/8939798757231618518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=8939798757231618518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8939798757231618518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8939798757231618518'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/04/quick-idea-plumbing-twits.html' title='quick idea: plumbing twits'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-937395188296878048</id><published>2009-04-01T20:29:00.004-05:00</published><updated>2009-04-01T20:44:56.311-05:00</updated><title type='text'>public git hosting services</title><content type='html'>I've been using git since its inception for maintaining the v9fs kernel module.  For personal projects and branches I was using my home server, but my cable modem (and my sysadmin skills) aren't always that stable.  For my Inferno branches I started using google code, but what I really wanted was the ability to create private branches (and have others create branches of my work), but still have the ability to track them in some way.&lt;br /&gt;&lt;br /&gt;Today I checked out two public git hosting services (well, public for open source projects) -- gitorious and github.&lt;br /&gt;While gitorious seems a bit more open, and allows private forks while maintaining links -- githubs integration with code review makes it a bit more preferable to me.  I'm thinking of moving the v9fs development branches to it and just using the kernel.org git repo for my upstream branches.  The idea being if others want to branch my repo to add functionality or fix bugs I haven't had time to get to, this should make it easier.&lt;br /&gt;&lt;br /&gt;github is also linked to lighthouse, which provides bug tracking and milestones.  We've been using kernel.org's bugzilla for v9fs, and while no one seems to use it besides me, its fine and that way it links in to the overall kernel bug statistics.  The lighthouse approach also can be used to track milestones and component feature implementations.  I've tried to track roadmaps and whatnot in the past using launchpad -- but its lack of git integration made it ultimately more annoying than useful.  Its not clear to me that lighthouse will be any better, but I'm going to try it with a pet project for now and maybe switch v9fs milestones over to it later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-937395188296878048?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/937395188296878048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=937395188296878048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/937395188296878048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/937395188296878048'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/04/public-git-hosting-services.html' title='public git hosting services'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-3469046278502535056</id><published>2009-03-26T18:53:00.003-05:00</published><updated>2009-03-27T11:44:44.980-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Plan 9 Commentary</title><content type='html'>It's a real shame there isn't a good tool in place to help update (and keep up to date) code commentary like Nemo's.  Such commentary is really a great resource to refresh one's memory or learn about the system -- it seems like there should be a way to link the commentary to something more similar to the unified diff format instead of line numbers -- of course that is only half the problem -- if no one goes through and updates the data its pretty useless.  I wonder if it would be worthwhile to transcribe Nemo's comments inline using a light-weight literate programing style -- that would certainly help encourage folks to update the commentary when changing the code (and moving it around respectively) -- of course it would also piss off anyone that doesn't like literate programing which often makes it so you can't see the code for the comments.  It strikes me that the various code review tools have nice hooks to commentary, but I'm not sure these are kept linked in the main tree (or just in the patch).&lt;br /&gt;&lt;br /&gt;Along the same lines, we are far overdue for joining the podcasting bandwagon -- I've spent the past couple months using my gym time to take in lectures from stanford, apple, nvidia, google, and others all on my iphone.  It would be really nice to have a set of videos for the Plan 9 community on everything from getting started to kernel development.  At the very least I'm going to make an effort to cover my existing and future work with such video podcasts as an alternative, more effective way of getting information across.  Time permitting I'd like to do the same thing for all components of the system, perhaps stepping through Nemo's walkthrough as a model.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-3469046278502535056?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/3469046278502535056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=3469046278502535056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3469046278502535056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3469046278502535056'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2009/03/plan-9-commentary.html' title='Plan 9 Commentary'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-4638920253097845639</id><published>2008-12-03T11:34:00.003-06:00</published><updated>2008-12-03T12:54:22.827-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>srv² - next generation service registry</title><content type='html'>The &lt;a href="http://plan9.escet.urjc.es/magic/man2html/3/srv"&gt;srv(3)&lt;/a&gt; device seems like the ugly stepchild within the &lt;a href="http://plan9.bell-labs.com/plan9"&gt;Plan 9&lt;/a&gt; system.  In a system focused on distributed resources, it is a node-specific service registry.  Within Plan 9, its a node-global resource and doesn't allow for multiple instances which can be placed in different dynamic private name spaces.  Device resources are treated separately, having separate mount shortcuts instead of being integrated into the &lt;a href="http://plan9.escet.urjc.es/magic/man2html/3/srv"&gt;srv(3)&lt;/a&gt; registry.  In common practice users must rely on static configuration files to access network resources and post them in the local &lt;a href="http://plan9.escet.urjc.es/magic/man2html/3/srv"&gt;srv(3)&lt;/a&gt; instance.  This static nature relies on alternate layers to provide reliability and scalability for resource access.&lt;br /&gt;&lt;br /&gt;In order to explore potential solutions to these issues and inconsistencies I've been thinking through some ideas for extending the &lt;a href="http://plan9.escet.urjc.es/magic/man2html/3/srv"&gt;srv(3)&lt;/a&gt; concept to be more useful in a distributed environment and allow better integration with core Plan 9 principles.  In all cases I'll likely implement it as a synthetic user space file server which will use the normal &lt;a href="http://plan9.escet.urjc.es/magic/man2html/3/srv"&gt;&lt;span class="nfakPe"&gt;srv&lt;/span&gt;(3)&lt;/a&gt; as a back-end.  Add a concept of scope to the service registry -- right now there is a single level of scope on Plan 9 (node-level).  &lt;a href="http://www.vitanuova.com/inferno"&gt;Inferno&lt;/a&gt; has multiple &lt;a href="http://www.vitanuova.com/inferno/man/3/srv.html"&gt;&lt;span class="nfakPe"&gt;srv&lt;/span&gt;&lt;/a&gt; instances via attach arguments, but nothing that really amounts to scope.&lt;br /&gt;&lt;br /&gt;The idea is to allow several automatic levels of scope as well as user-defined scopes:&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;ol&gt;&lt;li&gt;Program Group Level&lt;/li&gt;&lt;li&gt;User level&lt;/li&gt;&lt;li&gt;User group level&lt;/li&gt;&lt;li&gt;Node Level&lt;/li&gt;&lt;li&gt;Tree Pset&lt;/li&gt;&lt;li&gt;Immediate Neighbors (in Torus)&lt;/li&gt;&lt;li&gt;Cluster level&lt;/li&gt;&lt;li&gt;Social Network (Community Level)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;etc. (you get the idea)&lt;/li&gt;&lt;/ol&gt;&lt;/ul&gt;&lt;/ul&gt;The idea of automatically propagating/discovering neighbor services and cluster services is linked to ideas resulting from our port to Blue Gene as part of the &lt;a href="http://www.research.ibm.com/hare"&gt;FastOS work&lt;/a&gt; -- but also is related to previous ideas I've had related to &lt;a href="http://graverobbers.blogspot.com/2007/02/collab.html"&gt;collaboration services&lt;/a&gt;.&lt;br /&gt;When one registers services at scopes larger than node-level, the local srv² communicates with appropriate neighbors to make sure their registry for that scope is updated.  In this way, services are immediately available in the other registries.  I'd like to explore both the push and pull methods for this update, a lazy pull/poll may be more appropriate than a push.  One thought was to support a plug-in style architecture for this allowing control of different scopes to be maintained by different applications.  This could allow for different membership/authentication schemes as well as different discovery.  In such an approach srv² would actually only be responsible for overall management of the hierarchy.&lt;br /&gt;&lt;br /&gt;In order to keep things tidy, there are some additional nit-picks with srv(3) which must be fixed.  In order to organize the various scopes and the larger potential set of services I'd like to make the srv² registry a deep hierarchy.  This may just be used for scope or may be used for additional levels of organization.  I'm going to start simple with the top layer identifying scope and the second level being the services associated with that scope.  However, I'm going to structure the implementation to allow nested scopes and organizational constructs.&lt;br /&gt;&lt;br /&gt;Another nit-pick I've had with srv(3) is the lack of the ability to use group permissions.  One of the scope concepts is to allow group scopes, so in order to support this we'll need to incorporate group management into the srv² infrastructure.  There is an unfortunate amount of complexity here.  Groups should have scopes as well, allowing node local groups as well as multiple levels of cluster groups.  It would be nice to allow user defined groups instead of just system defined groups -- and this sounds more like ACL's rather than traditional UNIX groups.  I'm not confident on a path to pursue and would welcome suggestions.&lt;br /&gt;&lt;br /&gt;The requirements of our FastOS research include reliability and scalability.  For cluster based services it would be nice to integrate support for load-balancing and fail-over directly into the srv² registry.  If we use srv² in a similar way to how we use srv(3) then we'd only be able to load-balance or fail-over at mount time (at least without adding an additional layer).  An alternative would be to provide an auto-mount feature which would attach to the service on crossing the mount point and automatically load-balance or fail-over the service as necessary.  There is a large degree of complexity here, and an inherent danger in doing anything automatically.  Still, for a certain class of service this style of resource and application, this form of access may be preferable.&lt;br /&gt;&lt;br /&gt;A final area I'd like to explore is discovery.  &lt;a href="http://swtch.com/plan9port/man/man7/ndb.html"&gt;ndb/local&lt;/a&gt; has always bothered me as being far to static.  Inferno had the concept of local discovery via the &lt;a href="http://www.vitanuova.com/inferno/man/8/virgild.html"&gt;virgild&lt;/a&gt; which would allow discovery on the local network.  With cluster functionality built into srv² we just need a way for the various srv² instances to discover each other.  Locally we could use a mechanism like virgild or utilize &lt;a href="http://www.blogger.com/www.zeroconf.org"&gt;zeroconf&lt;/a&gt;.  For broader discovery we could use central registries, perhaps utilizing &lt;a href="http://www.google.com/url?sa=U&amp;amp;start=1&amp;amp;q=http://pdos.csail.mit.edu/papers/chord:sigcomm01/chord_sigcomm.pdf&amp;amp;ei=qL02SYHPIZ6Meri4sIQI&amp;amp;usg=AFQjCNEyQlYSNX2ajSyy_QhNlBZDmSH8IA"&gt;Chord&lt;/a&gt; concepts to make it a bit more scalable. Within our FastOS work we'd also like to explore hierarchical or toroidal organizations, scope, and discovery for our service registries.&lt;br /&gt;&lt;br /&gt;This will be ongoing work that I plan on implementing and exploring during the first quarter of 2009.  I'll update this blog with my experiences, and hopefully compile a paper towards mid-year with the results of the experiment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-4638920253097845639?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/4638920253097845639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=4638920253097845639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4638920253097845639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4638920253097845639'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/12/srv-next-generation-service-registry.html' title='srv² - next generation service registry'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-1281493616171245624</id><published>2008-11-10T13:29:00.000-06:00</published><updated>2008-12-03T13:30:53.585-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>Cross Post: lab 90 - Multicast DNS and Zeroconf (client portion)</title><content type='html'>I wrote up my experiences with adding zeroconf and mdns clients to Inferno in &lt;a href="http://www.caerwyn.com/ipn/2008/11/lab-90-multicast-dns-and-zeroconf.html"&gt;Lab 90&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-1281493616171245624?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/1281493616171245624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=1281493616171245624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1281493616171245624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1281493616171245624'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/11/cross-post-lab-90-multicast-dns-and.html' title='Cross Post: lab 90 - Multicast DNS and Zeroconf (client portion)'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-7542423001862015229</id><published>2008-10-24T09:43:00.005-05:00</published><updated>2008-10-24T15:03:06.057-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Is OP just CRUD? Give it a REST.</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Background&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-style-span"   style="  white-space: pre; font-family:Arial;font-size:10px;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/T04fKsD56LU&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/T04fKsD56LU&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  white-space: pre; font-family:Arial;font-size:10px;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YCcAE2SCQ6k&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/YCcAE2SCQ6k&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Octopus Protocol&lt;/span&gt;&lt;a href="http://www.9grid.net/IWP9/IWP9-Guardiola.mov"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.9grid.net/IWP9/IWP9-Guardiola.mov"&gt;http://www.9grid.net/IWP9/IWP9-Guardiola.mov&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;(Presentation) http://plan9.escet.urjc.es/ls/export/opiwp9.pdf&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;(Non-technical observation is that we need to get better at filming/editing our presentations, our production values suck!)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Observation&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So - what is being done in the Octopus Protocol is very similar to the current approach being taken by many web developers.  The primary difference between OP and the HTTP approach is that the OP Put method provides additional metadata.  You get a bit of a tradeoff in that 9P provides an authenticated persistent session, but this may make caching and other intermediary operations more difficult.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Discussion&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Protocol differences aside, there are some interesting opportunities here -- for one, why has anyone tried to write web applications using a synthetic file server as the "active" backing?  I alluded to this a bit earlier in my Service-Oriented File Systems Post, but understanding more about how the web applications use REST I don't see any reason why an httpd server couldn't be constructed which interpreted HTTP PUT operations against a path as write operations against a file which are followed by a read of that file to get the result (error) to send back to the user.   I'm not sure if it would make sense to incorporate the service documents as something generated by httpd or by the synthetic file system itself..probably better done in the synthetic file system so you could specify types of data as appropriate.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another interesting aspect is how Google App Engine works with these concepts, essentially you have a template file which maps URI paths to application handlers.  This essentially is like a namespace specification, but it might also be useful as a method to compose synthetic file systems out of simple pieces where each component knows how to read/write (maybe just via stdin/stdout) and more advanced components could handle things like dynamic directory structures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, you could think of a new multi-faced model for UI development which in some ways is similar to the O/mero approach.  In one "view" of the namespace you create directories and files representing the various UI elements -- included in their descriptions are attributes defining their characteristics, types, and position (most likely hierarchical and not absolute) -- another "view" of the same namespace would export html (and javascript?) elements comprising the form which satisfies the specification made in the other view (this could then be skinned with CSS to make it pretty), and the final view of the namespace is an active synthetic file system which would accept the file reads/writes from the HTTP put operations against particular elements of the form.  What you end up with is essentially a shell/namespace/filesystem SDK for building web-apps.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-7542423001862015229?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/7542423001862015229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=7542423001862015229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7542423001862015229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7542423001862015229'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/10/is-op-just-crud-give-it-rest.html' title='Is OP just CRUD? Give it a REST.'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-7861761575694220275</id><published>2008-08-26T16:44:00.003-05:00</published><updated>2008-08-26T16:52:45.704-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><category scheme='http://www.blogger.com/atom/ns#' term='Venti'/><title type='text'>Venti and Linux</title><content type='html'>I've been playing around with the plan9port's version of Venti in a bit more depth lately and thinking about Linux-specific optimization opportunities.  I've got more thoughts than I'm prepared to write down right now, but I figured I should start somewhere.&lt;br /&gt;&lt;br /&gt;First, there seem to be a number of shortcomings for large systems.  We've actually just installed a new 36TB storage system here at work with 3 file server nodes connected to it with 64GB, 64GB, and 12GB of DRAM respectively.  One of the first things I ran into is Venti seems to behave poorly if you try to give it too big of a mem, icmem or bcmem (i was going for 4GB icmem and 2GB bcmem and mem) -- I'm fairly certain something is failing silently, but haven't had a chance to track it down.  Another potential shortcoming on these 16-way, 16-way, and 4-way systems is that venti appears to be single threaded at its core so most of the processing power of these systems is idle while performance suffers.&lt;br /&gt;&lt;br /&gt;Most of my current experimentation revolves around looking at using venti to backup and back block devices.  vbackup does a reasonable job of this, but the fact that it scans the entire volume is a little problematic (my 80 gb home directory takes 45 minutes to go through even if I haven't modified anything).  I'm currently looking at using lvm2/device-mapper to take snapshorts to make backups more coherent and to track changes since the last venti so I only have to have venti operate on changed blocks.  This should allow much tighter granularity on dumps than nightly.&lt;br /&gt;&lt;br /&gt;Of course, there is little need to keep 5-minute, 15 minute, or even hour level granularity snapshorts forever.  I've started to think through a hierarchical venti approach which used a local 'transient' venti which would use a recycled arena for the transient snapshots and then using venti/copy to send coarser granularity snapshots to the next level of the hierarchy (which could be another cache server or be the central venti server).&lt;br /&gt;&lt;br /&gt;Besides using device mapper for helping to take snapshots -- it could also be used to create caches and or cow devices on top of a venti score -- assuming I can get something to look like a disk or a disk image that actually serves a vbackup score as a disk.&lt;br /&gt;&lt;br /&gt;More later...there's a bunch of stuff I need to play with to understand how the various pieces I'm thinking of interact.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-7861761575694220275?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/7861761575694220275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=7861761575694220275' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7861761575694220275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7861761575694220275'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/08/venti-and-linux.html' title='Venti and Linux'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-4083653719681391859</id><published>2008-08-10T12:23:00.002-05:00</published><updated>2008-08-10T12:25:17.306-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Plan 9 Authentication in Linux paper available</title><content type='html'>Ashwin's paper on implementing Plan 9 authentication and capability device for Linux is now available for free from the ACM Archives along with the rest of the special issue on the Linux kernel that I helped co-edit:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://portal.acm.org/toc.cfm?id=1400097"&gt;http://portal.acm.org/toc.cfm?id=1400097&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-4083653719681391859?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/4083653719681391859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=4083653719681391859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4083653719681391859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4083653719681391859'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/08/plan-9-authentication-in-linux-paper.html' title='Plan 9 Authentication in Linux paper available'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-3521476885268453132</id><published>2008-06-19T19:15:00.001-05:00</published><updated>2008-06-19T19:17:15.924-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>9p/virtio Slides Available</title><content type='html'>The slides I presented at KVM forum on using 9p over virtio to provide a paravirtualized file service are available on the &lt;a href="http://kvm.qumranet.com/kvmwiki/KvmForum2008"&gt;KVM wiki &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-3521476885268453132?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/3521476885268453132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=3521476885268453132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3521476885268453132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3521476885268453132'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/06/9pvirtio-slides-available.html' title='9p/virtio Slides Available'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-9216639446257970740</id><published>2008-04-16T14:44:00.002-05:00</published><updated>2008-04-16T14:45:49.116-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>trans_fd_simple</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://spreadsheets.google.com/pub?key=pLebQTr36aFzGau36zki_ZA&amp;amp;oid=1&amp;amp;output=image"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://spreadsheets.google.com/pub?key=pLebQTr36aFzGau36zki_ZA&amp;amp;oid=1&amp;amp;output=image" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Did some really basic performance checks on trans_fd_simple compared to the older code and comparing single lock with reader/writer lock protection on the socket.  Turns out my thinking with reader/writer lock was flawed and there are race cases (hence only the single threaded result).  Long and short of it appears to be sort of what we figured, that the simple approach does better on single threaded workload due to less overhead, but does much worse on multi-threaded due to added latency and what not.  I ran against npfs as well just to check if earlier thinking about whether or not multi-threaded npfs added much -- it appears to add nothing but overhead in this case.&lt;br /&gt;&lt;br /&gt;This particular case was from a qemu hosted linux talking to the simulation host server -- which isn't particularly good.  I'm going to replicate this test on the blade regression cluster, but wanted to do a quick check before moving on to scatter/gather implementations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-9216639446257970740?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/9216639446257970740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=9216639446257970740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9216639446257970740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9216639446257970740'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/04/transfdsimple.html' title='trans_fd_simple'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-5052500617326016736</id><published>2008-04-16T13:46:00.004-05:00</published><updated>2008-04-16T17:28:19.603-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Service Oriented File Systems</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Its fun to abstract and think about web2.0 concepts in terms of Plan 9 concepts.  Abstract away the gorp that makes up their implementations and think about some of the fundamental concepts.  When interfaces are files, mashups are binds.&lt;br /&gt;&lt;br /&gt;The larger picture here is about keeping this simple, language independent, and client independent.  I'd like an infrastructure that I could build simple web services out of that can be viewed with a browser, or with a rich-client (like acme plug-ins).  I'd like the front-end of these services to be defined in the same way the Octopus approach defines normal GUI's (except from a web-browser, the widgets are implemented by Java script).  I'd like the back-end of these to be akin to big table and the chubby lock service, with a back-back-end that is simply Venti versus a database or XML.&lt;br /&gt;&lt;br /&gt;I'll admit I'm probably naive about all of this, not having really worked on client-facing applications for some time, but I think it would be a fun thought exercise to go through and perhaps a nice refresher to actually try and implement.  While part of the goal is to keep things language independent, I'll probably do things under Inferno to keep them portable for me and open up the potential for interaction with the Octopus crowd.&lt;br /&gt;&lt;br /&gt;Of course, this all falls under the copious spare time which I have a definite deficit of -- however, I think dedicating one day a week is doable and I should be able to combine this with my constant desire to get back and look at collaborative facilities (aka warren) under Plan 9 and Inferno.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-5052500617326016736?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/5052500617326016736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=5052500617326016736' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5052500617326016736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5052500617326016736'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/04/service-oriented-file-systems.html' title='Service Oriented File Systems'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-1781723227648672156</id><published>2008-04-14T09:33:00.002-05:00</published><updated>2008-04-14T09:33:57.014-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>v9fs updates</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;With the 2.6.25 merge window rapidly approaching, it looks like I'm going to have to hold off on merging the reorganization until 2.6.26.  At the moment, I'm still fiddling with the transport API and specifically the rewrite of the file descriptor based transport which is used for sockets, named pipes, etc.  With a 2.6.26 target, I should be able to get the async and scatter-gather rewrites complete as well as merge the in-kernel server code from lucho.&lt;br /&gt;&lt;br /&gt;As part of the exercise I've created a "simple" version of the code which is synchronous and single threaded (to match spfs).  My motivation was to scale back and figure out what the core pieces were in the fd transport, as well as to have a useful performance baseline to measure the overhead (and advantages) of a more asynchronous model.  A nice side-effect is that I also have a really simple and straightforward transport module which can be used as an example for those wanted to write their own transports.  I'm not quite certain whether I want to merge the simple transport mainline though -- although I may merge it into trans_fd in order to maintain it as a baseline case -- it really amounts to a different request member function which could easily be selected via an option.&lt;br /&gt;&lt;br /&gt;In parallel I've setup a few blades in order to measure performance, and perhaps more importantly performance regression.  When complete, I hope to publish historical performance regression results back to kernel 2.6.14.  At the moment I'm trying to do all collection of results and graphs inside Google docs, which should make an easy place to keep things up to date and simultaneously publish the data.  I need to look around to see if anyone has hooks for the Google Data API so I can have my regression framework update the results automatically instead of me having to go in and manually enter the data.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-1781723227648672156?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/1781723227648672156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=1781723227648672156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1781723227648672156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1781723227648672156'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/04/v9fs-updates.html' title='v9fs updates'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-4956207457737751191</id><published>2008-02-26T08:27:00.004-06:00</published><updated>2008-04-09T17:09:22.134-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>GSoC 2008 Ideas</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;My Plan 9/Inferno summer of code ideas (otherwise known as projects I wish I had more time for) - projects should take no longer than 5 weeks to complete (including ramp up, debug, and packaging) -- conservatively projects should be completable in 3 weeks by experienced P9/Inferno developers and 2 weeks by folks unfamiliar with p9/inferno development environments.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;mount.9P helper program for v9fs including packaging for debian and fedora -&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;hueristic for determining transport type&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;DNS support for resolving hostname &amp;amp;lt;-&amp;amp;gt;ip address&lt;/li&gt;&lt;li&gt;ssh-based tunneling support (will require server work as well)&lt;/li&gt;&lt;li&gt;man pages&lt;/li&gt;&lt;li&gt;debian packaging&lt;/li&gt;&lt;li&gt;rpm packaging&lt;/li&gt;&lt;li&gt;(stretch) authentication support (w/p9p)&lt;/li&gt;&lt;li&gt;(stretch) authentication support (w/o p9p)&lt;/li&gt;&lt;li&gt;(stretch) integration with idmap solution&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;since this is relatively straightforward it will really need to be "super" version including support for ssh tunneling, authentication,  etc.&lt;/li&gt;&lt;li&gt;idmap solution for v9fs - maps local uids/gids/error-codes to strings&lt;/li&gt;&lt;ul&gt;&lt;li&gt;userspace daemon to provide mapping&lt;/li&gt;&lt;li&gt;hooks in v9fs to use mapping&lt;/li&gt;&lt;li&gt;(stretch) synthetic file server approach to update mappings&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;OLPC Inferno Environment&lt;/li&gt;&lt;ul&gt;&lt;li&gt;fontfs - on-demand ttf solution&lt;/li&gt;&lt;li&gt;metafs - abstract metadata from underlying file system&lt;/li&gt;&lt;li&gt;(stretch) Integrate OLPC translation solution for Inferno&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;(stretch) OLPC oriented GUI toolkit, window manager, and toolbar&lt;/li&gt;&lt;li&gt;(stretch) Inferno approach to collaboration using file systems&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Source Control Management based on Venti backend&lt;/li&gt;&lt;ul&gt;&lt;li&gt;single branch version tracking with associated log file&lt;/li&gt;&lt;ul&gt;&lt;li&gt;add new files/directories&lt;/li&gt;&lt;li&gt;commit changes&lt;/li&gt;&lt;li&gt;checkout specific version #&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;(stretch) support multiple branches&lt;/li&gt;&lt;li&gt;(stretch) support repository sync (push/pull)&lt;/li&gt;&lt;li&gt;(stretch) support three-way merge&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;wrapper for p9p vbackup to make it more user friendly&lt;/li&gt;&lt;ul&gt;&lt;li&gt;wrapper which tracks venti scores based on volume being backed up&lt;/li&gt;&lt;li&gt;GUI admin tool&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;which sets up venti in partition(s) or with files&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;which assists in configuring backup intervals and volumes&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;(stretch) time-traveler like GUI for navigating/searching backups&lt;/li&gt;&lt;li&gt;(stretch) support for pruning and/or merging snapshots&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;GSoCFS for managing future community involvement with GSoC&lt;/li&gt;&lt;ul&gt;&lt;li&gt;synethtic file system and web interface&lt;/li&gt;&lt;li&gt;posting project ideas&lt;/li&gt;&lt;li&gt;voting for projects&lt;/li&gt;&lt;li&gt;registering student interest in projects&lt;/li&gt;&lt;li&gt;project milestone tracking&lt;br /&gt;&lt;/li&gt;&lt;li&gt;project blogs and wikis&lt;/li&gt;&lt;li&gt;post-summer project success metrics (subjective and objective)&lt;/li&gt;&lt;li&gt;(stretch) syndication points for community monitoring&lt;/li&gt;&lt;li&gt;(stretch) potential integration with SCM&lt;/li&gt;&lt;li&gt;(stretch) potential integration with some form of chat&lt;/li&gt;&lt;li&gt;(stretch) potential integration with name space sharing&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;(more to come...)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-4956207457737751191?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/4956207457737751191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=4956207457737751191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4956207457737751191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4956207457737751191'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/02/gsoc-2008-ideas.html' title='GSoC 2008 Ideas'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-5294275341323681333</id><published>2008-01-28T19:43:00.002-06:00</published><updated>2008-04-09T17:07:42.830-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>metafs</title><content type='html'>Since I wrote about it in my other post, I might as well explain metafs.  Basically in order to accommodate the OLPC  file system security model I need to maintain uid, gid, and mode bits for Inferno's view of the underlying file system separately.  This is actually a common need within hosted Inferno when you don't necessarily want to keep Inferno user's sync'd with system users.  In any case, this amounts to an overlay file system, which stores away the additional metadata.&lt;br /&gt;&lt;br /&gt;While I am tempted to keep a central database of the metadata, the most pragmatic solution would seem to either use extended attributes or a hidden file in each directory.  Since extended attributes are somewhat distasteful and not available anywhere, I'm going to start with the per-directory hidden file.&lt;br /&gt;&lt;br /&gt;In the future this same mechanism might be extendable to implement semantic file system extensions (or extended attributes for that matter) -- allowing for tagged organization and searching of the file system as well as alternative views such as a "journal" style temporal view (which might also be useful for backup purposes).  However, these extended metadata scenarios may beg a re-evaluation of the distributed versus centralized storage model.&lt;br /&gt;&lt;br /&gt;In any case, the basic plan is squirel away the extra meta data, indexed by the string filename/directory-name in a hidden file.  If the directory isn't writable by eve then no extended metadata will be written and the directory will default to the underlying uname/gname/mode -- however, if eve isn't able to access the files, the overlay won't be able to access the data -- so it's likely a moot point.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-5294275341323681333?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/5294275341323681333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=5294275341323681333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5294275341323681333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5294275341323681333'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/01/metafs.html' title='metafs'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2666888755203050212</id><published>2008-01-28T19:33:00.000-06:00</published><updated>2008-01-28T19:40:54.500-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>freefontfs - a styxserver inferno-lab</title><content type='html'>I've decided doing the dynamic free font file system would be a more gentle introduction to using the new Inferno styxservers modules than a full-blown filterfs like what we plan for metafs.&lt;br /&gt;&lt;br /&gt;The most appropriate example would appear to be mntgen.b (which allows for dynamic walk based creation in /n).  It uses both the styxservers facilities and the navigator and has a dynamic nature similar to what I want for freefontfs.&lt;br /&gt;&lt;br /&gt;Fonts are comprised of two types of file, the base file (&lt;name&gt;.&lt;size&gt;.font) and subfonts (&lt;name&gt;.&lt;size&gt;.&lt;range&gt;).  We only want to generate (and cache) files as they are accessed.  The base available &lt;name&gt;'s will be derrived from crawling a directory for ttf files or perhaps from a configuration file.&lt;br /&gt;&lt;br /&gt;Following mntgen, it looks like it would be much more simple to keep it as a single level hierarchy (much like /n) -- this may be possible as all the necessary information is encoded in the filename.  We just need to parse the single walk correctly.&lt;br /&gt;&lt;br /&gt;One question is whether we should prepopulate the cache with a base font size for every ttf available.  This seems like a reasonable idea, but probably wouldn't even be necessary in many situations -- perhaps we can leave it as a config option.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2666888755203050212?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2666888755203050212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2666888755203050212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2666888755203050212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2666888755203050212'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/01/freefontfs-styxserver-inferno-lab.html' title='freefontfs - a styxserver inferno-lab'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-5951900569411607686</id><published>2008-01-28T09:26:00.001-06:00</published><updated>2008-04-09T17:07:53.397-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>inferno-olpc circa 1/28/08</title><content type='html'>This week's update to inferno-olpc includes OLPC-optimized fonts and a customized logon with two extensions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;it binds the Inferno activity "writable" area to important areas of the Inferno name space which the user may want to write to (/usr, /services, /keydb, /tmp).  This will be necessary for the next OLPC update which will start enforcing security (including only allowing writing to the activity writable area of the file system.  Also bundled is a day-one scenario which will setup template directories to bind from and copying relevant files.&lt;/li&gt;&lt;li&gt;when logon can't find a user it will now prompt to create the user by copying the template /usr/inferno directory to /usr/username.  This can probably be generalized back into the standard Inferno base.&lt;/li&gt;&lt;/ul&gt;I also have a "customized" toolbar which just limits the size of labels to 15 characters so you don't get the awful line wrap.  This is a stopgap, a better toolbar metaphor needs to be developed for the OLPC version of Inferno.   I also augmented wmsetup with a larger set of applications.&lt;br /&gt;&lt;br /&gt;I had a larger agenda that included social-network style "profiles" and integrated security/password setup.  But there were too many corner cases to test and "bullet-proof" so I decided to hold that off for later and maybe just incorporate those functions into separate applications.&lt;br /&gt;&lt;br /&gt;I'm still a little uncertain of how I want to handle authentication and security.  On one side, there could be a central "schoolserver" to setup authentication against.   However, as most of the current users don't have such a server, having a pure peer-to-peer mode is probably preferable.  Given that every laptop will be an auth-server then, do we setup a laptop wide authentication setup, or do we do a per user authentication setup.  The later would seem to make more sense to me as the user-provided password wouldn't have to be stored anywhere and could be use to setup keyfs and the user's own authentication secrets.  Other users "registering" with that user for the purpose of collaboration could then provide their own secrets in his keydb, etc.  I'm not sure if that makes sense or if there is a better model I should be considering.&lt;br /&gt;&lt;br /&gt;The file system security is another pain.  Inferno users won't necessarily equal underlying system users (a common problem).  This will be made worse with the new OLPC security enforcement which may have different uid's for each "instance" of Inferno (but the same "gid").  I think the right thing to do is a new version of devfs which always keeps group permissions open in the underlying fs and uses extended attributes or some other mechanism to maintain Inferno uid's and gid's for the files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-5951900569411607686?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/5951900569411607686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=5951900569411607686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5951900569411607686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5951900569411607686'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/01/inferno-olpc-circa-12808.html' title='inferno-olpc circa 1/28/08'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2772749887457815201</id><published>2008-01-23T08:54:00.000-06:00</published><updated>2008-01-23T09:01:24.586-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>Inferno Enabled</title><content type='html'>I've resurrected the Inferno Enabled sticker logo.&lt;br /&gt;&lt;br /&gt;PNG Version:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nbtXd3baZsQ/R5dVsMsJeAI/AAAAAAAAAF8/ZhasdvKRRkU/s1600-h/inferno-enabled-black.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_nbtXd3baZsQ/R5dVsMsJeAI/AAAAAAAAAF8/ZhasdvKRRkU/s320/inferno-enabled-black.png" alt="" id="BLOGGER_PHOTO_ID_5158686115985192962" border="0" /&gt;&lt;/a&gt;SVG Versions are available in &lt;a href="http://inferno-olpc.googlecode.com/files/inferno-enabled-white.svg"&gt;white&lt;/a&gt; and &lt;a href="http://inferno-olpc.googlecode.com/files/inferno-enabled-black.svg"&gt;black&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2772749887457815201?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2772749887457815201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2772749887457815201' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2772749887457815201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2772749887457815201'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/01/inferno-enabled.html' title='Inferno Enabled'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_nbtXd3baZsQ/R5dVsMsJeAI/AAAAAAAAAF8/ZhasdvKRRkU/s72-c/inferno-enabled-black.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-8226202982769463330</id><published>2008-01-21T16:38:00.001-06:00</published><updated>2008-04-09T17:08:06.042-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>Infernal OLPC repository</title><content type='html'>I've reset up my Inferno git repository on &lt;a href="http://git.9grid.us/git"&gt;http://git.9grid.us/git&lt;/a&gt; based on a mirror of Forsyth's  &lt;a href="http://code.google.com/p/inferno-os"&gt;SVN repository&lt;/a&gt;.  Included now is my working OLPC modifications repository which contains both my core-Inferno patches as well as new mk rules for packaging.  I'm going to move on to better OLPC applications support now, but there probably won't be an update on that until after next weekend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-8226202982769463330?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/8226202982769463330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=8226202982769463330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8226202982769463330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/8226202982769463330'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/01/infernal-olpc-repository.html' title='Infernal OLPC repository'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-6234643500620473843</id><published>2008-01-14T08:53:00.001-06:00</published><updated>2008-04-09T17:08:15.776-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>Infernal OLPC Packages Available</title><content type='html'>Finished working on the details on how to launch Inferno within the OLPC infrastructure and packaged an initial release which is now available via the &lt;a href="http://wiki.laptop.org/go/inferno"&gt;OLPC wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I need to take the sandbox I built it from and work out a merge into the mainline inferno-os repository.  Basically this will amount to moving some bits into olpc specific directories and writing a distribution script which builds the bundle.&lt;br /&gt;&lt;br /&gt;Next step after that will be to really go to work on customizing the environment for the OLPC, starting with a custom look and feel for the window manager and a few example applications.  That will include supporting scaled true-type fonts and perhaps SVG support.  I also need to work out some day-one scripts to help setup the right name space for the OLPC's restricted security model.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-6234643500620473843?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/6234643500620473843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=6234643500620473843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/6234643500620473843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/6234643500620473843'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2008/01/infernal-olpc-packages-available.html' title='Infernal OLPC Packages Available'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2635332605402902832</id><published>2007-12-31T18:09:00.002-06:00</published><updated>2008-04-09T17:08:32.327-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>OLPC - Hosted Inferno</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nbtXd3baZsQ/R3mIAZkC_XI/AAAAAAAAAFc/elpwSjz65Vo/s1600-h/inferno-olpc.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_nbtXd3baZsQ/R3mIAZkC_XI/AAAAAAAAAFc/elpwSjz65Vo/s320/inferno-olpc.jpg" alt="" id="BLOGGER_PHOTO_ID_5150297189318327666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Got my daughter an OLPC for Christmas, but have spent a lot of time playing with it myself.  First order of biz was to load Inferno on it ;)  I can run it from the shell quite happily, but am now trying to come up with a Sugar launcher and package for wider deployment.  I may start with a simple sugar app that toggles between loading Inferno versus loading sugar.  This should be much easier as it'll avoid interacting with the Python gorp.  Another alternative would be to just hack the terminal application (which would then act as emu's console), but I'd like to try to find a way to tie it in better.&lt;br /&gt;&lt;br /&gt;(UPDATE: launcher is working, now working on packaging)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2635332605402902832?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2635332605402902832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2635332605402902832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2635332605402902832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2635332605402902832'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/12/olpc-hosted-inferno.html' title='OLPC - Hosted Inferno'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_nbtXd3baZsQ/R3mIAZkC_XI/AAAAAAAAAFc/elpwSjz65Vo/s72-c/inferno-olpc.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2637867816049354733</id><published>2007-11-30T08:52:00.001-06:00</published><updated>2008-04-09T17:01:44.352-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Service Oriented Synthetic File Systems</title><content type='html'>&lt;span style="font-size:100%;"&gt;I was doing some thinking about how larger synthetic file systems are structured and implemented under Plan 9 (or using 9P in general).&lt;br /&gt;&lt;br /&gt;My toy-use-case for thinking about it was developing a synthetic-file-server based service similar to SourceForge -- where you have many different projects, each with different component services (bug-tracking, version-control, blogs, wiki, forums, etc.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;You could do it by running lots of different servers (per project) and binding them into a name space and then exporting, but that seems kinda awful (particularly if you have dozens of projects you are using the same tool to track). Much better to have a single server running which is able to accommodate multiple projects, each with multiple file services underneath.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O&lt;span style="font-size:100%;"&gt;bsession with qid-spaces ends up being distracting, with the way fids work, we shouldn't need to segment the space so rigidly, it seems to me that qids only really need to be unique per directory, outside of that you can track which "module" of the hierarchy you are in by saving some state in the server-side fid tracking structure as you traverse the hierarchy.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;dot-dot makes things a little more complicated, but the solution used inside the kernel can be used within file servers as well (namely, keep the whole path in the service-side fid tracking structure).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;What's really nice is you can develop plug in file server modules which allow you to compose much more complex single-server-services out of many different file system components -- without worrying about how the qid space is split up and managed.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2637867816049354733?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2637867816049354733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2637867816049354733' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2637867816049354733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2637867816049354733'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/11/service-oriented-synthetic-file-systems.html' title='Service Oriented Synthetic File Systems'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-1322676658870035601</id><published>2007-10-03T14:56:00.002-05:00</published><updated>2008-04-09T17:09:38.799-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>Applying mount namespaces (in Linux)</title><content type='html'>Decent developer works article describing how to use private name spaces in Linux including the new shared subtree stuff and examples about how to create per-login or per-user (where's per-process?) name spaces.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/linux/library/l-mount-namespaces.html"&gt;"Applying mount namespaces" IBM Developerworks&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Per-process would be fairly easy to do given the techniques described in the paper -- we just need to work through an example, although it may be easier to do inside the source code of a particular shell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-1322676658870035601?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/1322676658870035601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=1322676658870035601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1322676658870035601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1322676658870035601'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/10/applying-mount-namespaces-in-linux.html' title='Applying mount namespaces (in Linux)'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-5459575975192188690</id><published>2007-08-25T20:55:00.001-05:00</published><updated>2008-04-09T17:09:54.336-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>v9fs performance versus NFS</title><content type='html'>I've been doing experiments looking at using 9p between partitions for file system access - focusing on optimizing a shared memory transport and eventually a cooperative cache.&lt;br /&gt;&lt;br /&gt;However, I ran some baselines between partitions using the virtual network and it seems our performance has slid a bit.&lt;br /&gt;&lt;br /&gt;Here's the results from 2 years ago using a gigabit network between two hosts:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nbtXd3baZsQ/RtDeWUsZwSI/AAAAAAAAADs/orFmGP2N6U4/s1600-h/bonnie.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_nbtXd3baZsQ/RtDeWUsZwSI/AAAAAAAAADs/orFmGP2N6U4/s320/bonnie.jpg" alt="" id="BLOGGER_PHOTO_ID_5102822852904206626" border="0" /&gt;&lt;/a&gt;And here is the result between two partitions on KVM comparing NFS, 9p, and local virtualized disk: (9p cached is loose cache mode, but since the working set is double the memory of the partition this actually worked against it):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nbtXd3baZsQ/RtDeoUsZwTI/AAAAAAAAAD0/xQmiF2idmaE/s1600-h/graph.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_nbtXd3baZsQ/RtDeoUsZwTI/AAAAAAAAAD0/xQmiF2idmaE/s320/graph.png" alt="" id="BLOGGER_PHOTO_ID_5102823162141851954" border="0" /&gt;&lt;/a&gt;Put block and get block are equivilent to the write_block and read_block of the older graph.  Where 9p used to edge out NFS on reads, we now are a good deal worse.  Our write performance looks like its as bad as it used to be and rewrite is worse.&lt;br /&gt;&lt;br /&gt;Overall, we've had a big slide -- there has been two rewrites of the transport and support for multi-threaded workloads (which this workload doesn't exercise).  This is also against a different server than original.&lt;br /&gt;&lt;br /&gt;I need to go over my methodology a bit, but I think its probably worth revisiting performance issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-5459575975192188690?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/5459575975192188690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=5459575975192188690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5459575975192188690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5459575975192188690'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/08/v9fs-performance-versus-nfs.html' title='v9fs performance versus NFS'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_nbtXd3baZsQ/RtDeWUsZwSI/AAAAAAAAADs/orFmGP2N6U4/s72-c/bonnie.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-6404844692842384358</id><published>2007-06-22T14:36:00.002-05:00</published><updated>2008-04-09T17:02:11.989-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Blue Gene Project Pages</title><content type='html'>I've setup an more official website to put publications and presentations relating to the DOE sponsored Plan 9 on Blue Gene work.  You can get to it &lt;a href="http://www.research.ibm.com/hare"&gt;here&lt;/a&gt; and I'll be updating it over the next few days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-6404844692842384358?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/6404844692842384358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=6404844692842384358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/6404844692842384358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/6404844692842384358'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/06/blue-gene-project-pages.html' title='Blue Gene Project Pages'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-4278687831252744957</id><published>2007-06-18T15:15:00.002-05:00</published><updated>2008-04-09T17:02:25.175-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Torus and tree networks working on Plan 9 BG/L port</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nbtXd3baZsQ/Rnbo96PTqDI/AAAAAAAAAB0/axPTJ_RMqSE/s1600-h/Screenshot-cpu.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_nbtXd3baZsQ/Rnbo96PTqDI/AAAAAAAAAB0/axPTJ_RMqSE/s400/Screenshot-cpu.png" alt="" id="BLOGGER_PHOTO_ID_5077501780209936434" border="0" /&gt;&lt;/a&gt;We finally worked out the remaining infrastructure issues and are now able to cpu(1) to both I/O nodes (over the Ethernet) and cpu nodes (over the tree network).  The cpu nodes are also able to talk to each other over the torus network.&lt;br /&gt;&lt;br /&gt;We will be attempting a live demo during the USENIX poster session, so drop by and play with Plan 9 running on a Blue Gene.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-4278687831252744957?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/4278687831252744957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=4278687831252744957' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4278687831252744957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4278687831252744957'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/06/torus-and-tree-networks-working-on-plan.html' title='Torus and tree networks working on Plan 9 BG/L port'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_nbtXd3baZsQ/Rnbo96PTqDI/AAAAAAAAAB0/axPTJ_RMqSE/s72-c/Screenshot-cpu.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-660186795081763994</id><published>2007-06-18T15:10:00.002-05:00</published><updated>2008-04-09T17:04:57.582-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>Inferno Running Byte Code on BG/L</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nbtXd3baZsQ/Rnb1A6PTqGI/AAAAAAAAACM/2Emb1Ne_xb8/s1600-h/Screenshot-inferno.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_nbtXd3baZsQ/Rnb1A6PTqGI/AAAAAAAAACM/2Emb1Ne_xb8/s320/Screenshot-inferno.png" alt="" id="BLOGGER_PHOTO_ID_5077515025889077346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Inferno is also running (hosted) on both Compute and I/O nodes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-660186795081763994?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/660186795081763994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=660186795081763994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/660186795081763994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/660186795081763994'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/06/inferno-running-byte-code-on-bgl.html' title='Inferno Running Byte Code on BG/L'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_nbtXd3baZsQ/Rnb1A6PTqGI/AAAAAAAAACM/2Emb1Ne_xb8/s72-c/Screenshot-inferno.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-9041037635829250378</id><published>2007-05-11T15:48:00.002-05:00</published><updated>2008-04-09T17:10:09.857-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>9p and Linux Articles</title><content type='html'>By request, I've posted the two "semi-complete" drafts of a 5 paper series that intended to describe using and programing with 9p under Linux using v9fs and spfs.  These are very fragmented drafts and somewhat out of date.  If anyone is interested in finishing them off, please contact me.  The original idea was to publish them on IBM Developerworks.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://docs.google.com/Doc?id=dcb7zf48_1n5sm46"&gt;Introduction to using 9p Under Linux&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.google.com/Doc?id=dcb7zf48_503q8j84"&gt;Creating Dirtab-based Synthetic File Systems with 9p&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-9041037635829250378?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/9041037635829250378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=9041037635829250378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9041037635829250378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9041037635829250378'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/05/9p-and-linux-articles.html' title='9p and Linux Articles'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2351113258969238167</id><published>2007-04-20T20:35:00.001-05:00</published><updated>2008-04-09T17:06:15.287-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>CPU working on Blue Gene</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nbtXd3baZsQ/RilquUGBhvI/AAAAAAAAABg/sYFpkqFsF4w/s1600-h/bgl-cpu.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_nbtXd3baZsQ/RilquUGBhvI/AAAAAAAAABg/sYFpkqFsF4w/s320/bgl-cpu.jpg" alt="" id="BLOGGER_PHOTO_ID_5055689400600594162" border="0" /&gt;&lt;/a&gt;It took quite a bit of fussing about to gateway between the IBM internal Plan 9 cluster and the Blue Gene VLAN, but with the help of Forsyth's new Ethernet driver for BG/l, Inferno as an intermediary on the front-end node, and a few other bits and pieces... we were able to cpu(1) into Blue Gene I/O nodes.  The CRN-Tree network is pushing packets back and forth and the Torus is being debugged.  Overall its been a very productive 80-hour week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2351113258969238167?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2351113258969238167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2351113258969238167' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2351113258969238167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2351113258969238167'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/04/cpu-working-on-blue-gene.html' title='CPU working on Blue Gene'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_nbtXd3baZsQ/RilquUGBhvI/AAAAAAAAABg/sYFpkqFsF4w/s72-c/bgl-cpu.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-1884453935443512908</id><published>2007-04-17T21:41:00.001-05:00</published><updated>2007-04-17T21:41:53.578-05:00</updated><title type='text'>two cores walk into a bar</title><content type='html'>So, we are bringing up Plan 9 on the Blue Gene supercomputer and stuff looks great, we boot it to a prompt, we can interact with the machine. Its just every so often we see some corruption in the output, and then a little later on the thing dies with some form of panic or critical exception. Shit... We think we have some weird memory corruption problem and go on a witch hunt through the code. So, two bits of additional technical information -- our output is obtained by dumping the console prints into an SRAM and then sniffing it with a JTAG. The SRAM is shared by two non-coherent processor cores. We had assumed the one core was held in reset during boot.&lt;br /&gt;&lt;br /&gt;We were wrong.&lt;br /&gt;&lt;br /&gt;The freaky shit is, the damn OS booted to a prompt and I could type, list directories, screw around -- and we were getting a single output stream that was more or less coherent. The cores were executing in such precise synchronization (in the same memory space no less) that they even were writing the same characters to the console buffers and incrementing the console pointer to the same value. Complete lock step.&lt;br /&gt;&lt;br /&gt;We wouldn't have even noticed except that we started doing the ethernet and touching it started skewing the two processors, and we started getting ddoouubbllee ccoonnssoollee oouuttppuutt and then they would go back into sync.&lt;br /&gt;&lt;br /&gt;Its amazing how really, terminally, completely broken shit can run for a damn long time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-1884453935443512908?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/1884453935443512908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=1884453935443512908' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1884453935443512908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/1884453935443512908'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/04/two-cores-walk-into-bar.html' title='two cores walk into a bar'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-7477471201315680888</id><published>2007-04-12T10:03:00.001-05:00</published><updated>2008-04-09T17:04:45.755-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>More Plan 9 on Blue Gene</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nbtXd3baZsQ/Rh5Kjq0v82I/AAAAAAAAAAs/lRbKXsho3Ho/s1600-h/bgl-glenda.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 161px; height: 106px;" src="http://2.bp.blogspot.com/_nbtXd3baZsQ/Rh5Kjq0v82I/AAAAAAAAAAs/lRbKXsho3Ho/s320/bgl-glenda.png" alt="" id="BLOGGER_PHOTO_ID_5052557808607687522" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;For folks who can't read the memory dump in my last post I've got a rdbfs(4) like interface now that gives me access to the BG/l machine state and memory and includes a more readable console interface:&lt;br /&gt;&lt;br /&gt;criswell% con -r /usr/ericvh/bgd/0/con0&lt;br /&gt;&lt;br /&gt;Plan 9 bgl&lt;br /&gt;cpu0: 0x5202&lt;br /&gt;&lt;br /&gt;BG/l Personality&lt;br /&gt;Block: R000-N60_32_4&lt;br /&gt;Memory Size: 536870912 bytes&lt;br /&gt;clockHz: 700000000&lt;br /&gt;Torus Addr: -1 -1 -1&lt;br /&gt;Tree Hops to Top: 255&lt;br /&gt;EMAC h/w Address: 0:d:60:e9:10:9f&lt;br /&gt;Assigned IP Addr: ac186439&lt;br /&gt;&lt;br /&gt;Kernel Status Cpus 0 &amp;amp; 1: 3 3&lt;br /&gt;512M memory: 160M kernel data, 352M user, 977M swap&lt;br /&gt;boot...&lt;br /&gt;--rw-rw-r-- c 0   24 Apr 11  2007 /dev/bintime&lt;br /&gt;--rw-rw---- c 0    0 Apr 11  2007 /dev/cons&lt;br /&gt;---w--w---- c 0    0 Apr 11  2007 /dev/consctl&lt;br /&gt;--r--r--r-- c 0   72 Apr 11  2007 /dev/cputime&lt;br /&gt;--r--r--r-- c 0    0 Apr 11  2007 /dev/drivers&lt;br /&gt;--rw-rw-r-- c 0   48 Apr 11  2007 /dev/hostdomain&lt;br /&gt;--rw-rw-r-- c 0    0 Apr 11  2007 /dev/hostowner&lt;br /&gt;--r--r----- c 0    0 Apr 11  2007 /dev/kmesg&lt;br /&gt;-lr--r----- c 0    0 Apr 11  2007 /dev/kprint&lt;br /&gt;--rw-rw-rw- c 0    0 Apr 11  2007 /dev/null&lt;br /&gt;--r--r--r-- c 0    0 Apr 11  2007 /dev/osversion&lt;br /&gt;--r--r--r-- c 0   12 Apr 11  2007 /dev/pgrpid&lt;br /&gt;--r--r--r-- c 0   12 Apr 11  2007 /dev/pid&lt;br /&gt;--r--r--r-- c 0   12 Apr 11  2007 /dev/ppid&lt;br /&gt;--r--r--r-- c 0    0 Apr 11  2007 /dev/random&lt;br /&gt;--rw-rw-r-- c 0    0 Apr 11  2007 /dev/reboot&lt;br /&gt;--rw-rw-r-- c 0    0 Apr 11  2007 /dev/swap&lt;br /&gt;--rw-rw-r-- c 0    0 Apr 11  2007 /dev/sysname&lt;br /&gt;--rw-rw-rw- c 0    0 Apr 11  2007 /dev/sysstat&lt;br /&gt;--rw-rw-r-- c 0   78 Apr 11  2007 /dev/time&lt;br /&gt;--rw-rw-rw- c 0    0 Apr 11  2007 /dev/user&lt;br /&gt;--r--r--r-- c 0    0 Apr 11  2007 /dev/zero&lt;br /&gt;/boot/bind&lt;br /&gt;/boot/boot&lt;br /&gt;/boot/echo&lt;br /&gt;/boot/ls&lt;br /&gt;/boot/ps&lt;br /&gt;/boot/rc&lt;br /&gt;/boot/rcmain&lt;br /&gt;/boot/sleep&lt;br /&gt;Hello Squidboy&lt;br /&gt;sleep 10&lt;br /&gt;hi hi hi hi hihihihihihihihihihihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh&lt;br /&gt;%&lt;br /&gt;&lt;br /&gt;(Picture photoshopping credit: Andrey)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-7477471201315680888?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/7477471201315680888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=7477471201315680888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7477471201315680888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7477471201315680888'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/04/more-plan-9-on-blue-gene.html' title='More Plan 9 on Blue Gene'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_nbtXd3baZsQ/Rh5Kjq0v82I/AAAAAAAAAAs/lRbKXsho3Ho/s72-c/bgl-glenda.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-5508701447432471266</id><published>2007-03-30T15:27:00.000-05:00</published><updated>2007-04-12T10:09:58.362-05:00</updated><title type='text'>Plan 9 Booting on Blue Gene/L Hardware</title><content type='html'>This is just the 1st I/O node, but the other 3 I/O nodes and 32 Compute nodes in my block were in the identical state.&lt;br /&gt;&lt;br /&gt;mmcs$ {0}.0 dump_memory 0x808d9210 0x1000&lt;br /&gt;OK&lt;br /&gt;{0}.0 Dumping Memory&lt;br /&gt;0x808d9210:  0d0a506c 616e2039 2062676c 0d0a6370 ..Plan 9 bgl..cp&lt;br /&gt;0x808d9220:  75303a20 30783532 30320d0a 65746865 u0: 0x5202..ethe&lt;br /&gt;0x808d9230:  72303a20 6e6f2065 74686164 64722069 r0: no ethaddr i&lt;br /&gt;0x808d9240:  6e204545 50524f4d 20656e76 0d0a6574 n EEPROM env..et&lt;br /&gt;0x808d9250:  68657231 3a206e6f 20657468 31616464 her1: no eth1add&lt;br /&gt;0x808d9260:  7220696e 20454550 524f4d20 656e760d r in EEPROM env.&lt;br /&gt;0x808d9270:  0a323536 4d206d65 6d6f7279 3a203834 .256M memory: 84&lt;br /&gt;0x808d9280:  4d206b65 726e656c 20646174 612c2031 M kernel data, 1&lt;br /&gt;0x808d9290:  37324d20 75736572 2c203539 304d2073 72M user, 590M s&lt;br /&gt;0x808d92a0:  7761700d 0a626f6f 742e2e2e 0d0a2d2d wap..boot.....--&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-5508701447432471266?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/5508701447432471266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=5508701447432471266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5508701447432471266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5508701447432471266'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/03/plan-9-booting-on-blue-genel-hardware.html' title='Plan 9 Booting on Blue Gene/L Hardware'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-4489537309315780614</id><published>2007-03-18T17:24:00.001-05:00</published><updated>2008-04-09T17:06:32.108-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Virtual Systems</title><content type='html'>Bit the bullet and got Plan 9 running under Xen on my "victim" laptop.  It can now run Plan9 natively, under Xen, or under Qemu.  I still am toying with the idea of a bridged network mode where I can mount an Inferno devip from a loopback cable to my windows laptop in case I can't find hard-lines to plug into at Watson.  This also means my victim laptop is squared away to be a testbed for x86/Libra -- I might even get to a basic "shot-in-the-dark" (ie. no Xen devices, just devshm) configuration sometime during the trip.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-4489537309315780614?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/4489537309315780614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=4489537309315780614' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4489537309315780614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4489537309315780614'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/03/virtual-systems.html' title='Virtual Systems'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-815618840848046626</id><published>2007-03-14T17:35:00.001-05:00</published><updated>2008-04-09T17:06:44.565-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>xsm support in</title><content type='html'>I've added the Xen shared memory channel bits to devshm and pushed the code to the inferno-power repository (although hypothetically this is a more generic feature).  I really need to separate the devshm code from the power code, it just seemed more convenient to work on them in the same branch.&lt;br /&gt;&lt;br /&gt;The Xen shared memory code only functions as a server right now.  I just tested it with a slightly modified Libra client and everything seems cool.  I need to revisit performance results to make sure I didn't screw anything up and work out the right way to modify the Libra launch scripts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-815618840848046626?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/815618840848046626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=815618840848046626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/815618840848046626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/815618840848046626'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/03/xsm-support-in.html' title='xsm support in'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-9016970292560679178</id><published>2007-03-10T15:12:00.001-06:00</published><updated>2008-04-09T17:07:32.223-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>devshm updates</title><content type='html'>Spent half the week chasing down a truly ridiculously stupid bug in the mmap code for devshm.  I had intended to have the Xen based shared memory done by now and maybe even a Libra version of Inferno -- unfortunately that has all gone down the tubes for the time being.&lt;br /&gt;&lt;br /&gt;The devshm code with SysV and mmap based shared memory transports is available off of the 9grid.us GIT repository, I need to write a man page before submitting a patch to the Inferno mailing list.  Now I'm off to port the xen devchan interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-9016970292560679178?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/9016970292560679178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=9016970292560679178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9016970292560679178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9016970292560679178'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/03/devshm-updates.html' title='devshm updates'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-891485094852506581</id><published>2007-02-28T19:14:00.000-06:00</published><updated>2007-02-28T19:17:09.490-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><title type='text'>Linux-Power Inferno (take 2)</title><content type='html'>Nearly complete with a second take on my Linux-Power Inferno port.  I've corrected (with Forsyth's help) many of the hacks I had rushed through the first time.  I'm still a bit concerned with floating point and math libraries, but on the whole it seems functional and no longer uses pthreads so hopefully the SMP problems we were seeing will go away.&lt;br /&gt;&lt;br /&gt;I'm trying for a clean merge against the Google Code inferno-os tip now, which should leave me plenty of time tomorrow to do a clean integration of the shared memory transport with shm, mmap, and xen back-ends.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-891485094852506581?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/891485094852506581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=891485094852506581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/891485094852506581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/891485094852506581'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/02/linux-power-inferno-take-2.html' title='Linux-Power Inferno (take 2)'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-637825204300648892</id><published>2007-02-21T20:42:00.001-06:00</published><updated>2008-04-09T17:07:08.447-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Collab</title><content type='html'>In lamenting not really knowing the various states of a distributed team working on Plan 9 related projects, I was thinking through expedient mechanisms for loosely keeping in touch.   There are a bunch of tools that seem to help with distributed teams: phone calls, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;IM&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;IRC&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;VNC&lt;/span&gt;, Peer-to-peer and centralized file sharing, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SCM&lt;/span&gt;, etc.  I was thinking of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;architecting&lt;/span&gt; a simple suite of tools to provide basic &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;fuctionality&lt;/span&gt; within a Plan 9 paradigm.&lt;br /&gt;&lt;br /&gt;The cornerstone would be a modified version of faces, which checked against a centralized file system (or maybe just a centralized place with file systems bound from several different servers).  People currently active ('logged into') within the collaboration framework would have their face appear.  Mouse-over the face gives a quick bit on their current status (i.e. working on /&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;sys&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;src&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;collab&lt;/span&gt;.c), right click pops up a menu of different options (chat, blog, view, share, mount, etc.) -- each of these would plumb an action to an appropriate tool (either in ACME or raw).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;chat - simple point-to-point &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;IM&lt;/span&gt; facility, I'm toying with the idea of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;walkie&lt;/span&gt;-talkie style audio chat as well.&lt;/li&gt;&lt;li&gt;blog - pops up the person's "blog" which really is just news(1), but personalized for that person, maybe work out something more complicated with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;wikifs&lt;/span&gt; later, but news(1) will do for now&lt;/li&gt;&lt;li&gt;view - If the person has shared a window with you, view will plumb it to a viewer -- I haven't quite decided how to handle different types of views, could just do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;VNC&lt;/span&gt;, but I'd rather have the ability to share windows -- or really what I want is the ability to share ACME windows and keep the sides in sync (like a distributed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Zerox&lt;/span&gt;) -- ultimately, there's all sorts of granularity to sharing, but for now it'll be a single thing (kinda works like snarf) and it'll have to be integrated into ACME and other tools which use it.&lt;/li&gt;&lt;li&gt;share - really mostly described above -- this basically grants the person access to your current share&lt;/li&gt;&lt;li&gt;mount - pops up a window with the person's public &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;namespace&lt;/span&gt; mounted -- this could just be their /&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;usr&lt;/span&gt; directory, or it could be something more.  Haven't quite decided how to handle this completely.&lt;/li&gt;&lt;/ul&gt;There will be a variety of command-line tools that allow you to post shares, export portions of your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;namespace&lt;/span&gt; into your public &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;namespace&lt;/span&gt;, and allow you to easily update your blog or status.&lt;br /&gt;&lt;br /&gt;I think the simple approach works for 1-to-1 communication, not sure how to handle 1-to-many or many-to-many without things getting complicated.  There's also various ways you can build on this to add additional context (like maybe per-project collaboration spaces).  They key thing is that everything works through file system mounts.&lt;br /&gt;&lt;br /&gt;A big missing item is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;SCM&lt;/span&gt;, I have been toying with some ideas around a git-like mechanism with a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;venti&lt;/span&gt; back-end.  For the most part this isn't an immediate requirement though, centralized file repository backed by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;venti&lt;/span&gt; is fine -- although it would be nice to have a formula or script for setting up replicas of such &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;centrailized&lt;/span&gt; repositories.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-637825204300648892?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/637825204300648892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=637825204300648892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/637825204300648892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/637825204300648892'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/02/collab.html' title='Collab'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-5066251743291370973</id><published>2007-02-21T20:37:00.002-06:00</published><updated>2008-04-09T17:10:21.705-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>9p: loose cache</title><content type='html'>Loose cache mode got sucked into Linux 2.6.21-rc1 -- at least the read portion of it did.  You can now specify cache=loose as a command line option and v9fs will attempt to aggressively make use of the dcache and page-cache.  This cache is complete non-coherent -- so I'd advise only using it with exclusive read-only mounts (like vacfs).  I've got a version of the writepage stuff (and it is in the -mm kernel), but I'm currently reworking it to make it more like NFS.  I've got a couple more optimizations in the pipeline that I can use with the loose cache, such as pre-populating the dcache during a readdir, and a general reduction in the number of stats sent during transations.&lt;br /&gt;&lt;br /&gt;A bigger change on the horizon is the introduction of support for async i/o and read-ahead.  These should allow us to match (or beat) NFS speeds while in loose mode.  Adding some level of coherency to the cache shouldn't be too difficult, but I don't have a driving application right now, so it'll stay low on the priority list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-5066251743291370973?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/5066251743291370973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=5066251743291370973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5066251743291370973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/5066251743291370973'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/02/9p-loose-cache.html' title='9p: loose cache'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-3747778364045355913</id><published>2007-02-14T19:35:00.002-06:00</published><updated>2008-04-09T17:10:38.437-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>v9fs writepage woes</title><content type='html'>Been struggling with the writepage implementation in the loose cache mode.  As a result, I've made get_attr loose (it will just use info in an inode versus requesting it from the server) -- as a side-effect, Bonnie rewrite performance doubled and I'm not setup to pre-fetch inode info during a readdir (which should make ls -l much quicker).  FSX, Bonnie, Postmark, and Dbench all pass.  Multithreaded dbench gets hung up sometimes during cleanup -- not sure why.  The addition of writepage makes mmap writes possible as well, however, FSX fails when I enable the mmap write tests (with a data corruption error) -- this is likely a similar problem with the inode not being properly updated.&lt;br /&gt;&lt;br /&gt;Otherwise, I've addressed most of Andrews points.  I don't think I'm doing prepare_write quite right yet -- I guess I need to look at locking the page down.  I also have to make sure I go through and take out any redundant code I put in for debugging.  I need to draft my OLS proposals tonight, so it'll have to wait for tomorrow.  I think I'll also take the extra steps to disable mmap writes for non-loose items -- also should probably disable mmap reads for synthetics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-3747778364045355913?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/3747778364045355913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=3747778364045355913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3747778364045355913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/3747778364045355913'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/02/v9fs-writepage-woes.html' title='v9fs writepage woes'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2854669367739441890</id><published>2007-02-14T10:53:00.001-06:00</published><updated>2008-04-09T17:02:53.794-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inferno'/><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><title type='text'>Plan9/Inferno Revision Control</title><content type='html'>&lt;p&gt;I've been playing with the idea of some simple shell scripts that would provide git-like-service on-top of venti for use as wide-area source control.  Essentially, to access a repository, you'd need access to the venti hosting the repository and the current score of the repo which could be published in a 9p partition or web page or whatever.  Alternatively you could have the branches of the repo published (or pull the branches from the single score).&lt;/p&gt; &lt;p&gt;&lt;!-- PProtector --&gt;The scm-part of the repo would contain the branches, tags, and log messages.  Branches and tags are just files with the particular score in them (not sure that there really is a difference between the two) -- might also squirell a description or something in the file.&lt;/p&gt; &lt;p&gt;&lt;!-- PProtector --&gt;Log messages would be in files named after the score of the tree that their commit represents.  The log message would contain a parsable pointer to the parent score of the commit.  Probably reasonable to organize the log messages in directories by date or something to keep things efficient.  The logs themselves are probably best stored in venti, referenced by a "special" branch named log.&lt;/p&gt; &lt;p&gt;&lt;!-- PProtector --&gt;Then it's just a matter of writing some scripts to handle initializing a scm database, adding and removing files, commiting changes, and helper routines for doing diffs, merges, branching, etc.  Also could have git-pull/git-push equivilent commands for syncing remote and local venti stores (if you wanted to have a local venti).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2854669367739441890?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2854669367739441890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2854669367739441890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2854669367739441890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2854669367739441890'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/02/plan9inferno-revision-control.html' title='Plan9/Inferno Revision Control'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-9176319729347979291</id><published>2007-02-11T10:15:00.001-06:00</published><updated>2008-04-09T17:04:16.928-05:00</updated><title type='text'>Interesting collective viewpoint on the future of computing</title><content type='html'>&lt;a href="http://view.eecs.berkeley.edu/wiki/Main_Page"&gt;http://view.eecs.berkeley.edu/wiki/Main_Page&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www2.blogger.com/post-create.g?blogID=11523106"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-9176319729347979291?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/9176319729347979291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=9176319729347979291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9176319729347979291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/9176319729347979291'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/02/interesting-collective-viewpoint-on.html' title='Interesting collective viewpoint on the future of computing'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-4616813146486122456</id><published>2007-02-10T00:13:00.002-06:00</published><updated>2008-04-09T17:10:52.024-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux 9P'/><title type='text'>v9fs updates for 2.6.21</title><content type='html'>Working on putting cache features back in as an option.  I'm basically thinking of having several modes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;loose - intended for exclusive read-only file systems, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;dcache&lt;/span&gt; and page cache never &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;revalidate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;tight - intended for shared file systems, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;dcache&lt;/span&gt; and page cache always &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;revalidate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;decay - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;nfs&lt;/span&gt;-like mode where we only validate if more than a certain amount of time has passed&lt;/li&gt;&lt;li&gt;session - exactly like loose, but with some extra bits for use with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;fscache&lt;/span&gt; so that we can verify that the backing store hasn't changed while we've been detached&lt;/li&gt;&lt;/ul&gt;Right now I'm only planning on doing read-caches.  Write caches have the nasty problem of unattributed writes due to the way the page cache works -- I guess I'll hold off on that for now.  I really wanted to integrate with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;fscache&lt;/span&gt;, but its still not in the kernel and I think the patch may end up being too invasive to do speculatively.&lt;br /&gt;&lt;br /&gt;I guess the other thing I may try to squeeze into 2.6.21 is the shared memory transport (talking to Inferno primarily, but I'll probably also do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;mmap&lt;/span&gt; for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;rHype&lt;/span&gt;, and I'll look into &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;architected&lt;/span&gt; shared memory with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Xen&lt;/span&gt;).  Next step after that will be looking at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;XIP&lt;/span&gt; (execute-in-place) modes so that I can start looking at a shared page cache.  I really have to look into how this would work, probably won't make it into 2.6.21.&lt;br /&gt;&lt;br /&gt;I'd still like to see Security, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Async&lt;/span&gt; I/O, common id mapping, and a rework of the extended modes -- but none of those things are central to my primary work on 9p, so they'll have to remain on the back-burner for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-4616813146486122456?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/4616813146486122456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=4616813146486122456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4616813146486122456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/4616813146486122456'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/02/v9fs-updates-for-2621.html' title='v9fs updates for 2.6.21'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-7493681958260964810</id><published>2007-02-09T09:04:00.001-06:00</published><updated>2007-01-20T13:28:45.203-06:00</updated><title type='text'>cachefs-&gt;9p-&gt;vacfs-&gt;venti on Linux</title><content type='html'>&lt;p&gt;I've been thinking a lot about dealing with file systems on clusters using venti.  Part of this departs from the centralized file server model of Plan 9 to a system more resembling the Linux kernel source control topology -- which has a centralized repository and then a hierarchy of distributed repositories "cloned" from the central, each having private branches/sandboxes.&lt;/p&gt; &lt;p&gt;&lt;!-- PProtector --&gt;In its most simple form, the idea would be roughly the same, the central file server (for the cluster or whatever) would have a venti repo.  Indiividual machines would connect to the venti server and store local caches of whatever branch they've attached to.  Any mount of the central file server must be associated with a particular version which root's the client's branch.  Updates to the central server or the branch are explicit, not implicit.  So we replace replica/pull with a venti/pull which remounts the file system with a newer score. &lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;!-- PProtector --&gt;The venti servers can be hierarchical as well, with explicit pull/pushes from eachother.  Data sharing is accomplished by sharing scores and merging.  So we keep centralized authority, but also have the authority for relatively independent subdomains.&lt;/p&gt; &lt;p&gt;&lt;!-- PProtector --&gt;There are several things that might be nice to see to help facilitate this (and maybe they are already there)-&lt;/p&gt; &lt;ul&gt;&lt;li&gt;better method for non-local venti access -- allow venti communication through the file system versus just TCP.  This is a trivial bit of shell scripting I suppose, but it would be nice to be able to apply user/group permissions to venti channel access&lt;/li&gt;&lt;li&gt;establish a meta-data tree in venti that can be referenced without knowing its score.  This meta-data tree acts as a table of contents with pointers to published branches/scores, etc.  Use standard file permissions and whatnot as rudimentary control.  This could be used to implement git-style "porcelin" allowing venti as a version-control-system with tags, log messages, etc.&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;git-style three-way merge tools that help merge trees.  Venti has always been more of a historical archive than concurrent versioning system -- adding three-way merge utils would allow us to broaden its scope and functionality.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The eventual goal is to replace fossil as our primary root within Plan 9 (and also bring it to Inferno) - but as an intermediate goal, the idea would be to use cachefs (or cache-files I can never remember which is which) under Linux to provide a cache for a 9P-mounted vac file system and then work out some scripts to help with the push/pull'ing of stuff and maintaining the meta-tree.&lt;/p&gt; &lt;p&gt;&lt;!-- PProtector --&gt;A side-project would be to look at porting the git porcelin to work with venti as a back-end and port the porcelin to Plan 9/Inferno so we have a version control strategy that works well with our native content-addressable-strorage.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-7493681958260964810?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/7493681958260964810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=7493681958260964810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7493681958260964810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/7493681958260964810'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/02/cachefs-9p-vacfs-venti-on-linux.html' title='cachefs-&gt;9p-&gt;vacfs-&gt;venti on Linux'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-2193785204999335531</id><published>2007-01-07T11:06:00.001-06:00</published><updated>2007-01-07T11:06:58.472-06:00</updated><title type='text'>PS3</title><content type='html'>Got the PS3 from FedEx two days ago.  I'm on the third day of downloading the Linux DVD.  Then I'll get Inferno hosted working, followed by taking cracks at Inferno native and Plan 9 native.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-2193785204999335531?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/2193785204999335531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=2193785204999335531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2193785204999335531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/2193785204999335531'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2007/01/ps3.html' title='PS3'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-116655859005687120</id><published>2006-12-19T14:02:00.000-06:00</published><updated>2006-12-19T14:03:10.133-06:00</updated><title type='text'>Browser as GUI</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;The various projects where I am working with Inferno and Plan 9 at IBM use the technology "behind the scenes" -- that is to say, it does not focus on using either as the Desktop or user interface.  In my opinion, we as a community spend far too much time focusing on getting a browser to Plan 9 or creating a more traditional desktop environment for Plan 9.  None of this plays to the strengths of the operating system.&lt;br/&gt; &lt;/p&gt;  &lt;p&gt;I've been toying with the heretical idea of turning things the other way around.  Instead of bringing the Browser to Plan 9, bring Plan 9 to the Browser.  For instance - how much could be done with only presenting user-interface via a browser interface?  This builds upon the idea of the Venti web interface (where you can get status from Venti via http) -- the idea is to leverage more advanced browser capabilities (AJAX, etc.) to provide the foundation of the UI.  This certainly is less flexible than a draw based interface, but would likely provide a decent foundation for most status/control applications.  &lt;br/&gt; &lt;/p&gt;  &lt;p&gt;The work would be on the back-end -- developing an API which would create a draw-style synthetic file system representing the DOM of the front-end interface as well as files representing the aggregate interfaces to be presented by the web-server.&lt;/p&gt;  &lt;p&gt;Over the next few months I plan to play around with developing such an infrastructure with a limited scope in support of my projects.&lt;br/&gt; &lt;/p&gt;  &lt;p style="font-size:10px;text-align:right;"&gt;technorati tags:&lt;a href="http://technorati.com/tag/Plan9" rel="tag"&gt;Plan9&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" target="_new" title="Flock"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-116655859005687120?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/116655859005687120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=116655859005687120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116655859005687120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116655859005687120'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2006/12/browser-as-gui.html' title='Browser as GUI'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-116654359334448633</id><published>2006-12-19T09:53:00.000-06:00</published><updated>2006-12-19T09:53:13.406-06:00</updated><title type='text'>Extensions</title><content type='html'>I have been doing some re-thinking on extensions.  Right now we have extensions in the create operation and a bunch of extensions in the stat structure.  This has been judged undesirable by the community at large - more of the proposals for extensions revolves around using an alternate aname mount for various extensions.&lt;br /&gt;&lt;br /&gt;The more I think about it, the more I think what we really want is "meta-walks" -- that is to say "special" walks off the fid of a file or directory to get at extended information (which is then read/write using normal operations not stat/twstat).  For example walk("/etc/motd/lock") to get to lock controls or walk("/etc/motd/xstat") to get at an extended (or just UNIX) stat structure.&lt;br /&gt;&lt;br /&gt;The one thing that doesn't hold up under this is special files.  Hard links, symbolic links and device files all "want" to be created atomically w/their extended attributes in tact.  It would also be nice to be able to mark which files have "extended" attributes so we don't need to do multiple walks of a file to determine if its a symlink.  I suppose we could use a DM bit that is just DMSPECIAL which could be reserved for just such a purpose.  But that doesn't help with create -- I think the only way around it is to have a "special" create operation which is part of the extension definition.  This fits in with Russ and Charles' "acceptable" extensions methodology.&lt;br /&gt;&lt;br /&gt;So, we remove all current extensions -- the extensions for extended stat information, error strings, etc. will be moved to meta-walk items.  Extended create will get its own operation.&lt;br /&gt;&lt;br /&gt;The real question is the difficulty of an implementation.  One nice thing is that it seems quite likely that this could be implemented as a "filter" file system over a "normal" file server (such as fossil) - squireling the extended data away in "invisible files" or perhaps an alternate hierarchy -- but then again, I suppose that would always be true as long as you had your own exportfs.&lt;br /&gt;&lt;br /&gt;If we didn't have the special open -- we could use exportfs as is -- the key is the atomicity problem.  I suppose we could create the file as a DMTMP and/or ORCLOSE-- after we write the extended information, we twstat it to DMSPECIAL.  If something happens during creation (disconnected server), the file removes itself.  I need to think about this more to make sure it would work and not create any turds or race conditions.  Also need to make sure I can do meta-walks without someone getting in the way and protect meta-fids from race conditions including the removal of their parent file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-116654359334448633?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/116654359334448633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=116654359334448633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116654359334448633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116654359334448633'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2006/12/extensions.html' title='Extensions'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-116653824515931944</id><published>2006-12-19T08:19:00.000-06:00</published><updated>2006-12-19T08:24:05.180-06:00</updated><title type='text'>Inferno Shared Memory Channel</title><content type='html'>Added a "generic" version of my Inferno shared memory channel transport which works using standard UNIX shared memory.  The code is available on the txinferno branch of my git repository on git.9grid.us.  Essentially, it looks just like a devip style /net device now with pluggable transports.  Right now the only one is usm (unix shared memory), but I'll be adding the Xen and PAPR version shortly.&lt;br /&gt;&lt;br /&gt;Listen semantics aren't quite right since every conversation represents a point-to-point connection, but what I have works for things like Styxlisten.  Need to go back and add some control messages to allow modification of default buffer size, polling intervals, etc.&lt;br /&gt;&lt;br /&gt;I suppose at some point I'll add support to v9fs for using such a transport as well, which would allow for really fast Linux&lt;-&gt;Inferno communication on the same host.  Although I'm not quite sure what I'd use that for right now anyways.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-116653824515931944?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/116653824515931944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=116653824515931944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116653824515931944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116653824515931944'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2006/12/inferno-shared-memory-channel.html' title='Inferno Shared Memory Channel'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-116606878325307641</id><published>2006-12-13T21:59:00.000-06:00</published><updated>2006-12-13T21:59:43.290-06:00</updated><title type='text'>Xen Woes...take 3.0.3</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Richard Miller's success stories of Plan 9 and Xen inspired me to give it another go.  Since I felt like vegging and watching TV tonight anyways, i decided to reinstall my laptop with Xen + Ubuntu Edgy + Plan 9.  Trying the Xen demo CDs or their Express CD's led to utter failure.  I think went and tried to install Edgy, and then use Synaptic to grab Xen.  This mostly worked (at least for Dom0), but it still isn't finding my Atheros network card driver (even though I installed the restricted driver set for the Xen kernel).  I suppose it should work fine as long as I have it plugged in, but its frustrating..too frustrating for this late at night.&lt;br/&gt; &lt;p style="font-size:10px;text-align:right;"&gt;technorati tags:&lt;a href="http://technorati.com/tag/Xen" rel="tag"&gt;Xen&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" target="_new" title="Flock"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-116606878325307641?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/116606878325307641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=116606878325307641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116606878325307641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116606878325307641'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2006/12/xen-woestake-303.html' title='Xen Woes...take 3.0.3'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-116472354761677433</id><published>2006-11-28T08:17:00.000-06:00</published><updated>2006-11-28T08:19:07.616-06:00</updated><title type='text'>GIT repositories</title><content type='html'>I've setup a git repository on http://git.9grid.us/git &lt;br /&gt;&lt;br /&gt;Right now, the only important thing there are my PowerPC-Linux Inferno modifications, but I intend to keep all my public modifications/extensions to both Plan 9 and Inferno there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-116472354761677433?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/116472354761677433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=116472354761677433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116472354761677433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116472354761677433'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2006/11/git-repositories.html' title='GIT repositories'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-116472346701890532</id><published>2006-11-28T08:06:00.000-06:00</published><updated>2006-11-28T08:17:47.056-06:00</updated><title type='text'>Infernal Musings</title><content type='html'>Recently, I've picked up Inferno as a 9p server and resource gateway for some work projects.  In some ways it makes me question the whole npfs/spfs path.  Hosted Inferno provides a stable 9p gateway to local UNIX file systems, with a working multi-threaded model and authentication.&lt;br /&gt;&lt;br /&gt;The only real problem is that its a 100 pound gorilla for file serving.  If I want to advocate people use Inferno for a server-side for v9fs, I don't want them to have to download 12MB of fonts or any of the other stuff that they won't need.&lt;br /&gt;&lt;br /&gt;Similar to plan9ports, I sorta wish Inferno was nicely split up into packages so I could download the core, and then download whatever packages I want/need.  Both Inferno and Plan9ports should look more like Gnome or KDE from a packaging perspective -- they are environments, but I need not download everything to use some part of the environment.&lt;br /&gt;&lt;br /&gt;Additionally -- it'd be really nice if Inferno had a mode where instead of functioning as a virtual OS in hosted mode -- it operated more "in the native environment" -- which is to say, I'd like to be able to run a program.dis from my normal UNIX shell and have it "do the right thing":&lt;br /&gt;* be able to handle a #!/usr/inferno/Linux/386/bin/emu prefix so I can use binfmt-misc&lt;br /&gt;* use the root of my UNIX name space for the Inferno root namespace&lt;br /&gt;* use the UNIX current-working-directory&lt;br /&gt;* use my UNIX home dir instead of having to have an Infernal homedir&lt;br /&gt;* have a "side-namespace" for Inferno synthetics and paths (not sure if this is the right model)&lt;br /&gt;* ultimately be able to support graphics apps with X11 as the window-manager and support resize&lt;br /&gt;&lt;br /&gt;This should allow us greater reach for Inferno within hosted environments and would make it a more palatable alternative as a server environment.&lt;br /&gt;&lt;br /&gt;Perhaps I'll toy with these ideas on the plan enroute to Spain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-116472346701890532?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/116472346701890532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=116472346701890532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116472346701890532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/116472346701890532'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2006/11/infernal-musings.html' title='Infernal Musings'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-113193215239066975</id><published>2005-11-13T19:28:00.000-06:00</published><updated>2005-11-13T19:38:03.390-06:00</updated><title type='text'>9grid.us Diagnosis: Not Good</title><content type='html'>Finally got some time to look at texas.9grid.us -&gt; looks like his drive is fried.  I can try a re-install or perhaps move it to a different machine -- the development model CompactPCI chasis I have it mounted in probably isn't the best thing in the world heat wise.&lt;br /&gt;&lt;br /&gt;I have a couple of replacement drives I can try.  I could move to CompactFlash - but then it would be mainly read-only affair (ie. no hosting a mirror site or anybody's private user directories).  For now, we are in limbo (which is why you've been re-directed here).  I'll update this site with status, hopefully I'll have something together before December.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-113193215239066975?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/113193215239066975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=113193215239066975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/113193215239066975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/113193215239066975'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2005/11/9gridus-diagnosis-not-good.html' title='9grid.us Diagnosis: Not Good'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11523106.post-111110157758267766</id><published>2005-03-17T17:18:00.000-06:00</published><updated>2005-08-25T09:30:17.653-05:00</updated><title type='text'>Purpose</title><content type='html'>Setting up this blog to post about ongoing work on Plan 9 and related technologies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11523106-111110157758267766?l=graverobbers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://graverobbers.blogspot.com/feeds/111110157758267766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11523106&amp;postID=111110157758267766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/111110157758267766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11523106/posts/default/111110157758267766'/><link rel='alternate' type='text/html' href='http://graverobbers.blogspot.com/2005/03/purpose.html' title='Purpose'/><author><name>Eric Van Hensbergen</name><uri>http://www.blogger.com/profile/14419208305378243103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nbtXd3baZsQ/TC1P9xBkWHI/AAAAAAAAATQ/Av6AgfJHK1M/s1600-R/1292.jpg'/></author><thr:total>0</thr:total></entry></feed>
