<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: HDD IOPS limiting factor - seek or rpm?</title>
	<atom:link href="http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/</link>
	<description>Thought stream from SmugMug's CEO &#38; Chief Geek</description>
	<pubDate>Sun, 07 Sep 2008 16:24:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6-bleeding2</generator>
		<item>
		<title>By: huh?</title>
		<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-103072</link>
		<dc:creator>huh?</dc:creator>
		<pubDate>Fri, 13 Jun 2008 10:56:08 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-103072</guid>
		<description>what are you talking about people? may i ask? should i need high RPM and high seek time for my computer to run faster? in layman's word please</description>
		<content:encoded><![CDATA[<p>what are you talking about people? may i ask? should i need high RPM and high seek time for my computer to run faster? in layman&#8217;s word please</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Karl Schulmeisters</title>
		<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-74036</link>
		<dc:creator>Karl Schulmeisters</dc:creator>
		<pubDate>Tue, 30 Oct 2007 23:43:02 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-74036</guid>
		<description>Its not "MAX IOPS" it is "TYPICAL" or "AVERAGE MAX" IOPS.

As has been pointed out before, the "best case" scenarios beat these numbers significantly.  Even with "random" IO you still have "locality of reference (ie when writing a 1 GByte image, you aren't interleaving those writes with data from other sources on a byte-by-byte or even block-by-block basis).  

As has been pointed out, BEST CASE is no-seek required, no spin latency before the read/write.  And WORST CASE is seeking from one side of the platter to the other and then waiting 359deg of rotation.

Clearly the "average case" then is a seek of 1/2 the platter (where the "average seek time" comes from) and a 180deg revolution.  But this assumes completely "dumb" IO on the part of the OS.  On servers, with large disk-buffer caching, it is quite possible to write algorithms that are much more clever about how they lay down data.  

For example the controller can "scatter-gather" out of the cache buffer and organize the I/O to minimize the seek distance.  Of course you have to add in weighting factors like "age" so that a bit of data out on the far reaches doesn't get "starved", but this isn't rocket science.  For some Operating Systems, this is part of the difference between the "Server" versions and "desktop" versions.

Also as pointed out RAID controllers make this calculation even more complex.

But that said, All things being equal, your TYPICAL IOPS is going to be the inverse of (Average Latency+Average Seek)

Note also, that Writing IS slower than reading because reading relies purely on Spintronics http://en.wikipedia.org/wiki/Spintronics based sensing, whereas writing requires that you generate higher currents to influence the actual magnetic surface. BUT because you can't effectively vary the speed of the disk, you spin the disk ALWAYS at the speed of Maxium writing.</description>
		<content:encoded><![CDATA[<p>Its not &#8220;MAX IOPS&#8221; it is &#8220;TYPICAL&#8221; or &#8220;AVERAGE MAX&#8221; IOPS.</p>
<p>As has been pointed out before, the &#8220;best case&#8221; scenarios beat these numbers significantly.  Even with &#8220;random&#8221; IO you still have &#8220;locality of reference (ie when writing a 1 GByte image, you aren&#8217;t interleaving those writes with data from other sources on a byte-by-byte or even block-by-block basis).  </p>
<p>As has been pointed out, BEST CASE is no-seek required, no spin latency before the read/write.  And WORST CASE is seeking from one side of the platter to the other and then waiting 359deg of rotation.</p>
<p>Clearly the &#8220;average case&#8221; then is a seek of 1/2 the platter (where the &#8220;average seek time&#8221; comes from) and a 180deg revolution.  But this assumes completely &#8220;dumb&#8221; IO on the part of the OS.  On servers, with large disk-buffer caching, it is quite possible to write algorithms that are much more clever about how they lay down data.  </p>
<p>For example the controller can &#8220;scatter-gather&#8221; out of the cache buffer and organize the I/O to minimize the seek distance.  Of course you have to add in weighting factors like &#8220;age&#8221; so that a bit of data out on the far reaches doesn&#8217;t get &#8220;starved&#8221;, but this isn&#8217;t rocket science.  For some Operating Systems, this is part of the difference between the &#8220;Server&#8221; versions and &#8220;desktop&#8221; versions.</p>
<p>Also as pointed out RAID controllers make this calculation even more complex.</p>
<p>But that said, All things being equal, your TYPICAL IOPS is going to be the inverse of (Average Latency+Average Seek)</p>
<p>Note also, that Writing IS slower than reading because reading relies purely on Spintronics <a href="http://en.wikipedia.org/wiki/Spintronics" rel="nofollow">http://en.wikipedia.org/wiki/Spintronics</a> based sensing, whereas writing requires that you generate higher currents to influence the actual magnetic surface. BUT because you can&#8217;t effectively vary the speed of the disk, you spin the disk ALWAYS at the speed of Maxium writing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: hgdomainnames &#187; Blog Archive &#187; HDD IOPS limiting factor - seek or rpm?</title>
		<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-73537</link>
		<dc:creator>hgdomainnames &#187; Blog Archive &#187; HDD IOPS limiting factor - seek or rpm?</dc:creator>
		<pubDate>Sat, 27 Oct 2007 16:48:12 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-73537</guid>
		<description>[...] You can read more here [...]</description>
		<content:encoded><![CDATA[<p>[...] You can read more here [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joseph Kirby</title>
		<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71258</link>
		<dc:creator>Joseph Kirby</dc:creator>
		<pubDate>Tue, 09 Oct 2007 17:24:44 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71258</guid>
		<description>PS: drives also have more than one platter.</description>
		<content:encoded><![CDATA[<p>PS: drives also have more than one platter.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joseph Kirby</title>
		<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71257</link>
		<dc:creator>Joseph Kirby</dc:creator>
		<pubDate>Tue, 09 Oct 2007 17:23:00 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71257</guid>
		<description>Your assuming the drive needs to do linear reads/writes but if it needs to wait a full rotation for a sector it may be able to pick up some other sector before that time.

AKA if it write sectors 1, 10, 5 it may write them 1, 5, 10.</description>
		<content:encoded><![CDATA[<p>Your assuming the drive needs to do linear reads/writes but if it needs to wait a full rotation for a sector it may be able to pick up some other sector before that time.</p>
<p>AKA if it write sectors 1, 10, 5 it may write them 1, 5, 10.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tao Shen</title>
		<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71196</link>
		<dc:creator>Tao Shen</dc:creator>
		<pubDate>Tue, 09 Oct 2007 09:20:30 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71196</guid>
		<description>Same analysis can be done for the 7200rpm drives:

Average Latency: 4.2ms
Average Seek Time: 8.9ms
Average Write Time: 10.9ms

the 7200rpm = 120rps or 8.333ms or 4.1666ms average latency for 180 degree rotation.

But on those "nonenterprise drives", they pair them up with the armature that on average does 8.9ms seek, giving you a maximum of 112 IOPS due to seek.  or a maximum of 240 IOPS due to pure rotation.

It's interesting: in a RAID configuration, depends on the optimization done on the raid controller, the real world performance tests seem to fall in between.  [112, 240] for 7200rpm, [303, 500] for 15k rpm.</description>
		<content:encoded><![CDATA[<p>Same analysis can be done for the 7200rpm drives:</p>
<p>Average Latency: 4.2ms<br />
Average Seek Time: 8.9ms<br />
Average Write Time: 10.9ms</p>
<p>the 7200rpm = 120rps or 8.333ms or 4.1666ms average latency for 180 degree rotation.</p>
<p>But on those &#8220;nonenterprise drives&#8221;, they pair them up with the armature that on average does 8.9ms seek, giving you a maximum of 112 IOPS due to seek.  or a maximum of 240 IOPS due to pure rotation.</p>
<p>It&#8217;s interesting: in a RAID configuration, depends on the optimization done on the raid controller, the real world performance tests seem to fall in between.  [112, 240] for 7200rpm, [303, 500] for 15k rpm.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tao Shen</title>
		<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71190</link>
		<dc:creator>Tao Shen</dc:creator>
		<pubDate>Tue, 09 Oct 2007 08:38:49 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71190</guid>
		<description>@Don:

This is interesting:
http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&#38;N=2010150014+1035507779&#38;name=15%2c000+RPM

According to newegg, that's the list of 15K drives they have:

And some spec they publish:

Average Latency: 2ms
Average Seek Time: 3.3ms
Average Write Time: 3.8ms

Supposely, a 15K rpm drive can do 250rps, inverse of that is 4ms per revolution.  Jeff is right that, on average, you wait for half a revolution 180 degrees, or 2ms.  So according to newegg, that spec is actually named "Average latency".  All 15K drives gives 2ms for average latency as a simple stat due to RPM.

Now the seek time 3.3ms is a function of the armature.  And I also suppose it is the worst case guaranteed speed.  Correct me if I am wrong, for the best case, the head is at the exact position, and it's basically waiting for the drive to spin to the location.  Also there is this "multiple platter" factor.  Most 15K drives are at least 2 platter design.(?), so the System-on-chip controller used on the drive optimizes the seek on the two platters for random IO.

As to the MD3000's cached writes...yes they bundle the writes and reads together, but what they are really doing is to operate the drives at higher IO queue depth.  If you look at the storagereview charts at different IO queue depth level(io depth 1,2,4,....etc, 128)  you will see that at higher IO queue depth, some drives deliver higher total IOPS performance.  It is a function of how well the drive's System-on chip controller's firmware is optimized across multiple platters.

So when I said that 15K drives have a "maximum theoretical IOPS limit" of 500 due to 2ms seek, I used the wrong word and I appologize for it.  Should have used rotational latency.  But seek performance can helped a little by firmware optimization and IO queue depth.  It's due to the rotational latency, 15K drives can never do more than 500 IOPS, on average, provides that all IOs are random.

Storagereview said that at 128 IO queue depth, most 15K SCSIs do 350-380 IOPS, and the seagate one on top did 417,which is really good.  

In the case of the DELL MD3000, the 15 drives are configured in 14 drive RAID 10, with 1 swap.  So you will get maximum read performance of 14 drives, and maximum write performance of 7 drives.  Let's assume that the 6000 IOPS measured are mostly reads spread across 14 drives, gives you 428 average IOPS per drive for reading, which is within the reach of good 15K SAS drives.</description>
		<content:encoded><![CDATA[<p>@Don:</p>
<p>This is interesting:<br />
<a href="http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&amp;N=2010150014+1035507779&amp;name=15%2c000+RPM" rel="nofollow">http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&amp;N=2010150014+1035507779&amp;name=15%2c000+RPM</a></p>
<p>According to newegg, that&#8217;s the list of 15K drives they have:</p>
<p>And some spec they publish:</p>
<p>Average Latency: 2ms<br />
Average Seek Time: 3.3ms<br />
Average Write Time: 3.8ms</p>
<p>Supposely, a 15K rpm drive can do 250rps, inverse of that is 4ms per revolution.  Jeff is right that, on average, you wait for half a revolution 180 degrees, or 2ms.  So according to newegg, that spec is actually named &#8220;Average latency&#8221;.  All 15K drives gives 2ms for average latency as a simple stat due to RPM.</p>
<p>Now the seek time 3.3ms is a function of the armature.  And I also suppose it is the worst case guaranteed speed.  Correct me if I am wrong, for the best case, the head is at the exact position, and it&#8217;s basically waiting for the drive to spin to the location.  Also there is this &#8220;multiple platter&#8221; factor.  Most 15K drives are at least 2 platter design.(?), so the System-on-chip controller used on the drive optimizes the seek on the two platters for random IO.</p>
<p>As to the MD3000&#8217;s cached writes&#8230;yes they bundle the writes and reads together, but what they are really doing is to operate the drives at higher IO queue depth.  If you look at the storagereview charts at different IO queue depth level(io depth 1,2,4,&#8230;.etc, 128)  you will see that at higher IO queue depth, some drives deliver higher total IOPS performance.  It is a function of how well the drive&#8217;s System-on chip controller&#8217;s firmware is optimized across multiple platters.</p>
<p>So when I said that 15K drives have a &#8220;maximum theoretical IOPS limit&#8221; of 500 due to 2ms seek, I used the wrong word and I appologize for it.  Should have used rotational latency.  But seek performance can helped a little by firmware optimization and IO queue depth.  It&#8217;s due to the rotational latency, 15K drives can never do more than 500 IOPS, on average, provides that all IOs are random.</p>
<p>Storagereview said that at 128 IO queue depth, most 15K SCSIs do 350-380 IOPS, and the seagate one on top did 417,which is really good.  </p>
<p>In the case of the DELL MD3000, the 15 drives are configured in 14 drive RAID 10, with 1 swap.  So you will get maximum read performance of 14 drives, and maximum write performance of 7 drives.  Let&#8217;s assume that the 6000 IOPS measured are mostly reads spread across 14 drives, gives you 428 average IOPS per drive for reading, which is within the reach of good 15K SAS drives.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Watkins</title>
		<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71189</link>
		<dc:creator>Jason Watkins</dc:creator>
		<pubDate>Tue, 09 Oct 2007 07:41:14 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71189</guid>
		<description>http://citeseer.ist.psu.edu/738362.html

Max iops is going to depend on your particular pattern of access. Theoretical max would be if you're so very lucky that the blocks can be accessed in exactly the order they happen to fly under the head. So, that would be the product of revolutions and density.

For real workloads, both seek and spin matter. From a given block, there's a set of blocks that are accessible within some given constant time. This is because you can move the seek head while you wait for rotation. So if you could figure out the locality of your access patterns, you could find predict iops.

1 / average seek time would seem a reasonable practical guess.</description>
		<content:encoded><![CDATA[<p><a href="http://citeseer.ist.psu.edu/738362.html" rel="nofollow">http://citeseer.ist.psu.edu/738362.html</a></p>
<p>Max iops is going to depend on your particular pattern of access. Theoretical max would be if you&#8217;re so very lucky that the blocks can be accessed in exactly the order they happen to fly under the head. So, that would be the product of revolutions and density.</p>
<p>For real workloads, both seek and spin matter. From a given block, there&#8217;s a set of blocks that are accessible within some given constant time. This is because you can move the seek head while you wait for rotation. So if you could figure out the locality of your access patterns, you could find predict iops.</p>
<p>1 / average seek time would seem a reasonable practical guess.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Bonwick</title>
		<link>http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71153</link>
		<dc:creator>Jeff Bonwick</dc:creator>
		<pubDate>Tue, 09 Oct 2007 02:00:25 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/2007/10/08/hdd-iops-limiting-factor-seek-or-rpm/#comment-71153</guid>
		<description>You're right that rotation dominates, but you're off by a factor of 2 in the calculation.  On average, you have to wait half a revolution, not a whole revolution, for a random I/O.  Thus a 7200 RPM drive should be able to deliver 240 IOPS, and a 15K RPM drive should deliver 500.  However, this is a little optimistic because when you're waiting for a 270 degree rotation, seek time doesn't matter, but when you're waiting for a 10 degree rotation it does -- in fact, if you can't seek fast enough, you'll end up waiting for 370 degrees in that case.  And the seek distance matters too, because track-to-track seeks are very fast, while larger seeks take longer (because you have to decelerate the head, find the sync marks, and wait for the arm to stop ringing).

With a strong enough magnet and current, you can make seeks as fast as you need them.  The limiting factor is rotation because the heads float on an air bearing, and the outer edge of a 3.5" 15k RPM platter moves at 155 MPH -- a category 5 hurricane, or Mach 0.21.  There are all sorts of problems with the airflow if you spin much faster.  (BTW, that's why 2.5" drives can spin faster -- airspeed is linear in diameter.)  So you first decide the rotation speed, then select (typically) the cheapest armature that can deliver comparable seek times.  You can get incremental improvement with faster seeks (fewer low-angle-of-rotation I/Os will blow a rotation), but it's a case of rapidly diminishing returns with rapidly increasing hardware costs and power consumption.</description>
		<content:encoded><![CDATA[<p>You&#8217;re right that rotation dominates, but you&#8217;re off by a factor of 2 in the calculation.  On average, you have to wait half a revolution, not a whole revolution, for a random I/O.  Thus a 7200 RPM drive should be able to deliver 240 IOPS, and a 15K RPM drive should deliver 500.  However, this is a little optimistic because when you&#8217;re waiting for a 270 degree rotation, seek time doesn&#8217;t matter, but when you&#8217;re waiting for a 10 degree rotation it does &#8212; in fact, if you can&#8217;t seek fast enough, you&#8217;ll end up waiting for 370 degrees in that case.  And the seek distance matters too, because track-to-track seeks are very fast, while larger seeks take longer (because you have to decelerate the head, find the sync marks, and wait for the arm to stop ringing).</p>
<p>With a strong enough magnet and current, you can make seeks as fast as you need them.  The limiting factor is rotation because the heads float on an air bearing, and the outer edge of a 3.5&#8243; 15k RPM platter moves at 155 MPH &#8212; a category 5 hurricane, or Mach 0.21.  There are all sorts of problems with the airflow if you spin much faster.  (BTW, that&#8217;s why 2.5&#8243; drives can spin faster &#8212; airspeed is linear in diameter.)  So you first decide the rotation speed, then select (typically) the cheapest armature that can deliver comparable seek times.  You can get incremental improvement with faster seeks (fewer low-angle-of-rotation I/Os will blow a rotation), but it&#8217;s a case of rapidly diminishing returns with rapidly increasing hardware costs and power consumption.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
