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

<channel>
	<title>Stephen Foskett, Pack Rat &#187; DRAM Archives  &#8211; Stephen Foskett, Pack Rat</title>
	<atom:link href="http://blog.fosketts.net/tag/dram/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fosketts.net</link>
	<description>Understanding the accumulation of data</description>
	<lastBuildDate>Fri, 10 Feb 2012 17:40:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>The Four Horsemen of Storage System Performance: I/O As a Chain of Bottlenecks</title>
		<link>http://blog.fosketts.net/2010/10/27/4-horsemen-io/</link>
		<comments>http://blog.fosketts.net/2010/10/27/4-horsemen-io/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 15:02:02 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Computer History]]></category>
		<category><![CDATA[Enterprise storage]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Terabyte home]]></category>
		<category><![CDATA[Virtual Storage]]></category>
		<category><![CDATA[4 horsemen]]></category>
		<category><![CDATA[bottlenecks]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[DRAM]]></category>
		<category><![CDATA[flush time]]></category>
		<category><![CDATA[InfiniBand]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Jasper Forest]]></category>
		<category><![CDATA[Lynnfield]]></category>
		<category><![CDATA[MaxiScale]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[MPIO]]></category>
		<category><![CDATA[Nehalem]]></category>
		<category><![CDATA[NetApp]]></category>
		<category><![CDATA[Nimbus]]></category>
		<category><![CDATA[Overland]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[PCI Express]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[pNFS]]></category>
		<category><![CDATA[SAS]]></category>
		<category><![CDATA[SATA]]></category>
		<category><![CDATA[serial]]></category>
		<category><![CDATA[USB]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=3904</guid>
		<description><![CDATA[It is tempting to think of storage as a game of hard disk drives, and consider only The Rule of Spindles. But RAM cache can compensate for the mechanical limitations of hard disk drives, and Moore's Law continues to allow for ever-greater RAM-based storage, including cache, DRAM, and flash. But storage does not exist in a vacuum. All that data must go somewhere, and this is the job of the I/O channel.]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 410px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://blog.fosketts.net/wp-content/uploads/2010/08/Four-Horsemen-400.png" ><img title="Four Horsemen-400" src="http://blog.fosketts.net/wp-content/uploads/2010/08/Four-Horsemen-400.png" alt="" width="400" height="309" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">The Four Horsemen of Storage System Performance: These four ugly gentlemen stand between you and your data.</p></div>
<p>Why do some data storage solutions perform better than others? What tradeoffs are made for economy and how do they affect the system as a whole? These questions can be puzzling, but there are core truths that are difficult to avoid. Mechanical disk drives can only move a certain amount of data. RAM caching can improve performance, but only until it runs out. I/O channels can be overwhelmed with data. And above all, a system must be smart to maximize the potential of these components. These are the four horsemen of storage system performance, and they cannot be denied.</p>
<h3>The Chain of Command</h3>
<p>It is tempting to think of storage as a game of hard disk drives, and consider only <a href="http://blog.fosketts.net/2010/08/25/4-horsemen-spindles/"  target="_blank">The Rule of Spindles</a>. But <a href="http://blog.fosketts.net/2010/10/07/4-horsemen-cache/"  target="_blank">RAM cache</a> can compensate for the mechanical limitations of hard disk drives, and Moore&#8217;s Law continues to allow for ever-greater RAM-based storage, including cache, DRAM, and flash. But storage does not exist in a vacuum. All that data must go somewhere, and this is the job of the I/O channel.</p>
<p>To be useful, storage capacity must connect to some sort of endpoint. This could be the CPU in a personal computer or an embedded processor in an industrial device. Indeed, there are endpoints and I/O channels throughout modern systems, with potential bottlenecks, caches, and smarts at each point. &#8220;Storage people&#8221; like me tend to think too small &#8211; imagining that the I/O channel ends at the disk drive, the &#8220;front end&#8221; of the array, or the storage network. But data must travel further, all the way to its final useful point in the core of the CPU.</p>
<p>Once we consider I/O as a long chain of interconnected endpoints, we begin to see the fact that I/O constraints at any point can strangle overall system performance. This is not merely an academic exercise: Optimizing the I/O channel is a consuming passion for most practitioners of enterprise IT, including architects, engineers, and system developers. And, like a good game of Whack-a-Mole, increasing the speed of one link causes another chokepoint to rear its head.</p>
<h3>Parallel and Serial I/O</h3>
<p>Imagine you had a warehouse full of boxes to move across the country as fast as possible. There are a few options available to you:</p>
<ol>
<li>A fast truck can zip back and forth with just a few boxes</li>
<li>A train is slower, but its many cars can haul a huge quantity</li>
</ol>
<p>But there are realistic limits to both capacity and speed: The train has to fit on the tracks, and the truck can&#8217;t move at the speed of light. Plus, one must consider the time taken to load and unload the chosen vehicle.</p>
<div id="attachment_3968" class="wp-caption aligncenter" style="width: 410px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://static.fosketts.net/wp-content/uploads/2010/10/Parallel-and-serial-IO.jpg" ><img class="size-full wp-image-3968" title="Parallel and serial IO" src="http://static.fosketts.net/wp-content/uploads/2010/10/Parallel-and-serial-IO.jpg" alt="" width="400" height="171" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">We continually shift between parallel and serial I/O paradigms</p></div>
<p>The same trade-offs are true of computer busses: Serial channels can be optimized to zip individual bits back and forth, or parallel busses can be designed to carry whole bytes (or more) at a time. The simplicity of serial communications is tempting, but designers continue to resort to parallelization for added throughput.</p>
<blockquote><p>Note: Most serial protocols actually feature two links, making them &#8220;full duplex&#8221;: One for transmit and another for receive.</p></blockquote>
<p>Serial storage interconnects are dominant currently, with <a rel="nofollow" href="http://en.wikipedia.org/wiki/SATA#SATA_and_SCSI"  target="_blank">fraternal twins</a> SAS and SATA <a href="http://serialstoragewire.net/Articles/2007_09/schultz.html"  target="_blank">coming to dominate</a> the disk interface landscape. SAS and SATA share the same 1.5, 3, and now 6 gigabit per second serial physical interconnect, offering more than enough throughput for conventional hard disk drives and edging out older serial (Fibre Channel, SSA) and parallel (ATA and SCSI) alternatives.</p>
<p>Networks (Ethernet, Fibre Channel, and InfiniBand) are predominately serial as well, as are lower-end interconnects like USB and FireWire. Serial communication also dominates in the system bus world, with serial PCI Express toppling parallel PCI.</p>
<p>But parallel variants are often offered for increased throughput: Multi-lane PCI Express and bonded multi-link InfiniBand make up a fair portion of the installed base, while load balancing <a href="http://blog.fosketts.net/2010/03/30/multi-pathing-dual-active-passive/"  target="_blank">MPIO drivers</a> are common in Fibre Channel storage. And let&#8217;s not forget that <a href="http://blog.fosketts.net/2010/04/17/1000basewhat/"  target="_blank">the &#8220;X4&#8243; variants of Ethernet</a> use multiple bonded links as well.</p>
<h3>The Definition of Bottle Neck</h3>
<p>Most English speakers have encountered the French term, &#8220;cul de sac&#8221;, meaning &#8220;bottom of the bag&#8221; or dead end. But hard disk drives have plenty of &#8220;bottom end&#8221;, or storage capacity. When it comes to disks, the issue is usually at the neck of the bag: Data just can&#8217;t be pulled out of a hard disk drive fast enough.</p>
<div id="attachment_3972" class="wp-caption aligncenter" style="width: 410px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://static.fosketts.net/wp-content/uploads/2010/10/Wine-barrels.jpg" ><img class="size-full wp-image-3972" title="Wine barrels" src="http://static.fosketts.net/wp-content/uploads/2010/10/Wine-barrels.jpg" alt="" width="400" height="241" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Emptying a barrel of wine through a spigot takes hours, but pry the end off and the floor is covered in a moment!</p></div>
<p>The density of modern hard disk drives (the capacity of our barrel) has been growing much more rapidly than the I/O channels serving them (the spigot). Where once a hard disk drive could be filled or emptied in an hour or two, modern drives take days or weeks!</p>
<blockquote><p>I once called this &#8220;<a href="http://blog.fosketts.net/2009/10/19/flush-time/"  target="_blank">flush time</a>&#8220;, but I think the wine metaphor is much more appetizing!</p></blockquote>
<p>This &#8220;bottle neck&#8221; has serious implications beyond basic storage performance. Data protection is impacted, since ever-larger storage systems can no longer be backed up by <a href="http://www.nethamilton.net/docs/dump.html"  target="_blank">dumping</a> their content; system reliability is reduced, since week-long RAID rebuilds increase the risk of multiple drive failures; and cost containment efforts are also impacted, since adding spindles drives up prices.</p>
<p>Nowhere is this bottleneck more evident than in portable devices. Modern drives (like the 1 TB Seagate USB drive I recently reviewed) have massive capacity and <a href="http://blog.fosketts.net/2008/07/30/firewire-faster-usb/"  target="_blank">pathetic performance</a>. The USB 2.0 interface just can&#8217;t keep up, and this creates a limit to the expansion of capacity. It would take half a day to fill that drive under perfect conditions at 25 MB/s, reducing its value as a massive data movement peripheral. The emerging USB 3.0 standard promises to alleviate this performance issue for now, as illustrated with <a href="http://blog.fosketts.net/2010/10/22/iomega-external-ssd-usb-30/"  target="_blank">Iomega&#8217;s new external SSD</a>.</p>
<p>Cache and solid state storage can help, but they have their own bottlenecks. Storage arrays typically use Fibre Channel or SAS SSDs, and <a href="http://dcsblog.burtongroup.com/data_center_strategies/2010/01/ssd-dump-the-hard-disk-form-factor.html"  target="_blank">their front-end interface remains the same</a>. The best-performing SSDs use the PCI Express bus directly rather than emulating hard disk drives over SCSI interfaces. And even PCI Express might not be enough to handle the massive I/O of NAND flash or DRAM. In each case, the bottleneck moves down the chain.</p>
<h3>A Chain of Bottlenecks</h3>
<p>Let&#8217;s follow a typical I/O operation from the disk to the CPU core and count the I/O channels:</p>
<ol>
<li>A read head senses the state of a bit of magnetic material on the surface of a disk</li>
<li>The head transmits this signal to a buffer on the disk controller board</li>
<li>The data is picked up by the disk controller CPU and transmitted over a SATA or SAS connection</li>
<li>The storage array or RAID controller receives the data and moves it over an internal bus to another buffer or cache</li>
<li>The data is picked up by another CPU in the array controller and sent out another interface using Fibre Channel or Ethernet</li>
<li>The data is buffered and retransmitted by one or more switches in the storage network</li>
<li>The host bus adapter (HBA) on the server side receives the data and buffers it again before sending it over a local PCI Express bus to system memory</li>
<li>The server memory controller pulls the data out of system memory and sends it via a local bus to the CPU core</li>
</ol>
<p>There are actually many more steps than this, but the picture should be clear by now. There are many, many I/O channels to consider when it comes to storage, and the drive interface is just one potential bottleneck.</p>
<div id="attachment_3969" class="wp-caption aligncenter" style="width: 410px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://static.fosketts.net/wp-content/uploads/2010/10/Chain-of-bottlenecks.jpg" ><img class="size-full wp-image-3969" title="Chain of bottlenecks" src="http://static.fosketts.net/wp-content/uploads/2010/10/Chain-of-bottlenecks.jpg" alt="" width="400" height="157" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">We constantly move bottlenecks around - as one link is improved, another choke-point appears</p></div>
<h3>Optimizing Storage I/O</h3>
<p>Tactical steps to improve storage performance typically focus at one link in the chain: Drive vendors move from 1.5 Gb to 3 Gb SATA, or SAN buyers upgrade from 4 Gb to 8 Gb Fibre Channel. But the basic architecture of enterprise storage has remained constant for over a decade, and the reliance on block SCSI commands endures. This is all about to change.</p>
<p>One critical bit of I/O optimization exists at the point of connection between the various chipsets inside the server. AMD pulled the memory controller off of the &#8220;northbridge&#8221; with their Athlon line. Intel did the same with their Nehalem and is eliminating the northbridge entirely with the <a rel="nofollow" href="http://davesimpsonsstorageblog.blogspot.com/2010/08/whats-so-cool-about-intels-jasper.html"  target="_blank">Lynnfield/Jasper Forest</a> CPU lines. This gives serious bandwidth to the crucial PCI Express-to-CPU-core link, moving the bottleneck downstream.</p>
<p>We are in the midst of a massive upgrade of the storage network as well. Between 8 Gb Fibre Channel and iSCSI and Fibre Channel over 10 Gb Ethernet, not to mention persistent interest in InfiniBand, storage network throughput is rapidly expanding. As with the internal PC connections, the expansion of network bandwidth has pushed the bottleneck to the storage array interface for the time being.</p>
<p>Microsoft and Intel <a href="http://blog.fosketts.net/2010/03/19/microsoft-intel-starwind-iscsi/"  target="_blank">recently</a> pushed over a gigabyte per second over 10 GbE using iSCSI, but they needed multiple storage targets to feed that connection. It isn&#8217;t that modern storage systems couldn&#8217;t push that kind of I/O (indeed, arrays are tens to hundreds of times faster internally thanks to their spindles and cache), but that the conventional storage protocols are tightly linked to a single &#8220;front-end&#8221; interface. The current state of the art for storage array design is moving to distributed models, exemplified by pNFS and scale-out NAS concepts like MaxiScale (now <a href="http://blog.fosketts.net/2010/10/14/overland-acquires-maxiscale/"  target="_blank">acquired by Overland</a>).</p>
<p>Once the array interfaces can pump out massive I/O, attention will turn once again to the disk interfaces themselves. Although 6 Gb/s SAS and SATA is now a reality, this interface is inappropriate for future high-performance SSDs. Arrays designed around flash or DRAM are likely to switch to PCI Express as their internal connection of choice for performance and to optimize data placement on these new devices. Companies like Nimbus and NetApp are already moving in this direction.</p>
<h3>Time To Get Smart</h3>
<p>Hard disk drive spindles make up the bulk of storage capacity, but small amounts of cache make them far more effective. But both of these horsemen must operate within the constraints of the I/O channels they pass through. This brings us to the final horseman of performance: Smarts. Clever designers have created clever controlling mechanisms to overcome the limits of spindles, cache, and I/O channels.</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2010/10/07/4-horsemen-cache/"  rel="bookmark" class="crp_title">The Four Horsemen of Storage System Performance: Never Enough Cache</a></li><li><a href="http://blog.fosketts.net/2010/08/25/4-horsemen-spindles/"  rel="bookmark" class="crp_title">The Four Horsemen of Storage System Performance: The Rule of Spindles</a></li><li><a href="http://blog.fosketts.net/2010/03/30/multi-pathing-dual-active-passive/"  rel="bookmark" class="crp_title">Multipath: Active/Passive, Dual Active, and Active/Active</a></li><li><a href="http://blog.fosketts.net/2010/05/17/hybrid-ssd-hard-disk-drives/"  rel="bookmark" class="crp_title">Hybrid SSD/Hard Disk Drives: This Time For Sure!</a></li><li><a href="http://blog.fosketts.net/2009/10/19/flush-time/"  rel="bookmark" class="crp_title">Flush Time</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2010/10/27/4-horsemen-io/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2010. |
<a href="http://blog.fosketts.net/2010/10/27/4-horsemen-io/">The Four Horsemen of Storage System Performance: I/O As a Chain of Bottlenecks</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/computerhistory/" title="View all posts in Computer History" rel="category tag">Computer History</a>, <a href="http://blog.fosketts.net/category/everything/enterprisestorage/" title="View all posts in Enterprise storage" rel="category tag">Enterprise storage</a>, <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>, <a href="http://blog.fosketts.net/category/everything/terabytehome/" title="View all posts in Terabyte home" rel="category tag">Terabyte home</a>, <a href="http://blog.fosketts.net/category/everything/virtualstorage/" title="View all posts in Virtual Storage" rel="category tag">Virtual Storage</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2010/10/27/4-horsemen-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[4 Horsemen]]></series:name>
	</item>
		<item>
		<title>The Four Horsemen of Storage System Performance: Never Enough Cache</title>
		<link>http://blog.fosketts.net/2010/10/07/4-horsemen-cache/</link>
		<comments>http://blog.fosketts.net/2010/10/07/4-horsemen-cache/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 14:51:38 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Computer History]]></category>
		<category><![CDATA[Enterprise storage]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Terabyte home]]></category>
		<category><![CDATA[Virtual Storage]]></category>
		<category><![CDATA[4 horsemen]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[CLARiiON]]></category>
		<category><![CDATA[Data General]]></category>
		<category><![CDATA[DRAM]]></category>
		<category><![CDATA[EMC]]></category>
		<category><![CDATA[NAND]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[Symmetrix]]></category>
		<category><![CDATA[write-back]]></category>
		<category><![CDATA[write-through]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=3608</guid>
		<description><![CDATA[Perhaps the previous discussion of spindles left you exhausted, imagining a spindly-legged centipede of a storage system, trying and failing to run on stilts. The Rule of Spindles would be the end of the story were it not for the second horseman: Cache. He stands in front of the spindles, quickly dispatching requests using solid state memory rather than spinning disks. Cache also acts as a buffer, allowing writes to queue up without forcing the requesters to wait in line.]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 410px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://blog.fosketts.net/wp-content/uploads/2010/08/Four-Horsemen-400.png" ><img title="Four Horsemen-400" src="http://blog.fosketts.net/wp-content/uploads/2010/08/Four-Horsemen-400.png" alt="" width="400" height="309" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">The Four Horsemen of Storage System Performance: These four ugly gentlemen stand between you and your data.</p></div>
<p>Why do some data storage solutions perform better than others? What tradeoffs are made for economy and how do they affect the system as a whole? These questions can be puzzling, but there are core truths that are difficult to avoid. Mechanical disk drives can only move a certain amount of data. RAM caching can improve performance, but only until it runs out. I/O channels can be overwhelmed with data. And above all, a system must be smart to maximize the potential of these components. These are the four horsemen of storage system performance, and they cannot be denied.</p>
<h3>Overcoming the Limits of Spindles</h3>
<p>Perhaps the previous discussion of spindles left you exhausted, imagining a spindly-legged centipede of a storage system, trying and failing to run on stilts. <a href="http://blog.fosketts.net/2010/08/25/4-horsemen-spindles/"  target="_blank">The Rule of Spindles</a> would be the end of the story were it not for the second horseman: Cache. He stands in front of the spindles, quickly dispatching requests using solid state memory rather than spinning disks. Cache also acts as a buffer, allowing writes to queue up without forcing the requesters to wait in line.</p>
<p>Cache may be quick, but practical concerns limit its effectiveness. Solid state memory is available in many types, but all are far more expensive per gigabyte than magnetic hard disk media. DRAM has historically cost 400 times as much as disk capacity, and even NAND flash (the current darling of the industry) is more than 40 times as expensive. Practically speaking, this means that disk devices, from the drives themselves to large enterprise storage arrays, usually include a very small amount of cache relative to their total capacity.</p>
<p>When specifying a storage system, the mathematics of cache and spindles adhere to a simple rule: More is better for performance but worse for the budget. This leads to a trade-off, where a point of diminishing return tells us to stop adding both spindles and cache and accepting the storage system as it is.</p>
<h3>A History of Cache</h3>
<p>Cache was not always as common as it is today. When even a small amount of DRAM cost hundreds of dollars, adding a single RAM chip to a hard disk drive would have broken the bank. So many drives had no cache at all well into the mid 1990&#8242;s. Operating systems of the time used expensive system memory as a buffer for storage operations rather than expecting cache in the disk controller or drive &#8211; remember setting <a href="http://users.cybercity.dk/~bse26236/batutil/help/BUFFERSS.HTM"  target="_blank">the Buffers command in config.sys</a>?</p>
<p>This was not as bad as it seems, at least in theory. Operating systems stand a fighting chance of &#8220;knowing&#8221; what data will be requested next, and could therefore request it ahead of time. They also might get a hint about data that will never be used again and can thus flush that from the so-called buffer cache. Although MS-DOS wasn&#8217;t very good at this, modern systems have greatly advanced in this respect using a technology called demand paging.</p>
<p>Caching at the array was the key differentiator for early enterprise RAID systems, overcoming the punishing slowdowns caused by parity calculations when data was written. EMC adapted their DRAM-based solid-state storage systems to become a cache in front of hard disk drives and the Symmetrix was born. The Data General (now EMC) CLARiiON was notable as well, <a rel="nofollow" href="http://stevetodd.typepad.com/my_weblog/2008/05/clariion-write.html#more"  target="_blank">bringing a large intelligent write cache</a> to the vast market of midrange systems that could never justify the high price of a Symmetrix. Today, all vendors, from IBM to HP to NetApp to HDS, have vast and clever caches.</p>
<p>The importance of cache on enterprise storage performance can not be over-stated. Mix together rotational latency, seek time, and RAID penalty and you get <a rel="nofollow" href="http://blogs.techrepublic.com.com/datacenter/?p=2182"  target="_blank">seriously-compromised I/O response time</a>. But cache can eliminate this penalty entirely, provided there is capacity, by confirming the write and queueing it for later (a concept known as write-back caching). Busy shared storage systems would be simply unusable without cache.</p>
<h3>Five Uses for Disk Buffers</h3>
<p>Hard disk drives today normally contain a small amount of RAM to use as a buffer for I/O requests. This serves the following needs, though not all are found on all drives:</p>
<ol>
<li>A <strong>read cache</strong>, allowing frequently-requested data to be read from memory rather than involving mechanical disk operations</li>
<li>An <strong>I/O-matching</strong> mechanism, allowing slower disks and faster interfaces to work together</li>
<li>A <strong>read-around</strong> (ahead or behind) pre-fetch cache, saving a few blocks around any requested read on the assumption that they will also be requested soon</li>
<li>A <strong>read-after-write cache</strong>, saving recently-written data to serve later read requests</li>
<li>A <strong>command queue</strong>, allowing write commands to be reordered, avoiding the &#8220;<a rel="nofollow" href="http://en.wikipedia.org/wiki/Elevator_seeking"  target="_blank">elevator seeking</a>&#8221; common to early hard disk drives</li>
</ol>
<p>Disk buffer size has expanded rapidly in recent years, with some devices including 64 MB or more or DRAM. <a rel="nofollow" href="http://www.amazon.com/gp/product/B003NSBF32?ie=UTF8&amp;tag=packrat-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B003NSBF32" >Seagate&#8217;s Momentus XT</a> drive even includes 4 GB of NAND flash as a massive read cache!</p>
<h3>Write-Through and Write-Back Cache</h3>
<table border="0">
<tbody>
<tr>
<th colspan="2">There are two basic methods of caching data:</th>
</tr>
<tr>
<td width="50%"><a href="http://static.fosketts.net/wp-content/uploads/2010/10/Write-Through-Cache.png" ><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-thumbnail wp-image-3846" title="Write-Through Cache" src="http://static.fosketts.net/wp-content/uploads/2010/10/Write-Through-Cache-133x150.png" alt="" width="133" height="150" /></a></td>
<td><a href="http://static.fosketts.net/wp-content/uploads/2010/10/Write-Back-Cache.png" ><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-thumbnail wp-image-3845" title="Write-Back Cache" src="http://static.fosketts.net/wp-content/uploads/2010/10/Write-Back-Cache-133x150.png" alt="" width="133" height="150" /></a></td>
</tr>
<tr>
<td>The earliest systems used <strong>read-only</strong> or <strong>write-through</strong> caches. All I/O requests pass through the cache, which usually saves the most recent and serves them up when a read is requested. They don&#8217;t buffer write requests at all, simply passing them through to the storage system to process. They are safe, since the storage device always has a consistent set of committed writes, but they do nothing to offset the RAID penalty.</td>
<td>Most modern storage systems use a <strong>write-back</strong> (also called &#8220;write-behind&#8221;) cache, which acknowledges writes before they are committed to disk. They use non-volatile RAM, battery-backed DRAM, or NAND flash to ensure that data is not lost in the event of a power outage. Though far more effective, this type of memory is also far more costly.</td>
</tr>
</tbody>
</table>
<p>Just about every modern storage array uses caching, and most employ the write-back method to accelerate writes as well as reads. Some have very smart controllers that perform other tricks, but Smart is another Horseman for another day. As mentioned before, RAID systems would be nearly unusable without write-back cache allowing the disks to catch up with random writes.</p>
<h3><strong>Onward: I/O, and Smarts</strong></h3>
<p>The horseman of spindles is harsh, but he does not rule the day. There are many ways to overcome his limits and his three brothers often come into play. These are cache, which bypasses the spindle altogether; I/O, which can constrain even the fastest combination of disk and cache; and the intelligence of the whole system, which limits or accelerates all the rest. We will examine these horsemen in the future!</p>
<p>I&#8217;ve been meaning to write this up for a long time. Thanks for listening and commenting!<br />
<blockquote>Note: Some of these links include affiliate codes that help pay for this blog. For example, <a href="http://www.amazon.com/gp/product/B002Y27P3M?ie=UTF8&tag=packrat-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=B002Y27P3M" target="_blank">buying an Amazon Kindle with this link</a> sends a few bucks my way! But I don't write this blog to make money, and am happy to link to sites and stores that don't pay anything. I like Amazon and buy tons from them, but you're free to buy whatever and wherever you want.</blockquote></p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2010/08/25/4-horsemen-spindles/"  rel="bookmark" class="crp_title">The Four Horsemen of Storage System Performance: The Rule of Spindles</a></li><li><a href="http://blog.fosketts.net/2010/05/17/hybrid-ssd-hard-disk-drives/"  rel="bookmark" class="crp_title">Hybrid SSD/Hard Disk Drives: This Time For Sure!</a></li><li><a href="http://blog.fosketts.net/2007/08/14/commercial-ssds-are-here/"  rel="bookmark" class="crp_title">Commercial SSDs Are Here?</a></li><li><a href="http://blog.fosketts.net/2010/10/27/4-horsemen-io/"  rel="bookmark" class="crp_title">The Four Horsemen of Storage System Performance: I/O As a Chain of Bottlenecks</a></li><li><a href="http://blog.fosketts.net/2008/10/22/flash-disk-cache/"  rel="bookmark" class="crp_title">Is Flash A Disk Or A Cache?</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2010/10/07/4-horsemen-cache/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2010. |
<a href="http://blog.fosketts.net/2010/10/07/4-horsemen-cache/">The Four Horsemen of Storage System Performance: Never Enough Cache</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/computerhistory/" title="View all posts in Computer History" rel="category tag">Computer History</a>, <a href="http://blog.fosketts.net/category/everything/enterprisestorage/" title="View all posts in Enterprise storage" rel="category tag">Enterprise storage</a>, <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>, <a href="http://blog.fosketts.net/category/everything/terabytehome/" title="View all posts in Terabyte home" rel="category tag">Terabyte home</a>, <a href="http://blog.fosketts.net/category/everything/virtualstorage/" title="View all posts in Virtual Storage" rel="category tag">Virtual Storage</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2010/10/07/4-horsemen-cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[4 Horsemen]]></series:name>
	</item>
		<item>
		<title>Flash Forward or Flash Back?</title>
		<link>http://blog.fosketts.net/2008/11/08/flash-forward-flash-back/</link>
		<comments>http://blog.fosketts.net/2008/11/08/flash-forward-flash-back/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 16:00:52 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Computer History]]></category>
		<category><![CDATA[Enterprise storage]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[DMX]]></category>
		<category><![CDATA[DRAM]]></category>
		<category><![CDATA[EMC]]></category>
		<category><![CDATA[iPod]]></category>
		<category><![CDATA[iPod Classic]]></category>
		<category><![CDATA[MacBook Air]]></category>
		<category><![CDATA[NAND]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[Sunday series]]></category>
		<category><![CDATA[Symmetrix]]></category>
		<category><![CDATA[tiered storage]]></category>
		<category><![CDATA[Untitled]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/2008/10/05/flash-forward-or-flash-back/</guid>
		<description><![CDATA[This is part of an ongoing series of longer articles I am posting every Sunday. The tech industry has been buzzing about solid state drives (SSDs) again lately, but many questions remain. Even after many major vendors (Apple, EMC, and Dell to name a few) have introduced NAND flash-based disk into their core products, it is [...]]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px;"><em>This is part of an ongoing </em><a href="http://blog.fosketts.net/tag/Sunday-series/"  target="_self"><em>series of longer articles I am posting every Sunday</em></a><em>.</em></p>
<p>The tech industry has been buzzing about solid state drives (SSDs) again lately, but many questions remain. Even after many major vendors (Apple, EMC, and Dell to name a few) have introduced NAND flash-based disk into their core products, it is unclear whether non-disk storage will fly or flop. I&#8217;m betting it will find a nice niche, but that traditional spinning disks are here for a good long time.<span id="more-617"></span></p>
<h3 class="post-subhead">Apple&#8217;s Flashing Success</h3>
<p>When Apple switched from hard disks to flash in their mainstream product line, the world was abuzz with the novelty: Would flash displace hard drives? Sure, the company still offered disk-based storage for those needing vast capacity, but most people found that 8 GB or so of storage was plenty for daily use. Of course, instead of the MacBook Air, I&#8217;m talking about the iPod family, which contains just a single disk-based model.</p>
<p>Like the Air, the iPod demonstrates that what matters in the &#8220;take it with you&#8221; market is portability in the form of low weight, perceived durability, and compact dimensions. And NAND flash excels when it comes to packaging. The flash-based iPod is an excellent semaphore for this market segment in other ways, too. Audio files are fairly small, so music users don&#8217;t need all that much storage, relatively speaking. They will gladly ignore the cost per GB, too, at such small capacity points: iPod Nano buyers pay ten times more per GB than iPod Classic buyers.</p>
<p>In the case of the iPod, the compact size and joggable durability afforded by the flash iPods is worth the money to most buyers, not that flash player has sufficient capacity to meet their needs. The MacBook Air teaches a slightly different lesson: Although reviewers are quick to point out that the speed and battery life difference between the hard disk and NAND flash versions of the mini notebook are negligible, early buyers were happy to pay $1000 extra to skip the disk. In this case, they paid for quick access time, light weight, and durability that exist as much in their perception as in real-world benchmarks.</p>
<h3 class="post-subhead">EMC&#8217;s Heavyweight Champion</h3>
<p>In the exact opposite corner of the data storage world lurks EMC&#8217;s top-line Symmetrix DMX storage array. When the company announced the availability of NAND flash drives as their top-tier choice for storage, it turned the heads of the whole enterprise storage industry. Although the technology implementation is substantially different from Apple&#8217;s iPod, EMC&#8217;s move suggests that another group of customers exists who are similarly unimpressed by a low cost per GB: Enterprise application managers.</p>
<p>Many have suggested that enterprise flash is not yet competitive in terms of price, capacity, reliability, or even performance. And they have publicly disagreed with EMC CEO, Joe Tucci, who claimed effective parity after 2010 at last year&#8217;s EMC World event. After all, today&#8217;s enterprise flash drives are far more than ten times more expensive than their spinning brothers, and disk capacity continues to march higher by the month.</p>
<p>But the comparison is not about the cost of apples or oranges. In the enterprise storage space, flash drives sot at the top of the pyramid, with just a few units added into the traditional tiered storage mix as a &#8220;tier zero&#8221; of maximum performance. It is not as simple as pulling out a set of 146 GB FC drives and replacing them with a similar number of flash units. Instead, a few key applications or data sets are migrated up to the pinnacle, with the rest of the stack remaining the same.</p>
<p>There is huge promise when this tiered model is combined with storage virtualization, especially the automated variety. If the tiny percentage of storage that truly needs top-tier performance could be moved to a few solid state disks, the whole stack will benefit from reduced device contention. If automation could make the decision on a block-by-block basis, the effectiveness would be much greater.</p>
<h3 class="post-subhead">I Still Remember</h3>
<p>There is another kind of solid state disk in play, too. For over two decades, company after company has pushed the idea of packaging high-performance DRAM as a disk substitute for enterprise storage, just as EMC has now done with NAND. These RAM-based disks offer even higher performance and prices than their flash-based cousins, and none has taken the industry by storm.</p>
<p>Way back when a tiny EMC was one purveyor of solid state storage, I recall the philosophical conundrum posed by the devices: Is it better to package DRAM as storage and use it in a conventional manner or to use that same memory as a cache for actual disks? The market voted for the latter, with EMC and others introducing in-array cache to accelerate RAID to great effect. System memory expanded in parallel, with modern servers optimally caching data in three or more levels internally as well.</p>
<h3 class="post-subhead">Where Does the Flash Go?</h3>
<p>For most uses, this is precisely the correct configuration. The priciest and quickest &#8220;storage&#8221; is placed close to the CPU, with performance and cost dropping and capacity increasing as one moves outward.</p>
<p>Where does flash belong, then? Apple teaches us that NAND flash delivers the goods when it comes to the portable market, and it is likely that the use of this technology in this area will only continue to grow. And EMC shows that there is a need for higher performance in the enterprise storage world as well, though perhaps not enough for pure DRAM devices.</p>
<p>The message is clear: As long as the cost of disk continues to lead, NAND flash will remain a niche product. There are certainly markets for NAND-based devices, from portable computing to the enterprise, but disk just works too well to be displaced. While one can never see too far into the future of storage, it seems clear that conventional hard disks will remain the dominant media for a few more generations of technology at least.</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2007/08/02/wherefore-art-thou-solid-state-disks/"  rel="bookmark" class="crp_title">Wherefore Art Thou, Solid State Disks?</a></li><li><a href="http://blog.fosketts.net/2007/08/14/commercial-ssds-are-here/"  rel="bookmark" class="crp_title">Commercial SSDs Are Here?</a></li><li><a href="http://blog.fosketts.net/2008/10/13/compellent-enterprise-ssd/"  rel="bookmark" class="crp_title">Compellent Does Enterprise SSD Right</a></li><li><a href="http://blog.fosketts.net/2007/09/05/apple-rocks-the-flash/"  rel="bookmark" class="crp_title">Apple Rocks the Flash</a></li><li><a href="http://blog.fosketts.net/2011/08/23/pure-storage-flasharray-ssd-storage-array/"  rel="bookmark" class="crp_title">Pure Storage All-Flash Storage Array Revealed</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2008/11/08/flash-forward-flash-back/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2008. |
<a href="http://blog.fosketts.net/2008/11/08/flash-forward-flash-back/">Flash Forward or Flash Back?</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/apple/" title="View all posts in Apple" rel="category tag">Apple</a>, <a href="http://blog.fosketts.net/category/everything/computerhistory/" title="View all posts in Computer History" rel="category tag">Computer History</a>, <a href="http://blog.fosketts.net/category/everything/enterprisestorage/" title="View all posts in Enterprise storage" rel="category tag">Enterprise storage</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2008/11/08/flash-forward-flash-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

