<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alternative Recursion &#187; it</title>
	<atom:link href="http://www.alternativerecursion.info/?feed=rss2&#038;tag=it" rel="self" type="application/rss+xml" />
	<link>http://www.alternativerecursion.info</link>
	<description>stuff from my brain</description>
	<lastBuildDate>Tue, 29 Jun 2010 15:35:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>intel P55 LGA1156 chipset and DDR3 Memory</title>
		<link>http://www.alternativerecursion.info/?p=797</link>
		<comments>http://www.alternativerecursion.info/?p=797#comments</comments>
		<pubDate>Fri, 09 Oct 2009 22:48:52 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>
		<category><![CDATA[crucial]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[p55]]></category>

		<guid isPermaLink="false">http://www.alternativerecursion.info/?p=797</guid>
		<description><![CDATA[When I first bought an Intel P55 chipset based motherboard and a LGA1156 Core i7 Processor, I thought the safest thing to do would be purchasing Standard memory from a reputable company with JEDEC approved voltage and timings. So I purchased some standard Crucial DDR3-1333&#160; PC3-10600. If you go to crucial’s website and you enter [...]]]></description>
			<content:encoded><![CDATA[<p>When I first bought an Intel P55 chipset based motherboard and a LGA1156 Core i7 Processor, I thought the safest thing to do would be purchasing Standard memory from a reputable company with JEDEC approved voltage and timings. </p>
<p> <span id="more-797"></span>
<p>So I purchased some standard Crucial DDR3-1333&#160; PC3-10600.</p>
<p>If you go to crucial’s website and you enter in a P55 motherboard, you will get this suggested memory:</p>
<p><a href="http://www.crucial.com/store/partspecs.aspx?IMODULE=CT2KIT25664BA1339">CT2KIT25664BA1339</a></p>
<p>I ordered 2 4GB kits, each with with 2 2GB dimms.</p>
<p>The dimms all looked like this:</p>
<p>&#160;</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2009-10-09 17.46.09" border="0" alt="2009-10-09 17.46.09" src="http://www.alternativerecursion.info/wp-content/uploads/2009/10/2009100917.46.09.jpg" width="657" height="138" />&#160;</p>
<p>&#160;</p>
<p>here is what CPUZ saw from the SPD of the dimm:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="crucial" border="0" alt="crucial" src="http://www.alternativerecursion.info/wp-content/uploads/2009/10/crucial.png" width="409" height="395" /></p>
<p>&#160;</p>
</p>
<p>So, everything seemed fine until I started to get random reboots every couple days.</p>
<p>&#160;</p>
<p>I tried every possible combination of the dimms, and I always got the same result; hard-reboots.</p>
<p>I felt the odds of all 4 dimms being faulty is roughly zero, so I decided it must be the motherboard, until I started reading <a href="http://www.newegg.com/Product/ProductReview.aspx?Item=20-148-262&amp;SortField=0&amp;SummaryType=0&amp;Pagesize=100&amp;SelectedRating=-1&amp;PurchaseMark=&amp;VideoOnlyMark=False&amp;VendorMark=&amp;Page=1&amp;Keywords=(keywords)">these</a> comments on newegg about my memory.&#160; There are/was a very high percentage of people claiming the memory did not work on their P55 motherboard.</p>
<p>Then I started to see newegg stamp certain memory P55 Core i5/i7 compatible, which didn’t seem to make sense, because any memory that adheres to JEDEC spec for PC3-10600 should be compatible.¿?</p>
<p>&#160;</p>
<p>I found Intel’s own Validation Results for DDR3-1333 on P55 <a href="http://developer.intel.com/technology/memory/ddr/valid/ddr3_nonecc_udimm_results.htm">here</a>.</p>
<p>&#160;<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ddr3" border="0" alt="ddr3" src="http://www.alternativerecursion.info/wp-content/uploads/2009/10/ddr3.png" width="568" height="501" /> </p>
<p>It lists Crucial’s CT25664BA1339, but specifically the CT25664BA1339<strong>.16FF.</strong></p>
<p><strong></strong></p>
<p>Looking closer at my memory I found it to be CT25664BA1339<strong>.M16SFD.</strong></p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2009-10-09 17.40.42" border="0" alt="2009-10-09 17.40.42" src="http://www.alternativerecursion.info/wp-content/uploads/2009/10/2009100917.40.42.jpg" width="447" height="114" /></p>
<p>for reference this dimm uses micron chips with markings: 9ND22 D9JNM</p>
<p><a href="http://www.alternativerecursion.info/wp-content/uploads/2009/10/crucial1.png"></a></p>
<p>&#160;</p>
<p> <strong></strong>
<p>Crucial said the last string of this part number is for internal use only, and refers to which chip/set is being used on the dimm.&#160; The crucial representative said it should make no difference with respect to P55 compatibility, and was perplexed why Intel would specifically approve the 16FF.&#160; In fact as a consumer you cannot even see what the internal chipset number is before you buy online, but you can call and ask to order a specific one over the phone.</p>
<p>I did just that, and ordered a set of CT25664BA1339<strong>.16FF</strong> over the phone from crucial, they looked like this:</p>
<p>&#160;</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2009-10-09 17.41.13" border="0" alt="2009-10-09 17.41.13" src="http://www.alternativerecursion.info/wp-content/uploads/2009/10/2009100917.41.13.jpg" width="855" height="256" /> </p>
<p>Notice the Micron label on the left?&#160; I assume this means the dimm itself was manufactured by Micron, and resold by crucial.</p>
<p>(my other CT25664BA1339<strong>.M16SFD</strong> dimms don’t have a micron sticker.)</p>
<p>&#160;</p>
<p>&#160;</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2009-10-09 17.40.50" border="0" alt="2009-10-09 17.40.50" src="http://www.alternativerecursion.info/wp-content/uploads/2009/10/2009100917.40.50.jpg" width="474" height="111" /> </p>
<p>The CT25664BA1339<strong>.16FF</strong> dimm uses different micron chips marked: 9NF22 D9KPT</p>
<p>&#160;</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2009-10-09 17.41.03" border="0" alt="2009-10-09 17.41.03" src="http://www.alternativerecursion.info/wp-content/uploads/2009/10/2009100917.41.03.jpg" width="491" height="103" />&#160;</p>
<p>So the Crucial CT25664BA1339<strong>.16FF</strong> is in fact a Micron MT16JTF25664AZ-1G4F1 dimm.</p>
<p>CPU-Z’s information from the SPD agrees:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="micron" border="0" alt="micron" src="http://www.alternativerecursion.info/wp-content/uploads/2009/10/micron.png" width="408" height="396" /> </p>
<p>It is no surprise that both the Crucial CT25664BA1339.16FF and the Micron MT16JTF25664AZ-1G4F1 <a href="http://developer.intel.com/technology/memory/ddr/valid/ddr3_nonecc_udimm_results.htm">passed Intel’s validation tests</a>, as they are the exact same dimm:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ddr3h" border="0" alt="ddr3h" src="http://www.alternativerecursion.info/wp-content/uploads/2009/10/ddr3h.png" width="573" height="504" /> </p>
<p>&#160;</p>
<p>These new Micron dimms seem to run fine in my system without any problems.</p>
<p>I still don’t know why the P55 chipset/CPUs have problems with the non-16FF crucial dimms.&#160; So I by no means really understand the root of the issue, but I thought others might find this interesting.&#160; </p>
<p>&#160;</p>
<p>The memory Crucial will send you for a P55 system may not be the memory you want.&#160; </p>
<p>It also seems that many DDR3 kits that seem fine otherwise, do not work right with the P55. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=797</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>IT window</title>
		<link>http://www.alternativerecursion.info/?p=782</link>
		<comments>http://www.alternativerecursion.info/?p=782#comments</comments>
		<pubDate>Fri, 21 Aug 2009 21:21:32 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>

		<guid isPermaLink="false">http://www.alternativerecursion.info/?p=782</guid>
		<description><![CDATA[Current and near-future IT to keep an eye out for. Software&#62; Proof of concept www.wolframalpha.com shows a taste of the future of querying data. Windows 7 which is a refined build of Windows Vista is the best Desktop OS. Google Chrome 3 is by far the best consumer web browser. Google Voice provides 1 number [...]]]></description>
			<content:encoded><![CDATA[<p>Current and near-future IT to keep an eye out for.</p>
<p> <span id="more-782"></span><br />
<h1>Software&gt;</h1>
<p>Proof of concept <a href="http://www.wolframalpha.com">www.wolframalpha.com</a> shows a taste of the future of querying data.</p>
<p><a href="http://www.microsoft.com/windows/windows-7/">Windows 7</a> which is a refined build of Windows Vista is the best Desktop OS.</p>
<p><a href="http://www.google.com/chrome">Google Chrome</a> 3 is by far the best consumer web browser.</p>
<p><a href="www.google.com/voice">Google Voice</a> provides 1 number with voice, voicemail, and SMS capability.&#160; Those can be forwarded to a mobile phone if desired.&#160; There is a Google Voice application for android which lists text messages and voicemails for you to read/listen/delete/reply-to individually (it transcribes voicemails so you can read them before you choose to listen).&#160; Using this application, SMS’s and voicemails are transmitted over DATA, so they do not count as a text messages in your plan.&#160; The whole system has a web interface for you to send and view text messages, voicemails and call history.&#160; It will also allow you to keep in touch with SMS/voicemail while you travel outside of your cell phone service coverage.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<h1>Storage&gt;</h1>
<p>Seagate has 500GB platters which it uses in products like:</p>
<ul>
<li>3.5” 7200rpm 1TB <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16822148433">@$90</a> </li>
<li>3.5” 5900rpm 2TB <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16822148413">@$200</a> </li>
</ul>
<p>&#160;</p>
<p>Intel has <a href="http://www.intel.com/design/flash/nand/mainstream/index.htm">launched</a> their 2nd Generation MLC Solid State Disk using 34nm flash (as opposed to 50nm)</p>
<ul>
<li>2.5” 80GB <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16820167016">@$230</a> </li>
<li>2.5” 160GB <a href="http://www.zipzoomfly.com/jsp/ProductDetail.jsp?ProductCode=10010793&amp;prodlist=froogle">@$450</a> </li>
</ul>
<p>These new Intel drives support something called TRIM, which is also <a href="http://blogs.msdn.com/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx">supported in Windows 7</a>.&#160; Without Trim, when a file is deleted, the TOC is updated to consider that area on the drive empty, the data isn’t actually wiped.&#160; This is fine for rotating discs because the drive will simply over-write those bits when a new request is received.&#160; On current SSDs there is a problem, because blocks must actually be erased before a write, so when a request to write data on the previously used space, it must first erase the area, then write, and this costs time.&#160; TRIM tags the areas of the drive where the data was deleted, and the drive will (on its own time) erase those blocks of bits.&#160; This means in some cases a block won’t need to be erased prior to write, since the drive actually erased it on its own time.</p>
<p>This is good, but you should know that if there is live data in the vicinity of a write, the SSD must still read the entire block into memory, erase the block, add the new data to the data in memory, then write the entire block.&#160; The push should be for reducing the block sizes, to reduce the time-tax in random writes.&#160; Intel AFAIK has the smallest block size around.&#160; I’ll review this new Intel SSD soon.</p>
<p>&#160;</p>
<h1>Memory&gt;</h1>
<p>DDR3 has arrived at reasonable price points.</p>
<ul>
<li>Crucial 4GB (2x2GB) DDR3-1333 kit <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16820148262">@$65</a> </li>
<li>Crucial 4GB (2x2GB) DDR2-800&#160;&#160; kit <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16820148160">@$53</a> </li>
</ul>
<p>what DDR3 desperately needs is higher density, supposedly reasonably priced 4GB dimms will arrive in the coming months with Samsung chips.</p>
<p>&#160;</p>
<h1>CPU/Platforms&gt;</h1>
<p>We are in a weird space now.</p>
<p>Last year Intel launched its revolutionary 45nm Nehalem CPU which features an integrated memory controller.&#160; These chips launched with a very high-end and expensive x58 platform.&#160; Due to the price of the platform and (at the time) expensive DDR3 memory, this platform never really hit the average or value conscious consumer.</p>
<p>Because of this, most computers sold are using a relatively old Penryn CPUs built on 45nm technology without an integrated memory controller.&#160; These CPUs have been for sale since January 2008!&#160; And the Penryn was just a die-shrink of the Conroe which was famously launched in the summer of 2006.&#160; Great for 2006, but it’s been a long time.</p>
<p>In the coming weeks Intel will launch consumer-oriented Nehalem-based CPUs (Lynnfield).&#160; They will be slightly improved, slightly cheapened versions of the current Core i7.&#160; The new platform is the Intel P55 with a new socket (LGA1156) supporting the double channel memory controller (as opposed to 3x in the current i7).</p>
<p>These new chips are still 45nm.</p>
<p>&#160;</p>
<p>&#160;&#160; <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="new" border="0" alt="new" src="http://www.alternativerecursion.info/wp-content/uploads/2009/08/new2.png" width="519" height="370" /> </p>
<p>&#160; </p>
<p>That’s all well and good for high end consumer PCs and big and clunky laptops, but for thin-light mobile notebooks it doesn’t do that much, these are still 45nm, and they aren’t even attempting a Low or Ultra-Low Voltage variant.&#160; And the normal voltage new chip will still require 3 separate chips to complete the platform (including video = GPU).</p>
<p>What’s interesting is around January intel is releasing the 32nm Family of processors with GPU (graphics processor) integrated in the CPU package!&#160; </p>
<p>This reduces the number of major chips needed to 2 for the entire platform, and these chips will be lower power due to the die shrinks.</p>
<p>It’s called Westmere, and while desktop and clunky laptops will also get their own models, they don’t need it nearly as much.</p>
<p>here are some <a href="http://global.hkepc.com/3878">Westmere Desktop</a> options available in January:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="i5" border="0" alt="i5" src="http://www.alternativerecursion.info/wp-content/uploads/2009/08/i5.png" width="674" height="401" /> </p>
<p>GPU performance on Westmere will be roughly double that of the modern x4500HD, it also ads some video decoding features.</p>
<p>&#160;</p>
<p>Here’s the picture for the Ultra-Low-Voltage space (think Macbook /Air and smaller) dual cores. (~10W for CPU duties, ~8W for GPU)</p>
<table border="0" cellspacing="0" cellpadding="2" width="590">
<tbody>
<tr>
<td valign="top" width="74">.          <br />.</td>
<td valign="top" width="150">-12 months</td>
<td valign="top" width="50">now</td>
<td valign="top" width="65">+1 month</td>
<td valign="top" width="124">+6 months</td>
<td valign="top" width="125">+18 months</td>
</tr>
<tr>
<td valign="top" width="74">CPU          <br />.</td>
<td valign="top" width="150">1.4Ghz Penryn</td>
<td valign="top" width="50">=&gt;same</td>
<td valign="top" width="65">=&gt;same</td>
<td valign="top" width="124"><a href="http://www.xbitlabs.com/news/cpu/display/20090813091122_Intel_May_Unveil_Microprocessors_with_Integrated_Graphics_Cores_at_Consumer_Electronics_Show.html">1.2Ghz Westmere</a></td>
<td valign="top" width="125">Sandy Bridge</td>
</tr>
<tr>
<td valign="top" width="74">process tech CPU</td>
<td valign="top" width="150">45nm</td>
<td valign="top" width="50">=&gt;same</td>
<td valign="top" width="65">=&gt;same</td>
<td valign="top" width="124">32nm</td>
<td valign="top" wi<br />
dth="125">32nm</td>
</tr>
<tr>
<td valign="top" width="74">process tech GPU</td>
<td valign="top" width="150">65nm on Northbridge</td>
<td valign="top" width="50">=&gt;same</td>
<td valign="top" width="65">=&gt;same</td>
<td valign="top" width="124">45nm in-package</td>
<td valign="top" width="125">32nm on-die</td>
</tr>
<tr>
<td valign="top" width="74">Memory Controller</td>
<td valign="top" width="150">on Northbridge</td>
<td valign="top" width="50">=&gt;same</td>
<td valign="top" width="65">=&gt;same</td>
<td valign="top" width="124">on-die</td>
<td valign="top" width="125">on-die</td>
</tr>
<tr>
<td valign="top" width="74">chips in platform</td>
<td valign="top" width="150">3</td>
<td valign="top" width="50">=&gt;same</td>
<td valign="top" width="65">=&gt;same</td>
<td valign="top" width="124">2</td>
<td valign="top" width="125">probably 2</td>
</tr>
</tbody>
</table>
<p>Exciting times after Christmas for thin and light laptops like the Acer Timeline 13.3”, Dell adamo, MacBook Air, ThinkPad x301, etc.</p>
<p>&#160;</p>
<p>So in the thin notebook segment there will be a massive improvement on the platform in about 6 months, what about Netbooks with the ATOM?</p>
<p>&#160;</p>
<p>Currently the atoms are a bit too slow to be useful in a mini-notebook and use a bit too much power for small gadgets.</p>
<p>In the coming few months there will be new Atom processors, still using 45nm tech, but will have an Integrated Memory Controller, and an Integrated Graphics Processor, both on-die!</p>
<p>&#160;</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="intel_pine_trail_moblin_disclosure_4" border="0" alt="intel_pine_trail_moblin_disclosure_4" src="http://www.alternativerecursion.info/wp-content/uploads/2009/08/intel_pine_trail_moblin_disclosure_4.jpg" width="923" height="624" /> </p>
<p>&#160;</p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="137">&#160;</td>
<td valign="top" width="129">now</td>
<td valign="top" width="133"><a href="http://global.hkepc.com/3210">in a few months</a></td>
</tr>
<tr>
<td valign="top" width="137">ATOM</td>
<td valign="top" width="129">N270</td>
<td valign="top" width="133">N450</td>
</tr>
<tr>
<td valign="top" width="137">CPU process tech</td>
<td valign="top" width="129">45nm</td>
<td valign="top" width="133">45nm</td>
</tr>
<tr>
<td valign="top" width="137">chipset</td>
<td valign="top" width="129">945GSE+ICH7m</td>
<td valign="top" width="133">NM10 Express</td>
</tr>
<tr>
<td valign="top" width="137">chipset process tech</td>
<td valign="top" width="129">130nm</td>
<td valign="top" width="133">probably 65nm</td>
</tr>
<tr>
<td valign="top" width="137"># of chips in Platform</td>
<td valign="top" width="129">3</td>
<td valign="top" width="133">2</td>
</tr>
<tr>
<td valign="top" width="137">Platform’s footprint</td>
<td valign="top" width="129">2174mm^2</td>
<td valign="top" width="133">773mm^2</td>
</tr>
<tr>
<td valign="top" width="137">Platform AVG PWR</td>
<td valign="top" width="129">4W</td>
<td valign="top" width="133">2W</td>
</tr>
<tr>
<td valign="top" width="137">Platform TDP</td>
<td valign="top" width="129">16W</td>
<td valign="top" width="133">7W</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>Drastic decrease in power usage for the platform, down to 2 chips instead of 3… should allow for fan-less designs.&#160; The atom finally becomes modernized!&#160; May be still slower than desired.&#160; In 2010 we should see 32nm Atoms.</p>
<p>&#160;</p>
<p>So huge improvements in the netbook space to come real soon!</p>
<p>&#160;</p>
<p>I havn’t talked about AMD, currently they are not competitive in the low-power mobile space (in fact they don’t have any 45nm parts, so they can’t compete on energy efficiency).&#160; But they have migrated to 45nm on the desktop and probably have the best integrated platform out there.&#160; Speaking of the 785g chipset paired with a 45nm AMD CPU, if you need an inexpensive and quick desktop today, buy this.</p>
<p>AMD has this corner dominated until Intel releases Westmere after Christmas.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>Mobile Phones:</p>
<p>currently only 3 worth mentioning:</p>
<ul>
<li>iPhone 3GS </li>
<li>Palm Pre </li>
<li>HTC/T-mobile G1 and myTouch 3G </li>
</ul>
<p>The next 6 months will prove interesting as around 6 more Google Android mobile phones will be released on T-mobile, AT&amp;T and Sprint.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=782</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript Performance in modern browsers *DOM results added</title>
		<link>http://www.alternativerecursion.info/?p=617</link>
		<comments>http://www.alternativerecursion.info/?p=617#comments</comments>
		<pubDate>Wed, 11 Mar 2009 00:30:32 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>

		<guid isPermaLink="false">http://www.alternativerecursion.info/?p=617</guid>
		<description><![CDATA[I use google chrome almost exclusively when doing the web, but I see many people using a wide variety of web browsers these days. So I wanted to see how fast they are in the immensely popular javascript: &#60;&#8211;relative speed. (higher is better)—&#62; OS: windows 7 64-bit b7048 RAM: 4GB DDR2-800 CPU: intel 2-core 3Ghz [...]]]></description>
			<content:encoded><![CDATA[<p>I use google chrome almost exclusively when doing the web, but I see many people using a wide variety of web browsers these days.</p>
<p>So I wanted to see how fast they are in the immensely popular javascript:</p>
<p><img class="alignnone size-full wp-image-657" title="js6" src="http://www.alternativerecursion.info/wp-content/uploads/2009/03/js61.png" alt="js6" width="737" height="437" /></p>
<p align="center">&lt;&#8211;relative speed. (higher is better)—&gt;</p>
<p align="center">
<p><a title="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html" href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html"></a></p>
<pre>OS: windows 7 64-bit b7048
RAM: 4GB DDR2-800
CPU: intel 2-core 3Ghz Penryn w/6MB cache
HDD: Samsung F1 7200rpm
Chipset: intel G45</pre>
<p>v8 is <a title="http://v8.googlecode.com/svn/data/benchmarks/v3/run.html" href="http://v8.googlecode.com/svn/data/benchmarks/v3/run.html">http://v8.googlecode.com/svn/data/benchmarks/v3/run.html</a></p>
<p>sunspider is <a title="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html" href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">http://www2.webkit.org/perf/sunspider-0.9/sunspider.html</a></p>
<p>dromaeo JS is <a title="http://dromaeo.com/?dromaeo" href="http://dromaeo.com/?dromaeo">http://dromaeo.com/?dromaeo</a></p>
<p>dromaeo DOM is <a href="http://dromaeo.com/?dom|jslib|cssquery">http://dromaeo.com/?dom|jslib|cssquery</a></p>
<p>(ie and safari 3 were not able to complete the dromaeo DOM test suite w/default settings)</p>
<p>note:</p>
<p>the 64-bit firefox I tested is not official; <a href="http://www.mozilla-x86-64.com/">http://www.mozilla-x86-64.com/</a></p>
<p>google chrome 2.0.269.0 is a dev/beta build.</p>
<p>opera, IE, chrome, firefox, k-meleon, safari are all 32-bit unless otherwise noted.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=617</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Intel to the rescue?: mainstream SSDs</title>
		<link>http://www.alternativerecursion.info/?p=406</link>
		<comments>http://www.alternativerecursion.info/?p=406#comments</comments>
		<pubDate>Tue, 19 Aug 2008 20:02:02 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[ssd]]></category>

		<guid isPermaLink="false">http://www.alternativerecursion.info/?p=406</guid>
		<description><![CDATA[looks like intel is implying they have a drive cluster size an order of magnitude smaller than current mainstream MLC drives. This (obviously?) yields much better random small write performance, and according to this info, Intel did it w/o sacrificing STR&#8230; I stole the photos from this anandtech piece. After my 2 previous SSD investigations, [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/intelssd1.jpg" border="0" alt="intelSSD" width="550" height="413" /></p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/intelssd21.jpg" border="0" alt="intelSSD2" width="550" height="385" /></p>
<p>looks like intel is implying they have a drive cluster size an order of magnitude smaller than current mainstream MLC drives.</p>
<p>This (obviously?) yields much better random small write performance, and according to this info, Intel did it w/o sacrificing STR&#8230;</p>
<p>I stole the photos from <a href="http://anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3376">this</a> anandtech piece.</p>
<p>After my 2 previous SSD investigations, I can&#8217;t wait to get my hands on these.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=406</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Storage, Raid, and intel&#039;s ICHxR</title>
		<link>http://www.alternativerecursion.info/?p=31</link>
		<comments>http://www.alternativerecursion.info/?p=31#comments</comments>
		<pubDate>Wed, 13 Aug 2008 08:24:46 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>
		<category><![CDATA[ich9r]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://alternativerecursion.info/?p=90</guid>
		<description><![CDATA[If you look in the Internet, in various forums including storagereview, hardocp, and anandtech you will find hundreds of people talking about RAID.&#160; I&#8217;d say almost all of them involve someone thinking about using some onboard raid solution that came with their computer, and a bunch of other more &#8220;experienced&#8221; forum members posting replies to [...]]]></description>
			<content:encoded><![CDATA[<p>If you look in the Internet, in various forums including storagereview, hardocp, and anandtech you will find hundreds of people talking about RAID.&nbsp; I&#8217;d say almost all of them involve someone thinking about using some onboard raid solution that came with their computer, and a bunch of other more &#8220;experienced&#8221; forum members posting replies to the effect of: &#8220;don&#8217;t even bother with it, buy a &#8220;real&#8221; raid controller and go from there&#8221;.</p>
<p>Let&#8217;s take a deep look at storage, and while we are there we can stop and see if the if Intel&#8217;s ubiquitous ich9r is any good at raid.</p>
</p>
<p><span id="more-31"></span>
</p>
<p>&nbsp;</p>
<p>The Performance analysis of storage is generally partitioned in two, Sequential R/W transfer rates STR, and Random R/W performance usually measured in I/Os per second or a Latency measurement.</p>
<p>&nbsp;</p>
<p><font size="7">STR&gt;</font></p>
<p><font size="7"></font></p>
<p>Sequential Transfer Rate (STR) is the data throughput a storage device can achieve without having to seek to various parts of the disc.</p>
<p>&nbsp;</p>
<p><strong>Hard disc primer for STR:</strong></p>
<p>SCSI, SAS, ATA-66/100/133, and SATA1/2 all had impressive throughput rates for their time, but the interface was never the bottleneck.</p>
<p>The discs themselves have sustained transfer rates (STR) limited by:</p>
<p>1. Linear Speed <strong>L</strong> of the Head which is a function of:</p>
<ul>
<li>Rotational Velocity <strong>V</strong> (revolutions per time) on most hard drives this is not dynamic.
<li>Location of the data <strong>r</strong> (radial distance of the head where the data is being operated on). </li>
</ul>
<p>so <strong>L</strong>=<strong>V</strong>*2*Pi*<strong>r</strong> , in a normal 7200 revolution per minute, 3.5&#8243; hard disc (radius near 1.5&#8243;) the Linear Velocity <strong>L</strong> = 7200*2*Pi*1.5 = ~67858 inches per minute at the outer edge, less as you get closer to the center.</p>
<p>this Linear Velocity reduces in a linear fashion as you approach the spindle of the disc.</p>
<p>2. Linear data density <strong>d</strong>, (bits per inch), which is usually proportional to the square root of the areal density (higher density means the head can traverse and r/w more sectors for a given linear velocity)</p>
<p>so</p>
<p>Sequential Throughput ~ <strong>L</strong> * <strong>d</strong> ~ 2 * Pi *<strong> V</strong> * <strong>r</strong> * <strong>d</strong></p>
<p>so there you have it, in a given disc, sequential data throughput is linearly related to distance from center.</p>
<p>this is why 3.5&#8243; drives are generally faster in sequential operations since much of the data is a lot further away from the center than any 2.5&#8243; disc.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>It may not be called a disc problem, but effective disc large-file transfer rate can be throttled if the data has to be fragmented on various spots on the disc, since that requires head seeks for something that could be a sequential operation. Seeks cost time and transfer no data.</p>
<p>Carefully chosen modern 7200rpm SATA2 high-areal density discs like the <a href="http://www.google.com/search?q=WD6400AAKS">this</a> or <a href="http://www.samsung.com/global/business/hdd/productmodel.do?group=72&amp;type=61&amp;subtype=63&amp;model_cd=249&amp;ppmi=1155">this</a> can perform sustained sequential reads or writes close to 1Gb per second at the outer edge. The discs I have been messing with ( Western Digital <span class="menusubblck">WD6400AAKS ) have sequential performance around 900Mb/sec near the outer edge, so they will bottleneck large 1,000Mb/sec Ethernet transfers, but only a bit.</span></p>
<p><a href="/wp-content/uploads/2008/06/write.png" target="_blank"><img class="alignnone size-full wp-image-50" title="writesm" height="119" alt="" src="http://www.alternativerecursion.info/wp-content/uploads/2008/06/writesm1.png" width="143"></a> <a href="/wp-content/uploads/2008/06/read.png" target="_blank"><img class="alignnone size-medium wp-image-49" title="readsm" height="119" alt="" src="http://www.alternativerecursion.info/wp-content/uploads/2008/06/readsm1.png" width="143"></a></p>
<p>these graphs are decreasing because the program calls 100% the innermost, and 0% the outermost of the disc&#8230; also you may notice the graphs are not linear as I suggested, this is because the horizontal axis is &#8220;%&#8221; which is % of data, not % of radial distance.</p>
<p>I will not bore anyone with the math/logic to understand why this makes sense, but it does&#8230; and graphing it like HD-Tune did here should theoretically yield a quadratic, which it seems to by the pictures.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font size="7">Latency&gt;</font></p>
<p>The other major performance specification of any storage system is the latency, or time required to begin a read or write at a random location on the disc. </p>
<p>&nbsp;</p>
<p>In a traditional rotating disc drive, the latency is not so straightforward to predict based on the geometry.</p>
<p>Clearly the latency cannot be predicted simply by the location of the data, one must also know where the head will be before needing to access the data.&nbsp; But lets talk of average random access times&#8230;</p>
<p>Certainly faster rotation will minimize rotational delays, while higher areal density can effectively minimize real world latency if it means you can cram more data at the outer edge, minimizing or eliminating the need for the head to go towards the spindle&#8230; but on a disc full of data, the argument is irrelevant.</p>
<p>Let me save a more thorough analysis of seek times for another day, and lets think of it as a latency (penalty) for each read/write that is not adjacent to the previous i/o.</p>
<p>&nbsp;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>&nbsp;</p>
<p>question: does the revision and/or firmware of a disc drive matter?</p>
<p>answer: I like to use graphs to communicate, so here goes:</p>
<p>(these are all WD6400AAKS Western Digital 640GB SE16 drives, but different versions)</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="614" alt="wd6400AAKS cacheless reads log" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/wd6400aaks-cacheless-reads-log1.png" width="684" border="0"></p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="608" alt="wd6400AAKS cacheless reads linear" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/wd6400aaks-cacheless-reads-linear1.png" width="691" border="0"></p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="610" alt="wd6400AAKS cacheless writes" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/wd6400aaks-cacheless-writes1.png" width="689" border="0"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>So, clearly the revision/version of a specific disc drive matters significantly. The 00A7B0 was quicker in latency, but slower in STR than the other two.&nbsp; The 65A7B0 was the best in STR.</p>
<p>&nbsp;</p>
<p>ok, everything so far was for a specific type of storage device consisting of 1 head and 1 rotating disc (yes there are multiple platters , each face getting a head, but they do not seek independently, so effectively we can consider it as 1 face of 1 platter with 1 head.) </p>
<p>&nbsp;</p>
<h2><strong>R</strong>edundant <strong>A</strong>rray of <strong>I</strong>nexpensive <strong>D</strong>iscs?&gt;</h2>
<p>Although the actual words which make the acronym are not all that applicable today (since many raid volumes lack redundancy and few are cheap), RAID has taken off as an admirably simple solution to achieve what many situations require:</p>
<p>&nbsp;</p>
<p>Primer:</p>
<p>Why would anyone want to use raid?</p>
<p>+a given hard disk around a 5% chance of failing per year. (<a href="http://research.google.com/archive/<br />
disk_failures.pdf" target="_blank">this depends on age and temperature and utilization</a>) so It&#8217;s nice if a failure does not result in data loss or even any downtime at all.</p>
<p>+having a larger pool, rather than several smaller pools to store data is preferable as it eases file management. (no shuffling around data to various discs to make room)</p>
<p>+the hope that n discs could be n times faster than 1&#8230;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>RAID 1</strong></p>
<p>If your only concern is maintaining data integrity and availability in the event of a disc failure, RAID 1 &#8220;mirroring&#8221; is the obvious solution. The idea that all writes are done to 2 discs, instead of one. If one disc fails, it simply reads from the remaining one, since all the data on both drives is identical.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="335" alt="r1" src="http://www.alternativerecursion.info/wp-content/uploads/2008/06/r1.png" width="379" border="0"></p>
<ul>
<li>write throughput depends on implementation, but could be slower than a single disc
<li>write latency should be a bit worse, since it must be written on both drives, the write is not complete until both seek, so its the slower of the two seeks, every time.
<li>read latency could be slightly better than a single disc, as a smart controller could only request the data from the disc who&#8217;s head is closer to the data, or request it from both, and take the one who gives it first.
<li>read speed throughput depends on implementation, but could be faster than a single disc, as the controller could have each disc read a different half of the file, halving the time it takes to read the whole file&#8230; this is not generally implemented.
<li>capacity is halved, as the 2 discs have identical data, usable storage is only the data capacity of one disc, so it costs 1/2 capacity for the redundancy of 2-disc raid 1.
<li>If each disc has a f % annual failure rate, the raid1 array will have a 100*( (f/100)^2 ) % failure rate. (so if the disc failure rate is 5.0%, the raid1 volume failure rate will be 0.25% ) </li>
</ul>
<p>&nbsp;</p>
<p><strong>RAID 0</strong></p>
<p>If you want a larger pool of data then a single drive can provide, or you want faster file reads and writes, and you aren&#8217;t worried about disc failure than you RAID 0 is the solution.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="296" alt="r0" src="http://www.alternativerecursion.info/wp-content/uploads/2008/06/r0.png" width="627" border="0"></p>
<ul>
<li>read and write throughput should linearly improve with the number of drives in the array.
<li>Latency should be a bit worse than a single disc, as each disc needs to seek to the file, so the longest any of the heads have to seek is your access time for that read or write action. </li>
</ul>
<ul>
<li>volume capacity is simply the number of discs times the capacity of each disc (if they are not the same size, then the capacity of the smallest disc times the number of discs), no or very little wasted space. </li>
</ul>
<ul>
<li>there is absolutely no data redundancy, in fact if each drive has a f% chance to die in a year, then a n-disc raid0 volume has a 100*(1-(1-f/100)^n)% chance of failing resulting in data loss of the entire volume. (so a 4-disc array in raid0 where each drive has a 5% chance of failing annually means the raid0 volume has a 18.55% chance of failing each year.) </li>
</ul>
<p>So, raid1 gives you redundancy but no speed gain, while eating up 1/2 of your disc space, and raid0 can yield a lot of streaming speed gains, but will actually make your reliability much worse.</p>
<p><strong></strong>&nbsp;</p>
<p><strong>RAID1+0 or RAID 10</strong></p>
<p>This is a even-number-of-discs &gt;= 4 solution where the controller uses raid1 for each pair of discs, and RAID 0 to stripe the pairs together into a larger, faster volume.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="271" alt="r10" src="http://www.alternativerecursion.info/wp-content/uploads/2008/06/r10.png" width="605" border="0"></p>
<pre>6-disc raid 10 :</pre>
<pre>                       RAID 0
       .-----------------------------------.
       |                 |                 |
     RAID 1            RAID 1            RAID 1
   .--------.        .--------.        .--------.
   |        |        |        |        |        |
120 GB   120 GB   120 GB   120 GB   120 GB   120 GB
  A1       A1       A2       A2       A3       A3
  A4       A4       A5       A5       A6       A6
  A7       A7       A8       A8       A9       A9
  A10      A10      A11      A11      A12      A12</pre>
<p>if there are n-discs in the array:</p>
<ul>
<li>Read throughput should be about n/2 times single disc speeds.
<li>Read latency could be close to a single disc, as raid0&#8242;s latency is the worst of all member volumes, but here member volumes are raid1, where each could take only the fastest seek of its member discs. </li>
</ul>
<ul>
<li>Write throughput could be close to n/2 times single disc speeds, but is dependant on the implementation as each write must duplicated on both drives of each of the mirrored volumes.
<li>Write latency should be in the same ballpark as a single disc, but should be worse as both raid1 and raid0 must complete the seek on all member drives for the operation to complete. </li>
</ul>
<ul>
<li>total volume size of RAID10 arrays are n/2 times the single disc capacity, so the cost of redundancy here is 50% of the disc space. </li>
</ul>
<ul>
<li>If the disc failure rate is f%, then the raid10 volume failure rate will be 100*(1-(f/100)^2)^(n/2) %. If each drive has a 5.0% annual failure rate, a 4-disc RAID10 array will have a failure rate of 0.499% , while a 6-disc RAID10 array will have a failure rate of 0.748% </li>
</ul>
<p>So raid10 might seem like a decent balance of performance and reliability, but it is at the cost of 50% of the hard drives involved.</p>
<p>&nbsp;</p>
<p><strong></strong></p>
<p><strong>RAID 5</strong></p>
<p>RAID5 arrays are of 3 or more discs where the data is striped across all discs, but for each stripe of data, a parity bit is written on one of the discs, so if one drive fails, the data can be recreated or recovered for each stripe.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="272" alt="r5" src="http://www.alternativerecursion.info/wp-content/uploads/2008/06/r5.png" width="603" border="0"></p>
<ul>
<li>Read throughput should be n-1 times as fast as a single disc.
<li>Read latency should be slightly worse than a single disc, as all but one of the discs must complete the seek, for the operation to complete. </li>
</ul>
<ul>
<li>Write throughput could be n-1 times as fast as a single disc, but there are some important notes on write performance. While data is being written, the controller must calculate the parity for each stripe, this has the potential to slow down writing significantly, while some may call this parity writing a latency, but since it is a constant tax on all writes, big or small, I&#8217;ll consider to effectively throttle write throughput. Cache/buffer can buy time for the system to calculate this parity.
<li>Write latency in raid 5 is inherently troublesome.&nbsp; not only does the system need to calculate parity for each stripe that is written, and write the corresponding parity bit, but if the data being written is smaller than the stripe itself, the controller must first read the stripe, then modify the data (adding / changing bits as needed), and then calculate parity on the entire stripe, and write it entirely.&nbsp; I will refer to this as the partial-stripe-write issue/penalty. </li>
</ul>
<ul>
<li>Total usable volume size of a RAID 5 array is about (n-1) * smallest-disc-size, so a 4 disc array will have a usable storage area of 3*disc-size. </li>
</ul>
<ul>
<li>a n-disc RAID 5 volume failure rate will be the odds that 2 (or more) discs fail in the array.&nbsp; If each disc has a failure rate of f%, the RAID 5 volume failure rate is 100*[1- ((1-f/100)^n * (f/100)^0 + nC1*(1-f/100)^(n-1) * (f/100)^1)] %.&nbsp; (for a 4-disc array where the Annual Failure Rate per-disc is 5%, the failure rate of the RAID 5 volume is 1.40%, 3.2% for a 6-disc array)&nbsp; In production environments the effective failure rate will be closer to zero for the volume since a failed disc will be replaced in a matter of hours or days, the array will be rebuilt and redundancy restored. </li>
</ul>
<p><strong>.</strong></p>
<p><strong></strong></p>
<p><strong>RAID 5 clearly looks like the best and most scalable raid technology listed above, </strong>providing streaming speed boosts and protection from disc failure, while only &#8220;wasting&#8221; 1 disc of the array for parity&#8230;. but do we need an expensive or obscure RAID controller to get decent write performance in the real world?</p>
<p><strong></strong></p>
<p><strong>enter the Intel ICH9r.</strong></p>
<p>this is Intel&#8217;s current raid-enabled southbridge, paired with most 3-series northbridges and many motherboard manufactures have paired it with the x48 northbridge.</p>
<p>Obviously the southbridge does many things, but here let&#8217;s look at it solely as a raid controller.</p>
<p>During the write of a raid 5 stripe, a parity bit must be calculated from the data to be written, before the write occurs.&nbsp; Some high-end RAID controllers perform this calculation with the aid of an XOR processor.&nbsp; Intel&#8217;s ICH9r does not have an XOR processor, it leverages the CPU to do the calculation.&nbsp; In the past this may be an enormous concern, today we have dual and quad core CPUs on the cheap, yielding an excessive amount of unused processing power in most small business machines.</p>
<p>Another trick expensive RAID controllers use is onboard cache, for aiding in small writes, this is critically important because the system must calculate the parity of a stripe before it is written, so to have a buffer to buy time w/o holding up other IOs is key.&nbsp; Intel&#8217;s ICH9r has no cache, but it can simply take some of the very cheap and abundant system memory, It may be more now days, <a href="ftp://download.intel.com/design/chipsets/applnots/31085501.pdf" target="_blank">but back in the ich7r days it allocated 4MB</a> of system memory on boot for caching raid arrays.&nbsp; The is enough to handle small random writes gracefully, dealing with the partial-stripe-write issue.</p>
<p>So with that out of the way, the ich9r is a hardware raid controller in that, the raid arrays are transparent to the OS, but it does utilize the system resources to do the XOR for the parity calculation and volume write caching.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>That&#8217;s all well and good, but text is cheap, lets look at graphs:</strong></p>
<p>Read Throughput:</p>
<p><a href="http://www.alternativerecursion.info/wp-content/uploads/2008/08/read-str1.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="726" alt="read_str" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/read-str-thumb1.png" width="963" border="0"></a></p>
<p>&nbsp;</p>
<p>Read Latency:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="728" alt="read_latency" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/read-latency1.png" width="970" border="0"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Write Throughput:</p>
<p>&nbsp;</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="742" alt="write_str" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/write-str1.png" width="1014" border="0"></p>
<p>Here we see the ICH9R doing a pretty good job in Raid10 and&nbsp; Raid5.&nbsp; In raid10 performance is almost double a single disc, which is what you would expect/hope for.&nbsp; In raid5 you might hope for tipple the performance of a single drive, but it looks like we will have to settle for double.&nbsp; <strong>Clearly if you are not going to enable disc and raid cache, you should not use raid5 for anything where write performance matters.</strong></p>
<p>&nbsp;</p>
<p>Write Latency:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="739" alt="write_latency" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/write-latency1.png" width="1011" border="0"></p>
<p>&nbsp;</p>
<p>Here we see impressive number from the ICH9R in Raid10, latency is significantly less than a single disc if disc cache is enabled, I&#8217;m not sure why this is, but possibly a larger pool of cache from both volumes in the stripe.&nbsp; Raid5 is, as expected worse than a single disc in write latency, with disc and raid cache enabled, the latency is comparable, yet still worse than a single disc.</p>
<p>&nbsp;</p>
<p><strong>is it really this simple?</strong>&nbsp;</p>
<p>(Can the performance of these drives really be characterized by only these metrics?)</p>
<p>for a single disc:</p>
<p>&nbsp;<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="460" alt="1xread_prediction" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/1xread-prediction1.png" width="805" border="0"></p>
<p>&nbsp;</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="505" alt="1xwrite_prediction" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/1xwrite-prediction1.png" width="834" border="0"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Overall for a single disc, with or without cache the 2 metric model seems to work pretty well, although around 1MiB request sizes we see actual performance fail to match predicted, especially for writes.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>What about for Raid1:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="740" alt="2xR1_read_prediction" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/2xr1-read-prediction1.png" width="813" border="0"></p>
<p>It&#8217;s almost as if it only does striped reads when RAID cache is off and the read data request is larger than 64MiB&#8230;&nbsp; strange.</p>
<p>What about writes?:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="722" alt="2xR1_write_prediction" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/2xr1-write-prediction1.png" width="831" border="0"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Here we see a discrepancy across the board at 1MiB transfers&#8230;Clearly HDD cache on, RAID cache off is ideal for Raid 1 on the Intel ich9r.</p>
<p>&nbsp;</p>
<p>What about Raid10:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="656" alt="4xR10_read_prediction" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/4xr10-read-prediction1.png" width="794" border="0"></p>
<p>&nbsp;</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="690" alt="4xR10_write_prediction" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/4xr10-write-prediction1.png" width="807" border="0"></p>
<p>Let&#8217;s see what&#8217;s going on at small write request sizes:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="685" alt="4xR10_write_prediction_log" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/4xr10-write-prediction-log1.png" width="809" border="0"></p>
<p>Here we see the 1st order latency/str model really failing to model the mid-size transfer random write performance of the drive&#8230;</p>
<p>Although it doesn&#8217;t have the highest write STR or latency, it seems RAID cache should be disabled, with hdd cache on because the read STR is so much larger.&nbsp; Intel&#8217;s raid cache seems to have adverse affect in many scenarios.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>And finally, Raid 5:</p>
<p>&nbsp;</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="609" alt="4xR5_read_prediction" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/4xr5-read-prediction1.png" width="748" border="0"></p>
<p>Raid5 random read performance is decently approximated by the 1st order latency/str model, although there are significantly under-performing real results in the mid-range as seen above from 1MiB to 64MiB data request size.</p>
<p>what about writes:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="682" alt="4xR5_write_prediction" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/4xr5-write-prediction1.png" width="874" border="0"></p>
<p>at least in the mid range this simple model of latency/str seems to fail to really characterize performance here&#8230; Let&#8217;s look at the log scale:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="685" alt="4xR5_write_prediction_log" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/4xr5-write-prediction-log1.png" width="874" border="0"></p>
<p>&nbsp;</p>
<p>Cacheless and disc cache only raid5 volume configurations seem to act as expected by the simplistic 1st order latency/STR model&#8230;</p>
<p>But that is becuase the model doesn&#8217;t really deal with the cache.&nbsp; Cache can greatly improve random write effective latency, since the system does not have to wait for the controller to calculate the parity bit and then physically write the entire stripe to the disc&#8230; eventually as the transfer request size is large, this cache becomes irrelevant.</p>
<p>&nbsp;</p>
<p>I am not one to be content to leave things w/o a full understanding, so lets dig deeper:</p>
<p>&nbsp;</p>
<p>OK, so we know w/o cache the raid5 volume has a latency of 62.5ms on average..</p>
<p>that includes a seek and a partial-stripe-write penalty&#8230;</p>
<p>&nbsp;</p>
<p>we know from a single cacheless disc, the seek time is about 17.5ms,</p>
<p>so the partial-stripe-write penalty = 62.5-17.5 = 45ms</p>
<p>As the write request gets large relative to stripe size (here is 64KiB), the write will probably incurr 1 seek and a partial-write penalty at the start, and a partial-write-penalty at the end of the write for a total of 1 seek and 2 partial-stripe-write penalties. This means the effective random write latency is 17.5+45+45 = 107.5ms, knowing this I can go back and re-calculate the STR on buffered writes, for example with HDD&amp;RAID cache enabled the 4-disc r5 volume got 0.31 iops in random writes of 512MiB, so</p>
<p>.1075 + 512/STR = 1/0.31 ==&gt; STR = 164.2MiB/sec write with disc and ich9r cache enabled.</p>
<p>ok so lets model a volume with 107.5ms random write latency and 164.2MiB/sec write STR:</p>
<p>&nbsp;</p>
<p>&nbsp;<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="679" alt="4xR5_write_prediction_yes_log" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/4xr5-write-prediction-yes-log21.png" width="817" border="0"></p>
<p>&nbsp;</p>
<p>This predicts it dead on after 1MiB data request sizes&#8230;</p>
<p>&nbsp;</p>
<p>Now this makes some sense&#8230; with small data sizes, the caching can buffer the writes, buying some time for the system to read the stripe, make the write in the buffer, then calculate the parity bit for that modified stripe without holding up the next operation&#8230;.(the data is written to the storage device, even though its actually not written to the physical platters yet). </p>
<p>&nbsp;</p>
<p>The combined cache does seem to adequately buffer the sequential writes, by giving the system time to calculate the parity bit before its actually written to the platters, it is not 3x the STR of a single disc, as it theoretically could be, but its still admirable.</p>
<p>&nbsp;</p>
<p>note* performance was a bit better with OS caching,, (the &#8220;advanced performance&#8221; option under the volume properties in the device manager), and while I don&#8217;t feel scared when using the disc or raid controller&#8217;s cache&#8230; I think the slight gains (~5% write STR) isn&#8217;t worth the bother of having yet another place data is written to without actually going to the disc.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Brief Cache Talk:</strong></p>
<p>I focused on various caching schemes throughout the article, and for good reason, it has massive effects on real-world performance.</p>
<p>there is something worth mentioning here:</p>
<p>In OS level caching, writes can be buffered in the system memory, it&#8217;s possible something could interfere before this data makes it to the hard disc.&nbsp; While this is probably not a big concern, ive seen little-to-zero advantages in my testing in windows, in fact sometimes the overhead.</p>
<p>Raid Controller cache, for many fancy controllers are on the controller card itself, so its a bit independent of the OS, which is good.. but if power goes out this data is not written to the discs and power is lost.&nbsp; High end controllers have cache batteries which are meant to keep that data alive until its written to the disc, in the event where power is lost.&nbsp; This intel controller dedicates some of the system ram to itself on boot, so its fairly isolated from the system.&nbsp; The battery backup i think is a like using a hammer to fix a computer&#8230; Yes it will be able to put the cache on teh disc, but who&#8217;s to say the cache doesn&#8217;t have partial information of files, resulting in corruption&#8230;&nbsp;&nbsp; </p>
<p>Hard Disc Cache is basically a bit of ram on the drive itself, it is used for buffering writes and buffering IOs to allow for re-ordering (NCQ), anything in this buffer will not be saved to disc in the event of power-loss to the system.</p>
<p>Disabling cache altogether is also not a solution, if the head of the disc if half way through a write operation, or a file write, partial writes will occur, possibly resulting in corruption/unusable data.</p>
<p>Bottom line if you care about integrity of your data, your system simply can not lose power, spend the money on redundant PSU&#8217;s and UPS&#8217;s rather than the (imho) useless cache battery system.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1><strong>Conclusions&gt;</strong></h1>
<p>&nbsp;</p>
<p>well, this was more a lesson in storage than anything else, but lets see:</p>
<p>&nbsp;</p>
<p>The ICH9R does a very admiral job, we aren&#8217;t talking about breaking any records here but performs respectively as long as you configure the caching properly.&nbsp; It also has price (nearly free) going for it as well as an industry giant supporting it&#8230; not to mention its ginormous userbase and forward/backward compatibility of raid volumes.</p>
<p>In summery, raid on the ICH9R:</p>
<table cellspacing="0" cellpadding="0" width="1050" border="1">
<tbody>
<tr>
<td valign="top" width="423"><strong></strong></td>
<td valign="top" width="107"><strong>1-disc AHCI</strong></td>
<td valign="top" width="127"><strong>2-drive raid1</strong></td>
<td valign="top" width="117"><strong>4-drive raid10</strong></td>
<td valign="top" width="123">4-drive raid10</td>
<td valign="top" width="150"><strong>4-drive raid5 </strong></td>
</tr>
<tr>
<td valign="top" width="423"><strong>optimal configuration</strong></td>
<td valign="top" width="108"><strong>hdd cache on</strong></td>
<td valign="top" width="127"><strong>hdd cache on</strong></td>
<td valign="top" width="117"><strong>hdd cache on</strong></td>
<td valign="top" width="123">hdd&amp;raid cache on</td>
<td valign="top" width="150"><strong>hdd&amp;raid cache on</strong></td>
</tr>
<tr>
<td valign="top" width="423"><strong>cost per usable GB</strong></td>
<td valign="top" width="109"><strong>13.3 cents</strong></td>
<td valign="top" width="127"><strong>26.6 cents</strong></td>
<td valign="top" width="117"><strong>26.6 cents</strong></td>
<td valign="top" width="123">26.6 cents</td>
<td valign="top" width="150"><strong>17.7 cents</strong></td>
</tr>
<tr>
<td valign="top" width="423"><strong>annual failure rate (assuming no disc replace/volume rebuild)</strong></td>
<td valign="top" width="110"><strong>5%</strong></td>
<td valign="top" width="127"><strong>0.25%</strong></td>
<td valign="top" width="117"><strong>0.50%</strong></td>
<td valign="top" width="123">0.50%</td>
<td valign="top" width="150"><strong>1.4%</strong></td>
</tr>
<tr>
<td valign="top" width="422"><strong>Sequential Reads (average)</strong></td>
<td valign="top" width="111"><strong>78MiB/sec</strong></td>
<td valign="top" width="127"><strong>144MiB/sec</strong></td>
<td valign="top" width="117"><strong>237MiB/sec</strong></td>
<td valign="top" width="123">175MiB/sec</td>
<td valign="top" width="150"><strong>232MiB/sec</strong></td>
</tr>
<tr>
<td valign="top" width="421"><strong>Random Read Latency (average)</strong></td>
<td valign="top" width="112"><strong>12.9ms</strong></td>
<td valign="top" width="127"><strong>13.2ms</strong></td>
<td valign="top" width="117"><strong>15.9ms</strong></td>
<td valign="top" width="123">14.3ms</td>
<td valign="top" width="150"><strong>14.34ms</strong></td>
</tr>
<tr>
<td valign="top" width="420"><strong>Sequential Writes (average)</strong></td>
<td valign="top" width="113"><strong>84.6MiB/sec</strong></td>
<td valign="top" width="127"><strong>85.1MiB/sec</strong></td>
<td valign="top" width="117"><strong>148.3MiB/sec</strong></td>
<td valign="top" width="123">161.5MiB/sec</td>
<td valign="top" width="149"><strong>164.2MiB/sec</strong></td>
</tr>
<tr>
<td valign="top" width="420"><strong>Random Latency (average) on small writes</strong></td>
<td valign="top" width="114"><strong>12.9ms</strong></td>
<td valign="top" width="127"><strong>7.35ms</strong></td>
<td valign="top" width="117"><strong>4.3ms</strong></td>
<td valign="top" width="123">4.1ms</td>
<td valign="top" width="149"><strong>9.65ms</strong></td>
</tr>
<tr>
<td valign="top" width="419"><strong>Random Latency (average) on large writes</strong></td>
<td valign="top" width="115"><strong>17.5ms</strong></td>
<td valign="top" width="127"><strong>18.1ms</strong></td>
<td valign="top" width="117"><strong>18.9ms </strong></td>
<td valign="top" width="123">18.9ms</td>
<td valign="top" width="150"><strong>107.5ms</strong></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>There is more to do, but my time is finite.</p>
<p>to do: present my data and analyze how allowing multiple random IOs to accumulate before a read/write affects performance.</p>
<p>to do: in the future compare the ICH9r with a fancy/expensive raid controller</p>
<p>to do: confirm that Intel&#8217;s new ICH10R performance almost identical with the ICH9R</p>
<p>to do:&nbsp; RAID-Z&nbsp; &lt;&#8211; this is big, but seemingly not ready for prime-time.</p>
<p>to do: clean up this article and fix some slight imperfections here and there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=31</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>RiDATA Ultra-S Plus 64GB SSD</title>
		<link>http://www.alternativerecursion.info/?p=276</link>
		<comments>http://www.alternativerecursion.info/?p=276#comments</comments>
		<pubDate>Sun, 10 Aug 2008 16:55:31 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>
		<category><![CDATA[ssd]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://www.alternativerecursion.info/?p=276</guid>
		<description><![CDATA[Let&#8217;s take a look at how RiDATA&#8217;s $270 64GB SSD compares with OCZ&#8217;s Core SSD: Read Performance: Here we see read performance being fantastic, yet not as good as the OCZ Core series I reviewed the other day. so lets consider the following: random_read_latency+transfer_request_size/STR_read = seconds_per_io so lets consider 512Byte and 700MiB transfers to calculate [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s take a look at how RiDATA&#8217;s $270 64GB SSD compares with OCZ&#8217;s Core SSD:</p>
<p><span id="more-276"></span></p>
<p><strong>Read Performance:</strong></p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-read-linear1.png" border="0" alt="random read linear" width="618" height="522" /></p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-read-log1.png" border="0" alt="random read log" width="622" height="511" /></p>
<p>Here we see read performance being fantastic, yet not as good as the OCZ Core series I reviewed the other day.</p>
<p>so lets consider the following:</p>
<p>random_read_latency+transfer_request_size/STR_read = seconds_per_io</p>
<p>so lets consider 512Byte and 700MiB transfers to calculate random_read_latency and STR_read.</p>
<p>700MiB:</p>
<p>random-read_latency+700*1024KiB/STR_read = seconds_per_io = 1/.174214 = 5.74</p>
<p>512Byte:</p>
<p>random_read_latency+0.5KiB/STR_read = seconds_per_io=1/ios_per_second = 1/ 2170.88</p>
<p>now subtract the 2nd equation from the 1st and the result:</p>
<p>(700*1024 &#8211; .5)/STR_read = 5.74- 1/2170.88 = 5.73960617</p>
<p>716799.5/5.73960617 = STR_read= 124886.53 KiB/sec</p>
<p><strong>=&gt;The average sequential read throughput is  121.96 MiB/sec</strong></p>
<p>let&#8217;s plug that back into the 512Byte equation:</p>
<p>random_read_latency + .5KiB/(124886.53KiB/sec) = 1/2170.88</p>
<p>random_read_latency = .000456639 seconds</p>
<p><strong>=&gt; The average random read latency is 0.457ms</strong></p>
<p>For a sanity check:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-read-linear-vsexpected1.png" border="0" alt="random read linear_vsexpected" width="623" height="531" /></p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-read-log-vsexpected1.png" border="0" alt="random read log_vsexpected" width="618" height="506" /></p>
<p>Here we see the random read latency and STR I calculated to characterize the performance very well&#8230; but around 512KiB request sizes, the performance is slightly lower than expected.</p>
<p>Overall I can say with confidence that the drives read specs are</p>
<p>122MiB/sec average read STR</p>
<p>0.457ms average random read latency</p>
<p><strong>write performance:</strong></p>
<p><strong></strong></p>
<p><strong><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-write-linear1.png" border="0" alt="random write linear" width="709" height="485" /> </strong></p>
<p><strong></strong></p>
<p><strong><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-write-log1.png" border="0" alt="random write log" width="730" height="484" /> </strong></p>
<p><strong></strong></p>
<p>Write performance is very similar to the OCZ Core SSD, although the STR is clearly a bit less on the RiDATA.</p>
<p>since random_write_latency + request_size/STR_write = 1/iops</p>
<p>[random_write_latency+ 700MiB/STR_write = 1/.097486]</p>
<p>- [random_write_latency+ .5KiB/STR_write = 1/4.04]</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>(700*1024-1/2)/STR_write = 1/.097486 &#8211; 1/4.04 = 10.257883 &#8211; .24752475 = 10.01035824</p>
<p>STR_write = 71605.78 KiB/sec</p>
<p><strong>=&gt; average writing sequential transfer rate is 69.93 MiB/sec</strong></p>
<p><strong></strong></p>
<p>so, random_write_latency + .5KiB/71605.78 = 1/4.04</p>
<p>random_write_latency = .2475 seconds</p>
<p><strong>=&gt; average random write latency is 247.5 ms</strong></p>
<p>sanity check:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-write-linear-vsexpected1.png" border="0" alt="random write linear_vsexpected" width="706" height="513" /></p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-write-log-vsexpected1.png" border="0" alt="random write log_vsexpected" width="701" height="502" /></p>
<p>So, while in the ballpark, this fixed random write latency model fails to characterize actual performance with enough precision.  As we did with the OCZ, lets assume that often on writes significant in size relative to the drive&#8217;s cluster size (minimum read-modify-erase-write block size), the write gets hit with 2 penalties, at the beginning and the end of the write, where both the start and stop points do not lie on the edge of one the drive&#8217;s clusters.</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-write-linear-vsexpected21.png" border="0" alt="random write linear_vsexpected2" width="707" height="542" /></p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/random-write-log-vsexpected21.png" border="0" alt="random write log_vsexpected2" width="712" height="547" /></p>
<p>So this makes sense, writes over 2MiB in size tend to incur 2 write penalties a significant percent of the time.</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/08/writelatency1.png" border="0" alt="writelatency" width="580" height="384" /></p>
<p>Here we see as write size goes up, the odds of getting 2 (erase-block) penalties increases to nearly 100%.</p>
<p><strong>In Conclusion:</strong></p>
<p>The RiDATA Ultra-S Plus NSSD-S25-64-CO4MM-PM is great for reads, amazing for tiny random reads, but mediocre for writes, and amazingly terrible for small random writes.  This unit is on par with the OCZ Core SSD, at roughly the same price.</p>
<table border="0" cellspacing="0" cellpadding="0" width="655">
<tbody>
<tr>
<td width="439" valign="top">RiDATA Ultra-S Plus <a href="http://www.ritekusa.com/product_main.asp?division_id=4&amp;products_id=64">NSSD-S25-64-CO4MM-PM</a></td>
<td width="109" valign="top">reads</td>
<td width="105" valign="top">writes</td>
</tr>
<tr>
<td width="437" valign="top">random access latency</td>
<td width="110" valign="top">&gt;0.457 ms</td>
<td width="106" valign="top">247.5 ms</td>
</tr>
<tr>
<td width="437" valign="top">sequential transfer rate</td>
<td width="111" valign="top">122 MiB/sec</td>
<td width="106" valign="top">70 MiB/sec</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=276</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How I figured out my OCZ Core 64GB SSD</title>
		<link>http://www.alternativerecursion.info/?p=106</link>
		<comments>http://www.alternativerecursion.info/?p=106#comments</comments>
		<pubDate>Sat, 26 Jul 2008 00:50:35 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>
		<category><![CDATA[ssd]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://www.alternativerecursion.info/?p=106</guid>
		<description><![CDATA[a 275USD 64GB SATA2 Solid State Drive with Reads up to 120-143MB/sec and Writes up to 80-93MB/sec with a seek time less than .35ms? That&#8217;s what OCZ claims, and that is what got me interested, but I soon realized it wasn&#8217;t so straightforward. Read into it: OCZ Core 64GB SSD WD640AAKS (2-platter) hdd-cache enabled Notice [...]]]></description>
			<content:encoded><![CDATA[<p>a 275USD 64GB SATA2 Solid State Drive with Reads up to 120-143MB/sec and Writes up to 80-93MB/sec with a seek time less than .35ms? That&#8217;s what OCZ claims, and that is what got me interested, but I soon realized it wasn&#8217;t so straightforward.</p>
<p><strong></strong></p>
<p><strong>Read into it:</strong></p>
<p><span id="more-106"></span></p>
<table border="1" cellspacing="0" cellpadding="0" width="1073">
<tbody>
<tr>
<td width="535" valign="top">OCZ Core 64GB SSD</td>
<td width="536" valign="top">WD640AAKS (2-platter) hdd-cache enabled</td>
</tr>
<tr>
<td width="537" valign="top"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/read-hdtune-benchmark-ocz-core-ssd11.png" border="0" alt="read_HDTune_Benchmark_OCZ_CORE_SSD" width="528" height="409" /></td>
<td width="536" valign="top"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/read-hdtune-benchmark-wd6400aaks21.png" border="0" alt="read_HDTune_Benchmark_WD6400aaks" width="527" height="412" /></td>
</tr>
<tr>
<td width="539" valign="top"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/oczreadio1.png" border="0" alt="oczreadio" width="501" height="449" /></td>
<td width="536" valign="top"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/wdreadio1.png" border="0" alt="wdreadio" width="502" height="450" /></td>
</tr>
<tr>
<td width="540" valign="top">Notice above that the data placement on the disc essentially does not matter, other than being noisy, its fairly flat.In the IO meter test the performance does not improve much as you allow multiple outstanding IOs, this makes sense when you are dealing with almost negligible access times.</td>
<td width="536" valign="top">Notice above the quadratically decreasing transfer rates, this is because of the linear relationship of speed and distance of the head from the center of the disc.. (the graph is non linear because data density per radial distance increases as you get further from the spindle (longer tracks).)In the IO meter test Notice that the drive benefits heavily with the use of Outstanding IOs, this allows the drive to read in such a way that is not as random, optimizing the order of the reads, among other things.</td>
</tr>
</tbody>
</table>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/readthroughput51.png" border="0" alt="readthroughput" width="704" height="691" /></p>
<p>Here you see both drives approach their Average Read Throughput (as measured by HDTune) as the request size gets large enough (minimizing frequency of seeks). This is exactly what we would expect, and the rotating hard disc needs an enormous data size (&gt;256MB) to make seeks insignificant, while the OCZ SSD only needs 8MB, impressive!</p>
<p>I know HDTune gives us an average seek time, but lets just say we didn&#8217;t trust HDTune, or we wanted more precision than the 1 significant figure it gives us on the SSD.</p>
<p>Let&#8217;s take random read throughput for a very large data size as an excellent measure of average read STR.</p>
<table border="1" cellspacing="0" cellpadding="0" width="823">
<tbody>
<tr>
<td width="237" valign="top">drive:</td>
<td width="583" valign="top"><strong>random read throughput with a 512MiB data size. (iometer)</strong></td>
</tr>
<tr>
<td width="237" valign="top">OCZ Core SSD</td>
<td width="583" valign="top"><strong>125 MiB/sec = 128,000 KiB/sec</strong></td>
</tr>
<tr>
<td width="237" valign="top">WD6400AAKS</td>
<td width="583" valign="top"><strong>85 MiB/sec = 87,040KiB/sec</strong></td>
</tr>
</tbody>
</table>
<p>Now let&#8217;s take that as the average STR, and use it to measure average random seek times:</p>
<table border="1" cellspacing="0" cellpadding="0" width="823">
<tbody>
<tr>
<td width="104" valign="top"> </td>
<td width="133" valign="top">IOps read of 0.5KB</td>
<td width="101" valign="top">data read/sec</td>
<td width="155" valign="top">time spent reading/sec</td>
<td width="140" valign="top">time left seeking/sec</td>
<td width="187" valign="top"><strong>time per random read seek</strong></td>
</tr>
<tr>
<td width="105" valign="top">OCZ Core SSD</td>
<td width="131" valign="top">2220</td>
<td width="101" valign="top">1110 KB</td>
<td width="155" valign="top">1110/128000=0.00867</td>
<td width="140" valign="top">0.991328</td>
<td width="187" valign="top"><strong>0.447ms</strong></td>
</tr>
<tr>
<td width="107" valign="top">WD6400AAKS</td>
<td width="131" valign="top">77.77</td>
<td width="101" valign="top">38.885 KB</td>
<td width="155" valign="top">38.885/87040=0.0004467</td>
<td width="140" valign="top">0.99955325</td>
<td width="186" valign="top"><strong>12.85ms</strong></td>
</tr>
</tbody>
</table>
<p>note that our average random read seeks and throughputs nearly matched what HDTune found.</p>
<p>Just for kicks, lets use our calculated numbers for avg STR and random read seek times, to see how well the predict performance:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/readthroughputvspredicted621.png" border="0" alt="readthroughputvspredicted6" width="682" height="673" /></p>
<p>Looks good, lets look at it on a log scale:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/readthroughputvspredicted6-log11.png" border="0" alt="readthroughputvspredicted6_log" width="703" height="692" /></p>
<p>So on the read side of things, everything now makes sense, and this is a very impressive drive, what&#8217;s next?</p>
<p>.</p>
<p>.</p>
<p><strong>&#8216;write it down&#8217;, or, &#8216;the good, the bad, and the ugly&#8217;:</strong></p>
<p><strong>.</strong></p>
<p><strong>.</strong></p>
<p><strong></strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="1136">
<tbody>
<tr>
<td width="567" valign="top">OCZ Core 64GB SSD</td>
<td width="567" valign="top">WD640AAKS (2-platter) hdd-cache enabled</td>
</tr>
<tr>
<td width="567" valign="top"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/write-hdtune-benchmark-ocz-core-ssd11.png" border="0" alt="write_HDTune_Benchmark_OCZ_CORE_SSD" width="529" height="401" /></td>
<td width="567" valign="top"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/write-hdtune-benchmark-wd6400aaks11.png" border="0" alt="write_HDTune_Benchmark_WD6400aaks" width="524" height="406" /></td>
</tr>
<tr>
<td width="567" valign="top"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/oczwriteio11.png" border="0" alt="oczwriteio" width="502" height="448" /></td>
<td width="567" valign="top"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/wdwriteio11.png" border="0" alt="wdwriteio" width="503" height="450" /></td>
</tr>
<tr>
<td width="567" valign="top">Something seems fishy here with HDTune, the graph just doesn&#8217;t look right.the iometer results are pitiful, maxes out at 4 IOs per second, LOL, WTF?does enabling write-back cache in windows help?:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/write-ssd-cache1.png" border="0" alt="write_ssd_cache" width="554" height="606" /></p>
<p>No it doesn&#8217;t.</td>
<td width="567" valign="top">these normal or boring results come at a relief after seeing the OCZ write results.<br />
The HDTune graph is again as expected.It&#8217;s interesting in the IOmeter results is that the rotating disc does not seem to benefit from outstanding IOs for writes, as it did with reads, this is probably because the write-cache is doing its job very well, essentially yielding the same benefits as accumulating multiple outstanding IOs can yield.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/write-rotating-cache11.png" border="0" alt="write_rotating_cache" width="555" height="570" /></p>
<p>Interesting that performance with any number of outstanding IOs less than(or equal to) 256 with cache enabled is roughly equal to the performance with 256IOs with cache disabled. well 256 chunks of 64KB is 16MB, exactly the size of the cache on this disc&#8230; So the disc cache yields similar benefits of having 16MB of outstanding IOs&#8230; this is to be expected, but nice to see.</td>
</tr>
</tbody>
</table>
<p>Let&#8217;s see the random write throughput as data request size gets very large, should approach the average write STR as reported by HDTune:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/writethroughput1.png" border="0" alt="writethroughput" width="749" height="507" /></p>
<p>Now it&#8217;s the totally reversed situation, the SSD needs a much larger data size before it gets good random write data throughput.</p>
<p>While the situation with the WD6400AAKS seems pretty normal, the SSD&#8217;s throughput blows away HDTune&#8217;s measurement of average STR as the transfer request size gets over 64MB. Something is definitely fishy.</p>
<p>HDTune was fairly accurate with read STR and read access time, lets see what happens when we trust HDTune&#8217;s numbers to predict random write performance:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/writethroughputvspredicted111.png" border="0" alt="writethroughputvspredicted1" width="798" height="600" /></p>
<p>&#8230; and here in log/log:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/writethroughputvspredicted1-log1.png" border="0" alt="writethroughputvspredicted1_log" width="785" height="585" /></p>
<p>Here we see HDTune&#8217;s numbers predict the rotating disc results reasonably well, but totally fail to explain the SSD&#8217;s performance in random writes.</p>
<p>Let&#8217;s calculate random write seeks as we did before with reads:</p>
<table border="1" cellspacing="0" cellpadding="0" width="823">
<tbody>
<tr>
<td width="237" valign="top">drive:</td>
<td width="583" valign="top"><strong>random write throughput with a 512MiB data size. (iometer)</strong></td>
</tr>
<tr>
<td width="237" valign="top">OCZ Core SSD</td>
<td width="583" valign="top"><strong>72.768 MiB/sec = 74,514 KiB/sec</strong></td>
</tr>
<tr>
<td width="237" valign="top">WD6400AAKS</td>
<td width="583" valign="top"><strong>85 MiB/sec = 87,040KiB/sec</strong></td>
</tr>
</tbody>
</table>
<p>Now let&#8217;s take that as the average STR, and use it to measure average random seek times:</p>
<table border="1" cellspacing="0" cellpadding="0" width="848">
<tbody>
<tr>
<td width="110" valign="top"> </td>
<td width="147" valign="top">IOps writes of 1/2 KiB</td>
<td width="97" valign="top">data write/sec</td>
<td width="166" valign="top">time spent writing/sec</td>
<td width="138" valign="top">time left seeking/sec</td>
<td width="186" valign="top"><strong>time cost per random write</strong></td>
</tr>
<tr>
<td width="111" valign="top">OCZ Core SSD</td>
<td width="146" valign="top">4.07</td>
<td width="97" valign="top">2.035 KiB</td>
<td width="166" valign="top">2.035/74514=0.0000273</td>
<td width="138" valign="top">0.9999726</td>
<td width="185" valign="top"><strong>245.7ms</strong></td>
</tr>
<tr>
<td width="112" valign="top">WD6400AAKS</td>
<td width="145" valign="top">143</td>
<td width="97" valign="top">71.5 KiB</td>
<td width="166" valign="top">71.5/87040=0.000821</td>
<td width="138" valign="top">0.9991587</td>
<td width="185" valign="top"><strong>6.99ms</strong></td>
</tr>
<tr>
<td width="112" valign="top">WD6400AAKS<br />
write cache disabled</td>
<td width="145" valign="top">58.6</td>
<td width="97" valign="top">24.3</td>
<td width="166" valign="top">24.3/87040=0.000279</td>
<td width="138" valign="top">0.997210</td>
<td width="185" valign="top"><strong>17.06ms</strong></td>
</tr>
</tbody>
</table>
<p>OCZ Core&#8217;s result seems unbelievably bad, while the spinning discs number seems ok, if not a bit high after disabling write cache, which makes sense.</p>
<p>I understand you probably would never want to disable write cache, but the result with it disabled is important for understanding performance, and thus being able to predict performance across other data use scenarios.</p>
<p>Now, lets see if these numbers explain the strange reality of performance with the SSD:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/writethroughputvspredicted71.png" border="0" alt="writethroughputvspredicted7" width="761" height="589" /></p>
<p>That&#8217;s pretty close, but can&#8217;t help but see the SSD predictions are still off a bit.</p>
<p>Note the 245ms random write seek time, while useful and, well, easy to understand, is not exactly how it works, after-all SSDs don&#8217;t have heads to seek.</p>
<p>If my understanding is correct, this SSD makes small writes by first finding a block or &#8220;cluster&#8221;, then reading in the entire cluster, then making changes to the buffered data from the cluster, and then writing the modified data as an entire cluster to the SSD.</p>
<p>So on tiny writes, the drive needs to read the entire cluster into memory, make the change, then write it to the flash, we have been referring to this wasted time as a seek, because we are familiar with it as a way to understand hard drive performance&#8230; but maybe we need to think a bit further:</p>
<p>on writes tiny compared to the cluster size, 1 entire cluster will be read into memory, the data manipulated, then written back&#8230; but as the write size gets significant relative to cluster size, there&#8217;s a good chance you will have to read/write 2 clusters, even if the data is smaller than a cluster&#8230; if you start to write 1KiB at the last bit of a cluster, you will write 512Bytes on one cluster, and 512Bytes on the next cluster.. basically paying 2 penalties of reading/writing data that you don&#8217;t care about.</p>
<p>As the data size gets very large relative to cluster size, you must read/write all clusters, but the first and last cluster are likely partially data you don&#8217;t care about, and hence you will pay a tax up to two times the cluster size.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/writethroughputvspredicted61.png" border="0" alt="writethroughputvspredicted6" width="783" height="581" /></p>
<p>Here we see it does make sense after all, since a write can pay up to 2 full &#8220;seek times&#8221; to make the transaction.</p>
<p>Random Write seeks/access time/penalty/tax options (for this drive 1 penalty is 245.7ms):</p>
<ol>
<li><strong>for writes very small compared to the cluster size, almost always 1 full penalty is paid</strong>, the time-cost to read and write the entire cluster.</li>
<li>for writes sizes that are an exact multiple of the cluster size, it is possible to pay 0 time in penalty, assuming the write starts at the exact beginning of a cluster. (highly unlikely), but this is essentially what happens in the middle of large writes, no tax is paid on all clusters other than the first and last in each sequential write.</li>
<li><strong>for significantly large writes (compared to cluster size) time-cost is 0-2 penalties</strong>, the penalty will probably be 1 partial at the start of the write, and 1 partial at the end, because its unlikely the start or end will be exactly the start or end of the corresponding clusters, those partials could be good or bad, depending on how much of the start and end clusters is your data, or existing data that you don&#8217;t care about.</li>
<li>For a horribly fragmented drive, where free space is sparse, the penalties for a large write could be as numerous as the number of clusters on the disc! This situation is highly avoidable, and very unlikely.</li>
</ol>
<p>Theoretically all writes have a 0-2 penalty tax, but its highly unlikely a tiny write will be written just at the end of the cluster, requiring a second cluster to finish the write, and on very large clusters you are likely paying 2 partial penalties, but if it&#8217;s very large, the time becomes insignificant. For this SSD, we see that around an 8MiB request size, writes pay a tax larger than 1 penalty cost:</p>
<p><strong><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/oczwritetime1.png" border="0" alt="oczwritetime" width="777" height="423" /> </strong></p>
<p>Here we see that certain data sizes pay a higher average cost to make a random write, particularly 4MiB to 256MiB.</p>
<p>A quick and dirty estimate of the OCZ Core cluster size:</p>
<p>1 full time-penalty-cost of a random write = cluster-size/avg-write-throughput + cluster-size/avg-read-throughput</p>
<p>for this drive:</p>
<p>245.7ms = cluster-size/72.768 + cluster-size/125</p>
<p>&gt;&gt;&gt;&gt;&gt;&gt;</p>
<p>cluster-size = 11.3 MiB, this should over-estimate the actual size..</p>
<p>and again, I am just doing this to get a ball-park figure&#8230;</p>
<p>maybe it&#8217;s 4MiB, maybe its 8MiB don&#8217;t know for sure.</p>
<p>Normal rotating disc drives have a &#8220;cluster-size&#8221; of 512bytes, (yes bytes).</p>
<p>.</p>
<p>.</p>
<p>.</p>
<p>.</p>
<p>.</p>
<p><strong>The above analysis while interesting, is probably unnecessary for getting a reasonably clear idea of the performance of this SSD.</strong></p>
<p>.</p>
<p>.</p>
<p>.</p>
<p>.</p>
<p>So, know what you are getting into here&#8230;</p>
<p><strong>This OCZ MLC Core 64GB SSD is a fantastic drive for properly configured desktop users, read-heavy servers, and it&#8217;s even ok for large writes, but the drive is horrendously terrible for small random writes&#8230; here are the specs I claim are accurate:</strong></p>
<p><strong></strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="400">
<tbody>
<tr>
<td width="221" valign="top">OCZ Core SSD</td>
<td width="90" valign="top">read</td>
<td width="87" valign="top">write</td>
</tr>
<tr>
<td width="221" valign="top">average STR throughput</td>
<td width="90" valign="top"><strong>125MiB/sec</strong></td>
<td width="88" valign="top"><strong>73MiB/sec</strong></td>
</tr>
<tr>
<td width="221" valign="top">typical random access penalty</td>
<td width="90" valign="top"><strong>0.43ms</strong></td>
<td width="89" valign="top"><strong>246ms</strong></td>
</tr>
<tr>
<td width="221" valign="top">idle power use</td>
<td width="90" valign="top">~1W</td>
<td width="89" valign="top"> </td>
</tr>
<tr>
<td width="221" valign="top">load power use</td>
<td width="90" valign="top">&lt;3W</td>
<td width="89" valign="top"> </td>
</tr>
</tbody>
</table>
<p>for reference, the specs I claim for the 7200 rpm rotating disc drive I used for comparison:</p>
<table border="1" cellspacing="0" cellpadding="0" width="400">
<tbody>
<tr>
<td width="228" valign="top">WD6400AAKS</td>
<td width="86" valign="top">read</td>
<td width="84" valign="top">write</td>
</tr>
<tr>
<td width="228" valign="top">average STR throughput</td>
<td width="86" valign="top">85MiB/sec</td>
<td width="85" valign="top">85MiB/sec</td>
</tr>
<tr>
<td width="228" valign="top">typical random access penalty</td>
<td width="86" valign="top">13.6ms</td>
<td width="86" valign="top">17ms</td>
</tr>
<tr>
<td width="228" valign="top">idle power use</td>
<td width="86" valign="top">~6W</td>
<td width="86" valign="top"> </td>
</tr>
<tr>
<td width="228" valign="top">load power use</td>
<td width="86" valign="top">~9W</td>
<td width="86" valign="top"> </td>
</tr>
</tbody>
</table>
<p>If you buy this drive for desktop use in windows vista, make sure to use a page file on a different disc, or disable it altogether, not a bad solution since ram is so cheap these days&#8230;</p>
<p>Also, disable &#8216;System Protection&#8217; and any other service that will write to the disc a lot.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=106</wfw:commentRss>
		<slash:comments>64</slash:comments>
		</item>
		<item>
		<title>Fast Large File Transfers on Windows Shares? Jumbo Frames?</title>
		<link>http://www.alternativerecursion.info/?p=48</link>
		<comments>http://www.alternativerecursion.info/?p=48#comments</comments>
		<pubDate>Thu, 24 Jul 2008 16:00:26 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>
		<category><![CDATA[networking]]></category>

		<guid isPermaLink="false">http://www.alternativerecursion.info/?p=48</guid>
		<description><![CDATA[Sometimes you may want to move large amounts of data over a network. The natural and probably naive assumption is that if you have a Gigabit Ethernet network, the transfer will occur at 1Gb/sec. Many things can prevent this from happening: 1. Flow control on the transmitting node. If a Gigabit Ethernet equipped server has [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you may want to move large amounts of data over a network. The natural and probably naive assumption is that if you have a Gigabit Ethernet network, the transfer will occur at 1Gb/sec.</p>
<p>Many things can prevent this from happening:</p>
<p><span id="more-48"></span><strong>1. Flow control on the transmitting node.</strong>
</p>
<p>If a Gigabit Ethernet equipped server has a 100Mb/sec client in an active data transfer, this &#8220;feature&#8221; seems to throttle transfers to faster (Gb Ethernet) clients while the transfer with the slower client is active. <a href="http://www.smallnetbuilder.com/content/view/30212/54/1/1/">link</a></p>
<p>Some drivers, including Intel&#8217;s, let you turn off flow control in the device manager.</p>
<p><strong>2. SAMBA/CIFS/SMB/OS inefficiency.</strong></p>
<p>SMB/CIFS is very convenient, as its fully integrated into Windows, but is not the lightest or fastest method of transferring data. You can use FTP or many other methods to transfer data quickly, but most of them are not nearly as convenient as SMB. <a href="http://blogs.msdn.com/chkdsk/archive/2006/03/10/548787.aspx">SMB2.0</a>, which Microsoft introduced in Vista and Windows Server 2008 is much better:</p>
<p>(note arrows indicate direction of transfer, the first computer listed is the initiator. &#8220;2008&#215;64&lt;-box&#8221; means that the windows server 2008 x64 computer initiated a copy of a file from the &#8220;box&#8221; computer to itself. )</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="322" alt="smbcompare_transfers" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/smbcompare-transfers21.png" width="789" border="0"></p>
<p>This improved throughput with SMB2.0/vista comes at a cost of CPU Utilization:</p>
<p><a href="http://www.alternativerecursion.info/wp-content/uploads/2008/07/smbcompare-cpu11.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="290" alt="smbcompare_cpu" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/smbcompare-cpu-thumb11.png" width="794" border="0"></a></p>
<p>If you want high-performance, use SMB2.0, but don&#8217;t expect miracles for free.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>On the topic of OS liability in network throughput, there are two registry changes needed for Vista SP1 and Server 2008:</p>
<p>in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile</p>
<p>change NetworkThrottlingIndex to 0xffffffff</p>
<p>and change SystemResponsiveness to 0&#215;64.</p>
<p>This essentially disables the Windows MultiMedia Class Scheduler Service&#8217;s ability to prioritize multimedia playback at the cost of networking performance.</p>
<p><strong>3. Encryption Tax <br /></strong></p>
<p>This may have more negative effect on delay then bandwidth, since there must be processing on each end of the transfer, but nevertheless, VPN data overhead can be significant &gt;10% (often depending on packet size distribution as some costs are fixed per-packet).</p>
<p><strong>4. Gigabit Ethernet over the PCI Bus.</strong></p>
<p>It is true that the 32-bit 33Mhz PCI bus has a theoretical peak bandwidth over 1Gb/sec ( 100/3 Mhz * 32 bits = ~1.067 Gb/sec )</p>
<p>While this exceeds 1Gb/sec that Gigabit Ethernet needs, the PCI bus has overhead, is not full duplex, and is sharing that bandwidth with multiple devices on the bus. The effective bandwidth of a regular pci bus is around 600Mb/sec half-duplex, some chipsets are better than others for actual pci bandwidth. PCIe 1x has 4Gb/sec total bandwidth per device (2Gb/sec full-duplex), so PCIe Gb ethernet interfaces have no issues with the bus as a bottleneck)</p>
<p><strong>5. Hard Disc stuff.</strong></p>
<p>SCSI, SAS, ATA-66/100/133, and SATA1/2 all had impressive throughput rates for their time, but the interface was never the bottleneck.</p>
<p>The discs themselves have sustained transfer rates (STR) limited by:</p>
<p>1. Linear Speed <strong>L</strong> of the Head which is a function of:</p>
<ul>
<li>Rotational Velocity <strong>V</strong> (revolutions per time) on most hard drives this is not dynamic.
<li>Location of the data <strong>r</strong> (radial distance of the head where the data is being operated on). </li>
</ul>
<p>so <strong>L</strong>=<strong>V</strong>*2*Pi*<strong>r</strong> , in a normal 7200 revolution per minute, 3.5&#8243; hard disc the Linear Velocity <strong>L</strong> = 7200*2*Pi*3.5/2 = ~79168 inches per minute at the outer edge, less as you get closer to the center.</p>
<p>this Linear Velocity reduces in a linear fashion as you approach the spindle of the disc.</p>
<p>2. Linear data density <strong>d</strong>, (bits per inch), which is usually proportional to the square root of the areal density (higher density means the head can traverse and r/w more sectors for a given linear velocity)</p>
<p>so</p>
<p>Sequential Throughput ~ <strong>L</strong> * <strong>d</strong> ~ 2 * Pi *<strong> V</strong> * <strong>r</strong> * <strong>d</strong></p>
<p>so there you have it, in a given disc, sequential data throughput is linearly related to distance from center.</p>
<p>with the same rotational velocity, a 3.5&#8243; disc will have an outer edge 40% further from the center, which means 40% faster then the outer edge of a similarly dense 2.5&#8243; platter.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>It may not be called a disc problem, but effective disc large-file transfer rate can be throttled if the data has to be fragmented on various spots on the disc, since that requires head seeks for something that could be a sequential operation. Seeks cost time and transfer no data.</p>
<p>Carefully chosen modern 7200rpm SATA2 high-areal density discs like the <a href="http://www.google.com/search?q=WD6400AAKS">this</a> or <a href="http://www.samsung.com/global/business/hdd/productmodel.do?group=72&amp;type=61&amp;subtype=63&amp;model_cd=249&amp;ppmi=1155">this</a> can perform sustained sequential reads or writes close to 1Gb per second at the outer edge. The discs I have been messing with ( Western Digital <span class="menusubblck">WD6400AAKS ) have sequential performance around 900Mb/sec near the outer edge, so they will bottleneck large 1,000Mb/sec Ethernet transfers, but only a bit.</span></p>
<p><a href="/wp-content/uploads/2008/06/write.png" target="_blank"><img class="alignnone size-full wp-image-50" title="writesm" height="119" alt="" src="http://www.alternativerecursion.info/wp-content/uploads/2008/06/writesm1.png" width="143"></a> <a href="/wp-content/uploads/2008/06/read.png" target="_blank"><img class="alignnone size-medium wp-image-49" title="readsm" height="119" alt="" src="http://www.alternativerecursion.info/wp-content/uploads/2008/06/readsm1.png" width="143"></a></p>
<p>these graphs are decreasing because the program calls 100% the innermost, and 0% the outermost of the disc&#8230; also you may notice the graphs are not linear as I suggested, this is because the horizontal axis is &#8220;%&#8221; which is % of data, not % of radial distance.</p>
<p>I will not bore anyone with the math/logic to understand why this makes sense, but it does&#8230; and graphing it like HD-Tune did here should theoretically yield a quadratic, which it seems to by the pictures.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>For my testing, I used 2 WD WD640AAKSs in Raid0:</p>
<p><a href="http://www.alternativerecursion.info/wp-content/uploads/2008/07/read-intel-raid-0-volume1.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="503" alt="write_Intel___Raid_0_Volume" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/write-intel-raid-0-volume-thumb11.png" width="580" border="0"> <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="503" alt="read_Intel___Raid_0_Volume" src="http://www.alternativerecursion.inf<br />
o/wp-content/uploads/2008/07/read-intel-raid-0-volume-thumb1.png" width="580" border="0"></a></p>
<p>If the data was placed at the inner edge, where throughput is only 800Mb/sec that could obviously throttle any Gigabit Ethernet transfers relying on that.</p>
<p>In this case I am not worried about data location because my drives are empty and windows/ntfs is fairly smart about data placement, here is where my 10GB test file was placed:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="456" alt="discplace" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/discplace11.png" width="460" border="0"></p>
<p>Exactly where I would want it, at the outer edge. I can rely on Windows to do this consistently because the disc is otherwise empty.</p>
<p>So with this scenario, I am confident the discs will not bottleneck my transfers.</p>
<p><strong>6. Framing overhead</strong></p>
<p>Standard Ethernet frames are 12,000 bits each, in a bus capable of doing 1,000,000,000 bits each second this can be significant framing overhead.</p>
<p>72,000 bit &#8220;Jumbo&#8221; frames are small enough to be effectively checked for integrity by Ethernet&#8217;s 32-bit CRC, while reducing the overhead per bit ratio for huge (compared to frame size) data transfers.</p>
<p>note each end of a network and all nodes in the path which are traversed must support these &#8220;jumbo&#8221; frames in order for the transaction to use them.</p>
<p>further reading on jumbo frames: <a title="http://docs.hp.com/en/783/jumbo_final.pdf" href="http://docs.hp.com/en/783/jumbo_final.pdf">http://sd.wareonearth.com/~phil/jumbo.html</a> , <a title="http://docs.hp.com/en/783/jumbo_final.pdf" href="http://docs.hp.com/en/783/jumbo_final.pdf">http://docs.hp.com/en/783/jumbo_final.pdf</a></p>
<p>well, I wanted to explore this in the real world of windows on platforms with abundant processing power:</p>
<p>&nbsp;</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="390" alt="smb2through" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/smb2through1.png" width="838" border="0"> </p>
<p>Jumbo Frames make a big difference here, but arguably more important is the observation that the transfer is a lot faster if the current holder of the file initiates the transfer, rather than the recipient.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="382" alt="smb2cpu" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/smb2cpu21.png" width="850" border="0"></p>
<p>Here is where we see the other benefit of jumbo frames, CPU utilization is less than half on the recipient of the transfer, regardless of who initiates it.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>2008&#215;64 is a q9450 12MB 45nm quad core @ 333&#215;8=2.66Ghz Core 2 Quad &#8220;Yorkfield&#8221; CPU</p>
<p>with 8GB of ram</p>
<p>Windows server 2008 x64</p>
<p>Intel 82566DC Gigabit Ethernet on PCIe w/9.11.5.7 drivers from Microsoft on 6/21/2006</p>
<p>DG33TL motherboard</p>
<p>dedicated 2xWD640AAKS in RAID0 on ich9r for network share w/ntfs cluster size of 64kB and hdd&amp;volume cache enabled.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Both Computers are directly connected to a Trendnet TEG-S8/A switch.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>&#8220;box&#8221; is an e6300 2MB 65nm dual core @ 333&#215;7 = 2.33Ghz Core 2 Duo</p>
<p>with 4GB of ram</p>
<p>vista x64 sp1</p>
<p>Atheros L1 Gigabit Ethernet on PCIe w/2.4.7.13 drivers from Atheros on 4/28/2008</p>
<p>Asus G35 motherboard</p>
<p>dedicated 2xWD640AAKS in RAID0 on ich9r for network share w/ntfs cluster size of 64kB and hdd&amp;volume cache enabled.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p><strong>Why does it matter which side initiates?</strong></p>
<p>Before I put this to rest, Let&#8217;s examine what goes on during the transfer, to see why it is faster when the sender initiates:</p>
<p>well lets consider the transfer from box to 2008&#215;64</p>
<p>when it&#8217;s initiated by the sender, this happens:</p>
<table cellspacing="0" cellpadding="0" width="1115" border="1">
<tbody>
<tr>
<td valign="top" width="76">&nbsp;</td>
<td valign="top" width="601">sender and initiator</td>
<td valign="top" width="436">recipient</td>
</tr>
<tr>
<td valign="top" width="76">Network Throughput</td>
<td valign="top" width="601"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="443" alt="net" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/net11.png" width="598" border="0"></td>
<td valign="top" width="436"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="327" alt="net2008" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/net200811.png" width="433" border="0"></td>
</tr>
<tr>
<td valign="top" width="76">Memory Usage</td>
<td valign="top" width="601"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="217" alt="ram" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/ram11.png" width="588" border="0"></td>
<td valign="top" width="436"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="144" alt="ram2008" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/ram200811.png" width="421" border="0"></td>
</tr>
</tbody>
</table>
<p>This seems pretty normal, let&#8217;s look again at the difference in transfer rates depending on the initiator.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="257" alt="boxsendrate" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/boxsendrate11.png" width="819" border="0"></p>
<p>Now lets look and see why it&#8217;s slower when the recipient initiates:</p>
<table cellspacing="0" cellpadding="0" width="983" border="1">
<tbody>
<tr>
<td valign="top" width="56">&nbsp;</td>
<td valign="top" width="495">sender</td>
<td valign="top" width="430">recipient and initiator</td>
</tr>
<tr>
<td valign="top" width="56">Network</td>
<td valign="top" width="495"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="371" alt="vistanet" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/vistanet11.png" width="491" border="0"></td>
<td valign="top" width="430"><a href="http://www.alternativerecursion.info/wp-content/uploads/2008/07/vistaram3.png"><br /><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="321" alt="2008net" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/2008net11.png" width="419" border="0"></a></td>
</tr>
<tr>
<td valign="top" width="56">Memory</td>
<td valign="top" width="495"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="168" alt="vistaram" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/vistaram21.png" width="480" border="0"></td>
<td valign="top" width="430"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="145" alt="2008ram" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/2008ram11.png" width="426" border="0"></td>
</tr>
</tbody>
</table>
<p>Whatever exactly is going on in the sending computer when a transfer is initiated by a recipient, it&#8217;s clearly using as much RAM as it can find, until there&#8217;s none left. When it runs out of RAM, the transfer goes on w<br />
ithout degradation of performance, which leaves me at a loss to why it needed all that ram so badly to begin with.</p>
<p>Let&#8217;s look at CPU use:</p>
<p>&nbsp;<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="208" alt="boxsend" src="http://www.alternativerecursion.info/wp-content/uploads/2008/07/boxsend31.png" width="639" border="0"></p>
<p>Although it uses more CPU cycles on the sending node, it&#8217;s clearly better on modern multi-core CPUs with SMB2.0 as-is to initiate a transfer with the sender of a file as throughput is significantly better, and it doesn&#8217;t pillage the node of its RAM.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Conclusion:</strong></p>
<ul>
<li><strong>High Performance is possible in Windows Shares with SMB2.0</strong>
<li><strong>Jumbo Frames are good</strong>
<li><strong>Sending node should initiate large transfers</strong>
<li><strong>Must be careful to rule out disc bottlenecks, especially important to consider data location on the drive.</strong> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=48</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>intel&#039;s nehalem CPU</title>
		<link>http://www.alternativerecursion.info/?p=29</link>
		<comments>http://www.alternativerecursion.info/?p=29#comments</comments>
		<pubDate>Sun, 08 Jun 2008 06:20:59 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>
		<category><![CDATA[amd]]></category>
		<category><![CDATA[cpu]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[nehalem]]></category>

		<guid isPermaLink="false">http://alternativerecursion.info/?p=87</guid>
		<description><![CDATA[a x86 CPU market refresher for the last 6 months: * 45nm intel quad and dual core CPUs * 65nm AMD quad and tri-core cpus with TLB-bug fixed *2 new integrated chipsets for AMD cpus (the AMD 780g and the nvidia 8200), with great media playback capabilities Intel is dominating the middle and high-end, while [...]]]></description>
			<content:encoded><![CDATA[<p>a x86 CPU market refresher for the last 6 months:</p>
<p>* 45nm intel quad and dual core CPUs</p>
<p>* 65nm AMD quad and tri-core cpus with TLB-bug fixed</p>
<p>*2 new integrated chipsets for AMD cpus (the AMD 780g and the nvidia 8200), with great media playback capabilities</p>
<p>Intel is dominating the middle and high-end, while low-power (45W dual (4850e) and 65W quad (9100e)) AMD cpus paird with the new integrated chipsets are very attractive media-centric platforms.</p>
<p>Coming Soon:</p>
<p>Intel&#8217;s <a href="http://www.intel.com/products/chipsets/G45/index.htm">G45 chipset</a> which finally brings excellent video playback, decent 3d performance, and official 16GB ddr2 support to intel CPUs.</p>
<p>new 45nm notebook CPUs from intel are coming imminently, lowering power and heat with small laptops.  Also new notebook chipsets similar to the G45 are arriving, along with a new wireless card with wimax.</p>
<p>Coming not-so-soon:</p>
<p>Intel&#8217;s first CPU with an integrated memory controller: (no more talking to ram via a northbridge)</p>
<p><img class="alignnone size-full wp-image-88" style="border-top-width: 0pt; border-left-width: 0pt; border-bottom-width: 0pt; margin: 0px; border-right-width: 0pt" title="17015" src="http://www.alternativerecursion.info/wp-content/uploads/2008/06/17015.png" alt="" width="450" height="337" /></p>
<p>for those interested in performance, It&#8217;s exciting.  This true multi-core chip will run in a similar thermal envelope as the current penryns.</p>
<p><a href="http://www.anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3326&amp;p=1" target="_blank">more on nehalem</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=29</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿i need a new laptop? update:added lenovo x300</title>
		<link>http://www.alternativerecursion.info/?p=19</link>
		<comments>http://www.alternativerecursion.info/?p=19#comments</comments>
		<pubDate>Wed, 16 Jan 2008 23:16:27 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[it]]></category>
		<category><![CDATA[laptops]]></category>

		<guid isPermaLink="false">http://steve8.selfip.info/?p=41</guid>
		<description><![CDATA[i had high expectations for apples new ultra-portable laptop, considering apple seems to be one of the few companies that puts the extra effort into designing their PCs. and here it is, the macbook air: it seems everyone thinks its a new gift from god, after the iphone&#8230; but lets actually take a step back [...]]]></description>
			<content:encoded><![CDATA[<p>i had high expectations for apples new ultra-portable laptop, considering apple seems to be one of the few companies that puts the extra effort into designing their PCs.</p>
<p>and here it is, the macbook air:</p>
<p><img src="/wp-content/uploads/2008/01/manilla.jpg" alt="air" width="390" height="350" /></p>
<p><img src="http://images.anandtech.com/reviews/mac/macbookair/cpu/air2.jpg" alt="apple photo" width="1" height="1" /></p>
<p>it seems everyone thinks its a new gift from god, after the iphone&#8230;</p>
<p>but lets actually take a step back and notice there are non-apple products out there&#8230;</p>
<table style="border: 2px solid #888888" border="2" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border: 1px solid #888888; background-color: #888888"></td>
<td>macbook</td>
<td>macbook air</td>
<td>air ssd</td>
<td>sony sz740</td>
<td>tz150</td>
<td>toshiba r500</td>
<td>r500 ssd</td>
<td>thinkpad x61</td>
<td>x300</td>
<td>toughbook Y7</td>
<td>dell m1330</td>
</tr>
<tr>
<td>box volume</td>
<td>123 in^3</td>
<td>87 in^3</td>
<td>87 in^3</td>
<td>174 in^3</td>
<td>99</td>
<td>94 in^3</td>
<td>94 in^3</td>
<td>123 in^3</td>
<td>103 in^3</td>
<td>220 in^3</td>
<td>153 in^3</td>
</tr>
<tr>
<td>lid surface</td>
<td>114 in^2</td>
<td>114 in^2</td>
<td>114 in^2</td>
<td>116 in^2</td>
<td>85 in^2</td>
<td>94 in^2</td>
<td>94 in^2</td>
<td>87 in^2</td>
<td>114 in^2</td>
<td>120 in^2</td>
<td>118 in^2</td>
</tr>
<tr>
<td>weight</td>
<td>5lbs</td>
<td>3.0lbs</td>
<td>3.0lbs</td>
<td>4.0lbs</td>
<td>2.7lbs</td>
<td>2.4lbs</td>
<td>1.7 w/o dvd</td>
<td>3.6lbs</td>
<td>2.5-3.17</td>
<td>3.7lbs</td>
<td>4.3lbs</td>
</tr>
<tr>
<td>cpu</td>
<td>2.2ghz/800</td>
<td>1.6ghz/800</td>
<td>1.8/800</td>
<td>2.5ghz/800</td>
<td>1.06/533</td>
<td>1.2ghz/533</td>
<td>1.2ghz/533</td>
<td>2.2ghz/800</td>
<td>1.2/800</td>
<td>1.6ghz/800</td>
<td>2.2/800</td>
</tr>
<tr>
<td>cpu cache</td>
<td>4mb</td>
<td>4MB</td>
<td>4MB</td>
<td>6MB</td>
<td>2MB</td>
<td>2MB</td>
<td>2MB</td>
<td>4MB</td>
<td>4MB</td>
<td>4MB</td>
<td>4MB</td>
</tr>
<tr>
<td>cpu tech</td>
<td>65nm</td>
<td>65nm c2d</td>
<td>65nm c2d</td>
<td>45nm c2d</td>
<td>65nm c2d</td>
<td>65nm c2d</td>
<td>65nm c2d</td>
<td>65nm c2d</td>
<td>65nm c2d</td>
<td>65nm c2d</td>
<td>65nm</td>
</tr>
<tr>
<td>ram</td>
<td>4GB</td>
<td>2GB</td>
<td>2GB</td>
<td>4GB</td>
<td>2GB</td>
<td>2GB</td>
<td>2GB</td>
<td>4GB</td>
<td>4GB</td>
<td>3GB</td>
<td>4GB</td>
</tr>
<tr>
<td>hdd</td>
<td>120gb 5.4k</td>
<td>80gb 4.2k</td>
<td>64gb ssd</td>
<td>200gb 5.4k</td>
<td>100gb 4.2k</td>
<td>120gb 5.4k</td>
<td>64gb ssd</td>
<td>120 5.4k</td>
<td>1.8&#8243; ssd sata</td>
<td>80gb 5.4k</td>
<td>160GB 5.4k</td>
</tr>
<tr>
<td>built-in dvd</td>
<td>yes</td>
<td>no</td>
<td>no</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>no</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
</tr>
<tr>
<td>usb ports</td>
<td>2</td>
<td>1</td>
<td>1</td>
<td>2</td>
<td>2</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>sd card</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>no</td>
<td>yes</td>
<td>yes</td>
</tr>
<tr>
<td>expresscard</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes (34)</td>
<td>yes</td>
<td>yes</td>
</tr>
<tr>
<td>dvi</td>
<td>mini</td>
<td>micro</td>
<td>micro</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>hdmi</td>
</tr>
<tr>
<td>webcam</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>yes</td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>input</td>
<td>touchpad</td>
<td>touchpad</td>
<td>touchpad</td>
<td>touchpad</td>
<td>touchpad</td>
<td>touchpad</td>
<td>touchpad</td>
<td>trackpoint</td>
<td>both</td>
<td>touchpad</td>
<td>touchpad</td>
</tr>
<tr>
<td>keyboard</td>
<td>full-size</td>
<td>full-size</td>
<td>full-size</td>
<td>full-size</td>
<td>almost-full</td>
<td>full-size</td>
<td>full-size</td>
<td>full-size</td>
<td>full-size</td>
<td>full-size</td>
<td>full-size</td>
</tr>
<tr>
<td>screen</td>
<td>13.3</td>
<td>13.3&#8243; LED</td>
<td>13.3&#8243; LED</td>
<td>13.3&#8243; LED</td>
<td>11.1&#8243; LED</td>
<td>12.1&#8243; LED</td>
<td>12.1&#8243; LED</td>
<td>12.1&#8243;</td>
<td>13.3&#8243; LED</td>
<td>14.1&#8243;</td>
<td>13.3&#8243; LED</td>
</tr>
<tr>
<td>resolution</td>
<td>1280&#215;800</td>
<td>1280&#215;800</td>
<td>1280&#215;800</td>
<td>1280&#215;800</td>
<td>1366&#215;768</td>
<td>1280&#215;800</td>
<td>1280&#215;800</td>
<td>1024&#215;786</td>
<td>1440&#215;900</td>
<td>1400&#215;1050</td>
<td>1280&#215;800</td>
</tr>
<tr>
<td>wireless</td>
<td>abgn+BT</td>
<td>abgn+BT</td>
<td>abgn+BT</td>
<td>abgn+BT</td>
<td>abgn+BT</td>
<td>abgn+BT</td>
<td>abgn+BT</td>
<td>abgn+BT</td>
<td>abgn+BT+<br />
GPS+WiMax</td>
<td>abgn+BT</td>
<td>abgn+BT</td>
</tr>
<tr>
<td>wwan</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>option</td>
<td>option</td>
<td>no</td>
<td>no</td>
<td>option</td>
<td>option</td>
<td>option</td>
<td>option</td>
</tr>
<tr>
<td>wired</td>
<td>gigabit</td>
<td>none</td>
<td>none</td>
<td>gigabit</td>
<td>gigabit</td>
<td>gigabit</td>
<td>gigabit</td>
<td>gigabit</td>
<td>gigabit</td>
<td>gigabit</td>
<td>100mb</td>
</tr>
<tr>
<td>os</td>
<td>macosx</td>
<td>macosx</td>
<td>macosx</td>
<td>vista hp</td>
<td>vista b</td>
<td>vista b</td>
<td>vista b</td>
<td>vista b</td>
<td>vista</td>
<td>vista b</td>
<td>vista hp</td>
</tr>
<tr>
<td>price</td>
<td>1379</td>
<td>1799</td>
<td>3098</td>
<td>1800</td>
<td>2099</td>
<td>2170</td>
<td>2999</td>
<td>1340</td>
<td>TBD</td>
<td>2400</td>
<td>1520</td>
</tr>
</tbody>
</table>
<p>issues with the air:</p>
<p>uses old 65nm cpu&#8230; what about penryn?</p>
<p>ram is almost free, yet its impossible to upgrade the air to 4GB</p>
<p>only 1 usb, no gigabit ethernet, no sd-card slot&#8230;</p>
<p>1.8&#8243; IDE hard disk, so not possible to install a 7200rpm drive.</p>
<p>thin and light, sure&#8230; but a big footprint footprint, could have less unused space around the screen and keyboard.</p>
<p>A technically bigger laptop like the R500 will actually seem to be smaller in person since it&#8217;s more compact.</p>
<p>question: does it use UEFI 2.0 so one could install vista64SP1? other macbooks do not.</p>
<p>I think I&#8217;ll wait for penryn sff, and frankly the macbook air seemed large in person&#8230; thin yes, but has a large footprint, a 13.3&#8243; display with a significant border around the screen.</p>
<p>I might go for another 12.1 like the toshiba R500, but again, I&#8217;ll wait for penryn.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alternativerecursion.info/?feed=rss2&amp;p=19</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
