<?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>SSD Performance Blog</title>
	<atom:link href="http://www.ssdperformanceblog.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ssdperformanceblog.com</link>
	<description>Percona&#039;s blog about SSD performance and MySQL</description>
	<lastBuildDate>Tue, 15 Nov 2011 17:17:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>MLC SSD card lifetime and write amplification</title>
		<link>http://www.ssdperformanceblog.com/2011/11/mlc-ssd-card-lifetime-and-write-amplification/</link>
		<comments>http://www.ssdperformanceblog.com/2011/11/mlc-ssd-card-lifetime-and-write-amplification/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 17:17:35 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ssdperformanceblog.com/?p=201</guid>
		<description><![CDATA[As MLC-based SSD cards are raising popularity, there is also a raising concern how long it can survive. As we know, a MLC NAND module can handle 5,000-10,000 erasing cycles, after which it gets unusable. And obviously the SSD card &#8230; <a href="http://www.ssdperformanceblog.com/2011/11/mlc-ssd-card-lifetime-and-write-amplification/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As MLC-based SSD cards are raising popularity, there is also a raising concern how long it can survive. As we know, a MLC NAND module can handle 5,000-10,000 erasing cycles, after which it gets unusable. And obviously the SSD card based on MLC NAND has a limited lifetime. There is a lot of misconceptions and misunderstanding on how long such card can last, so I want to show some calculation to shed a light on this question.<br />
<span id="more-201"></span><br />
For base I will take Virident FlashMAX M1400 (1.4TB) card. Virident guarantees <strong>15PB</strong> (PB as in petabytes) of writes on this card.<br />
<strong>15PB</strong> sounds impressive, but how many years it corresponds to ? Of course it depends on your workload, and mainly how write intensive it is. But there are some facts that can help you to estimate.</p>
<p>On Linux you can look into the <code>/proc/diskstats</code> file, which shows something like:</p>
<pre>
 251       0 vgca0 30273954 0 968968610 416767 122670649 0 8492649856 19260417 0 19677184 220200747
</pre>
<p>where 8492649856 is the number of sectors written since the reboot (sector is 512 bytes).</p>
<p>Now you can say that we may take <code>/proc/diskstats</code> stats with the 1h interval, and it will show write how many bytes per hour we write, and in such way to calculate the potential lifetime.<br />
This will be only partially correct. There is such factor as Write Amplification, which is very well described on <a href="http://en.wikipedia.org/wiki/Write_amplification">WikiPedia</a>, but basically SSD cards, due an internal organization, write more data than it comes from an application.<br />
Usually the write amplification is equal or very close to 1 (meaning there is no overhead) for sequential writes and it gets a maximum value for fully random writes. This value can be 2 &#8211; 5 or more and depends on many factors like the used capacity and the space used for an over-provisioning.</p>
<p>Basically it means you should look into the card statistic to get an exact written bytes.<br />
For Virident FlashMAX it is</p>
<pre>
vgc-monitor -d /dev/vgca  | grep writes
                                 379835046150144 (379.84TB) (writes)
</pre>
<p>Having this info let&#8217;s take look what a lifetime we can expect under a tpcc-mysql workload.<br />
I put 32 users threads against 5000W dataset (about 500GB of data on the disk) during 1 hour.</p>
<p>After 1 hour, <code>/proc/diskstat</code> shows <strong>984,442,441,728</strong> bytes written, which is 984.44GB and the Virident stat shows <strong>1,125,653,692,416</strong> bytes written, which is 1,125.65GB<br />
It allows us to calculate the write amplification factor, which in our case is<br />
1,125,653,692,416 / 984,442,441,728 = <strong>1.143</strong>. This looks very decent, but remember we use only 500GB out of 1400GB, and the factor will grow as we fill out more space.</p>
<p>Please note we put a quite intensive write load during this hour.<br />
MySQL handled 25,000 updates/sec, 20,000 inserts/sec and 1,500 deletes/sec, which corresponds to<br />
write throughput 273.45MB/sec from MySQL to disk.</p>
<p>And it helps to calculate the lifetime of the card if we put such workload 24/7 non-stop.<br />
15PB (of total writes) / 1125.65GB (per hour) = 13,325.634 hours = 555.23 days = 1.52 years</p>
<p>That is under non-stop tpcc-mysql workload we may expect the card will last 1.52 years. However, in real production you do not have an uniform load every hour, so you may base your estimation on daily or weekly stats.</p>
<p>Unfortunately there is no easy way to predict this number until you start workload on the SSD.<br />
You can take look into <code>/proc/diskstat</code>, but<br />
1. There is write amplification factor which you do not know<br />
and 2. A throughput on regular RAID is much less than on SSD and you do not know what your throughput will be when you put workload on SSD.</p>
<p><!-- Place this render call where appropriate --><br />
<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script></p>
<p><script type="text/javascript">mbgc='f5f5f5';ww='320';mbc='cecece';bbc='3F79D5';bmobc='3b71c6';bbgc='4889F0';bmoc='3F79D5';bfc='FFFFFF';bmofc='ffffff';tlc='cecece';tc='6a6a6a';nc='6a6a6a';bc='6a6a6a';l='y';fs='16';fsb='13';bw='100';ff='4';pc='4889F0';b='s'; pid='109242749016593233313';</script><script type="text/javascript" src="http://widgetsplus.com/google_plus_widget.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2011/11/mlc-ssd-card-lifetime-and-write-amplification/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Review of Virident FlashMAX MLC cards</title>
		<link>http://www.ssdperformanceblog.com/2011/11/review-of-virident-flashmax-mlc-cards/</link>
		<comments>http://www.ssdperformanceblog.com/2011/11/review-of-virident-flashmax-mlc-cards/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 03:42:42 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[MLC]]></category>

		<guid isPermaLink="false">http://www.ssdperformanceblog.com/?p=193</guid>
		<description><![CDATA[I have been following Virident for a long time (e.g. http://www.mysqlperformanceblog.com/2010/06/15/virident-tachion-new-player-on-flash-pci-e-cards-market/). They have great PCIe Flash cards based on SLC NAND. I always thought that Virident needed to come up with an MLC card, and I am happy to see &#8230; <a href="http://www.ssdperformanceblog.com/2011/11/review-of-virident-flashmax-mlc-cards/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have been following <a href="http://www.virident.com/">Virident</a> for a long time (e.g. <a href="http://www.mysqlperformanceblog.com/2010/06/15/virident-tachion-new-player-on-flash-pci-e-cards-market/">http://www.mysqlperformanceblog.com/2010/06/15/virident-tachion-new-player-on-flash-pci-e-cards-market/</a>). They have great PCIe Flash cards based on SLC NAND.<br />
I always thought that Virident needed to come up with an MLC card, and I am happy to see they have finally done so.</p>
<p>At Virident&#8217;s request, I performed an evaluation of their MLC card to assess how it handles MySQL workload. As I am very satisfied with the results, I wish to share my findings in this post.<br />
<span id="more-193"></span></p>
<p>But first, I wish to offer an overview of the card.</p>
<p><a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/11/FlashMAX-Product-Photo.jpg"><img class="aligncenter size-medium wp-image-7314" title="FlashMAX Product Photo" src="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/11/FlashMAX-Product-Photo-260x300.jpg" alt="" width="260" height="300" /></a></p>
<p>Virident FlashMax Cards are available in 1TB and 1.4TB usable capacities (the models names are M1000 and M1400)<br />
These specified sizes are already available for end users.<br />
I evaluated M1400 (1.4TB size) model, which I will discuss:</p>
<p>Because Virident has competition in the SSD market, they have stated their goals to distinguish themselves from their competitors:</p>
<ul>
<li>Stability of performance: That is to minimize variations in throughput</li>
<li>Better response times: This is very important for database performance and I appreciate that Virident has made this a priority.</li>
<li>Performance at full capacity: As we know, SSD-based cards have special characteristics; the throughput declines when space utilization increases. Virident’s design/programming minimizes this decline.</li>
<li>RAID5 on the card: The card comes with RAID5 support on the card to give better protection.</li>
</ul>
<p>To deal with a throughput decline, all Flash cards have reserved space. The 1.4TB card, that I have, internally holds 2TB worth of space.</p>
<p>This additional space is used for two purposes:</p>
<ul>
<ol>1. To amortize write-intensive workloads, by using additional space.</ol>
<ol>2. To have replacements for failed MLC modules. When one MLC module fails, it is marked as unused, and gets replaced by one from the pool of reserved modules.</ol>
</ul>
<p>Internally, Virident uses 25nm Intel NAND Flash MLC modules, this is the same technology that Intel uses for the Intel SSD 320 cards. 25nm modules allow the user a greater capacity, Physically you can place<br />
more GBs into a given area. However, the drawback is that 25nm has worse reading and writing latencies, compared to previous generations. However, I have yet to determine how this affects MySQL workloads.</p>
<p>Virident has provided the following price list:</p>
<ul>
<li>M1000 (1000GB Usable) &#8211; $13,000</li>
<li>M1400 (1400GB Usable) &#8211; $18,200</li>
<li>This amounts to <strong>$13/GB</strong></li>
</ul>
<p>Second, it is important to compare the performance of Virident FlashMAX MLC with available competing solutions.<br />
It is fair to say Fusion-io ioDrive Duo 1.28TB MLC is the most well-known and most advanced competitor in the market.<br />
I had a chance to administer a head-to-head comparison of sysbench and tpcc-mysql workloads between FlashMAX 1.4TB and ioDrive Duo 1.28TB.</p>
<p>It is important to highlight that Fusion-io ioDrive Duo is based on 34nm NAND technology, which is a full generation behind the 25nm NAND. However at this point, I have no access to Fusion-io ioDrive2, which is based on 25nm NAND.<br />
Another important factor is that ioDrive Duo is actually two cards visible in the OS, and the user needs to use a software RAID. For Virident all 1400GB shows up as one single drive so no software RAID is necessary.</p>
<p>To compare performances I ran sysbench oltp and tpcc-mysql benchmarks. I will present the results<br />
for sysbench oltp (with full report available later) below, and the results for tpcc-mysql in a followup post.</p>
<p>For sysbench, I used our multi-tables sysbench implementation with 256 tables and 10,000,000 rows each. This is a total of around 630GB of data, which allows one to adequately fill both cards in comparison.</p>
<p>Some hardware used in benchmarks include:</p>
<ul>
<li>Server: Cisco UCS C250, running Oracle Linux 6.1 and Percona Server 5.5.15</li>
<li>Client: HP ProLiant DL380 G6, sysbench v5</li>
</ul>
<p>Of course, our Percona Server was optimized for Flash cards, with variations for two settings.<br />
I tested combinations of <strong>innodb_buffer_pool_size</strong>=120GB, 174GB and <strong>innodb_flush_log_at_trx_commit</strong>=1, 2.</p>
<p>The results in this post are for case <strong>innodb_buffer_pool_size</strong>=174GB and <strong>innodb_flush_log_at_trx_commit</strong>=1</p>
<p>As in all my recent benchmarks, I use long runs of 1 hour each with measurements every 10 seconds. This methodology allows me to observe trends and the stability of the performance on graphs.</p>
<p>The first graph represents throughput in transactions per second for different amounts of user threads (more is better). More concentrated dots represent less variance and better stability of throughput.<br />
<a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/11/sysbench-thrp-174GB-trx1.png"><img class="aligncenter size-full wp-image-7310" title="sysbench-thrp-174GB-trx1" src="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/11/sysbench-thrp-174GB-trx1.png" alt="" width="600" height="400" /></a></p>
<p>A tabular format, for throughput I use a median of measurements for last 1800 seconds in each run:</p>
<table width="600">
<tbody>
<tr>
<td></td>
<td>Card / Threads / tps</td>
<td>1</td>
<td>2</td>
<td>4</td>
<td>8</td>
<td>16</td>
<td>32</td>
<td>64</td>
<td>128</td>
<td>256</td>
<td>512</td>
<td>1024</td>
</tr>
<tr>
<td align="right">1</td>
<td>Fusion-io ioDrive Duo</td>
<td align="right">83.00</td>
<td align="right">177.00</td>
<td align="right">322.00</td>
<td align="right">523.00</td>
<td align="right">644.00</td>
<td align="right">740.00</td>
<td align="right">801.00</td>
<td align="right">798.00</td>
<td align="right">761.00</td>
<td align="right">784.00</td>
<td align="right">162.00</td>
</tr>
<tr>
<td align="right">2</td>
<td>Virident FlashMAX</td>
<td align="right">96.00</td>
<td align="right">179.00</td>
<td align="right">357.00</td>
<td align="right">607.00</td>
<td align="right">821.00</td>
<td align="right">975.00</td>
<td align="right">1083.00</td>
<td align="right">1156.00</td>
<td align="right">1064.00</td>
<td align="right">1091.00</td>
<td align="right">465.00</td>
</tr>
</tbody>
</table>
<p>In order to examine the details of how throughput varies we have taken 32 threads and examined the timeline graph for each one:<br />
<a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/11/sysbench-stab-174-trx1.png"><img class="aligncenter size-full wp-image-7311" title="sysbench-stab-174-trx1" src="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/11/sysbench-stab-174-trx1.png" alt="" width="600" height="400" /></a></p>
<p>While you can see that with Virident FlashMAX we have a pretty stable line of around <strong>975 tps</strong>, the Fusion-io ioDrive Duo has a variance of <strong>700-800</strong> tps.</p>
<p>My conclusions are as follows:</p>
<ul>
<li>It is great to see another player on MLC Flash cards market.</li>
<li>It is also great that Virident focuses on stability of performance for competitive advantage.</li>
<li>Beside stability, we also see better throughput in MySQL using the Virident FlashMAX card for every thread count. On 32-64 threads we have about a 35-40% advantage of using Virident FlashMAX.</li>
</ul>
<p><strong>DISCLOSURE</strong>: This review was done as part of our consulting practice for which we compensated by Virident. However, this review was written independently of Virident, and reflects our opinion of this product.</p>
<p><!-- Place this render call where appropriate --><br />
<script type="text/javascript">// <![CDATA[
     (function() {     var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;     po.src = 'https://apis.google.com/js/plusone.js';     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);   })();
// ]]&gt;</script></p>
<p><script type="text/javascript">// <![CDATA[
   mbgc='f5f5f5';ww='320';mbc='cecece';bbc='3F79D5';bmobc='3b71c6';bbgc='4889F0';bmoc='3F79D5';bfc='FFFFFF';bmofc='ffffff';tlc='cecece';tc='6a6a6a';nc='6a6a6a';bc='6a6a6a';l='y';fs='16';fsb='13';bw='100';ff='4';pc='4889F0';b='s'; pid='109242749016593233313';
// ]]&gt;</script><script type="text/javascript" src="http://widgetsplus.com/google_plus_widget.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2011/11/review-of-virident-flashmax-mlc-cards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multiple MySQL instances on Fusion-io ioDrive</title>
		<link>http://www.ssdperformanceblog.com/2011/10/multiple-mysql-instances-on-fusion-io-iodrive/</link>
		<comments>http://www.ssdperformanceblog.com/2011/10/multiple-mysql-instances-on-fusion-io-iodrive/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 22:27:43 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ssdperformanceblog.com/?p=189</guid>
		<description><![CDATA[It is known that MySQL due internal limitations is not able to utilize all CPU and IO resources available on modern hardware. Idea is to run multiple instances of MySQL to gain better performance on Fusion-io ioDrive card. Full report &#8230; <a href="http://www.ssdperformanceblog.com/2011/10/multiple-mysql-instances-on-fusion-io-iodrive/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It is known that MySQL due internal limitations is not able to utilize<br />
all CPU and IO resources available on modern hardware.<br />
Idea is to run multiple instances of MySQL to gain better performance on Fusion-io ioDrive card.</p>
<p>Full report is <a href="http://www.percona.com/redir/files/white-papers/fusion-io-mysql-multi-instances-report.pdf">available in PDF</a></p>
<p><span id="more-189"></span><br />
For tests we used tpcc-mysql package, which generates TPCC-like workload on MySQL systems.</p>
<ul>
<li>Server hardware: Dell PowerEdge R815
</li>
<li>Storage: Fusion-io ioDrive Duo 640GB MLC. Fusion-io driver version: 2.3.1 build 123; Firmware v5.0.7, rev 101971
</li>
<li>Software: Percona Server 5.5.15
</li>
<li>Client hardware: IBM x3650
</li>
</ul>
<p>Fusion-io ioDrive Duo 640GB MLC card was provided by <a href="http://www.fusionio.com/">Fusion-io</a>.</p>
<p>More details on hardware and software configuration are in <a href="http://www.percona.com/redir/files/white-papers/fusion-io-mysql-multi-instances-report.pdf">full report</a></p>
<p>tpcc-mysql tests were run for following combinations:</p>
<p>2400W, big buffer pool</p>
<ul>
<li>     1 MySQL instance, 2400 warehouses (220GB of data), 120GB buffer pool
</li>
<li>     2 MySQL instances, 1200 warehouses (110GB of data) each, 60GB buffer pool each
</li>
<li>     4 MySQL instances, 600 warehouses (55GB of data) each, 30GB buffer pool each
</li>
</ul>
<p>2400W, small buffer pool</p>
<ul>
<li>     1 MySQL instance, 2400 warehouses (220GB of data), 64GB buffer pool
</li>
<li>     2 MySQL instances, 1200 warehouses (110GB of data) each, 32GB buffer pool each
</li>
<li>     4 MySQL instances, 600 warehouses (55GB of data) each, 16GB buffer pool each
</li>
</ul>
<p>1200W, big buffer pool</p>
<ul>
<li>     1 MySQL instance, 1200 warehouses (110GB of data), 120GB buffer pool
</li>
<li>     2 MySQL instances, 600 warehouses (55GB of data) each, 60GB buffer pool each
</li>
</ul>
<p>1200W, small buffer pool</p>
<ul>
<li>   1 MySQL instance, 1200 warehouses (110GB of data), 64GB buffer pool
</li>
<li>   2 MySQL instances, 600 warehouses (55GB of data) each, 32GB buffer pool each
</li>
</ul>
<p>The purpose of different combination of data and memory sizes, was to check<br />
how data/memory ratio affects results.</p>
<p>We used 48 user sessions and we performed 2700 sec long run, gathering data for New Order Transaction each 10 seconds.</p>
<p>That is, for each set of user sessions, we take 270 throughput measurements.</p>
<p>Based on this, we constructed Median Throughput for last 900 sec, to avoid warm-up influence on results.</p>
<p><a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/10/fio-2400-120g.png"><img src="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/10/fio-2400-120g.png" alt="" title="fio-2400-120g" width="600" height="400" class="aligncenter size-full wp-image-7077" /></a></p>
<p><a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/10/fio-2400-64g.png"><img src="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/10/fio-2400-64g.png" alt="" title="fio-2400-64g" width="600" height="400" class="aligncenter size-full wp-image-7076" /></a></p>
<p><a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/10/fio-1200-120g.png"><img src="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/10/fio-1200-120g.png" alt="" title="fio-1200-120g" width="600" height="400" class="aligncenter size-full wp-image-7075" /></a></p>
<p><a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/10/fio-1200-64g.png"><img src="http://www.mysqlperformanceblog.com/wp-content/uploads/2011/10/fio-1200-64g.png" alt="" title="fio-1200-64g" width="600" height="400" class="aligncenter size-full wp-image-7074" /></a></p>
<p>In conclusion I can highlight:</p>
<ul>
<li>Running multiple instances shows good improvement in throughput. <strong>1.4x-1.8x</strong> for 2 instances and <strong>1.6-2.4x</strong> for 4 instances.
</li>
<li>If you have sharding environment which allows you separate database into multiple instances you may try 2-4 instances setup to get better overall throughput from your MySQL setup
</li>
</ul>
<p>Recently Fusion-io announced new <a href="http://www.fusionio.com/platforms/iodrive2/">ioDrive2 card</a> with new driver, which promises even better performance for MySQL. I am looking forward to test it.</p>
<p><strong>Disclaimer</strong>: This benchmark is sponsored by Fusion-io, but this post is totally independent and fully reflects our opinion.</p>
<p><!-- Place this tag where you want the +1 button to render --><br />
<g:plusone annotation="inline"></g:plusone></p>
<p><!-- Place this render call where appropriate --><br />
<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script></p>
<p><script type="text/javascript">mbgc='f5f5f5';ww='320';mbc='cecece';bbc='3F79D5';bmobc='3b71c6';bbgc='4889F0';bmoc='3F79D5';bfc='FFFFFF';bmofc='ffffff';tlc='cecece';tc='6a6a6a';nc='6a6a6a';bc='6a6a6a';l='y';fs='16';fsb='13';bw='100';ff='4';pc='4889F0';b='s'; pid='109242749016593233313';</script><script type="text/javascript" src="http://widgetsplus.com/google_plus_widget.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2011/10/multiple-mysql-instances-on-fusion-io-iodrive/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Intel 320 SSD write performance &#8211; contd.</title>
		<link>http://www.ssdperformanceblog.com/2011/09/intel-320-ssd-write-performance-cont/</link>
		<comments>http://www.ssdperformanceblog.com/2011/09/intel-320-ssd-write-performance-cont/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 01:31:57 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[MLC]]></category>

		<guid isPermaLink="false">http://www.ssdperformanceblog.com/?p=164</guid>
		<description><![CDATA[I wrote about Intel 320 SSD write performance before, but I was not satisfied with these results. Somewhat each time on Intel 320 SSD I was getting different write performance, so it made me looking into this with details. So &#8230; <a href="http://www.ssdperformanceblog.com/2011/09/intel-320-ssd-write-performance-cont/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I wrote about <a href="http://www.ssdperformanceblog.com/2011/06/intel-320-ssd-random-write-performance/">Intel 320 SSD write performance before</a>, but I was not satisfied with these results.</p>
<p>Somewhat each time on Intel 320 SSD I was getting different write performance, so it made me looking into this with details.</p>
<p>So let&#8217;s run experiment as in previous post, this is sysbench fileio random write on different file size, from 10GiB to 140GiB with 10GiB step. I use <strong>ext4</strong> filesystem, and I perform filesystem format before increasing filesize. </p>
<p>The results are pretty much as in previous post, the throughput drops as we increase filesize:<br />
<a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/09/intel-320-1st.png"><img src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/09/intel-320-1st.png" alt="" title="intel-320-1st" width="600" height="400" class="aligncenter size-full wp-image-173" /></a></p>
<p>However, there is when interesting stuff begin. Now when we run the same iterations again, the result will look like:</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/09/intel-320-2nd.png"><img src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/09/intel-320-2nd.png" alt="" title="intel-320-2nd" width="600" height="400" class="aligncenter size-full wp-image-176" /></a> </p>
<p>As you see, second time the throughput is much worse, even on medium size files. Just after <strong>50GiB</strong> size, throughput gets below <strong>40MiB/sec</strong> And this is with the fact, that I perform <strong>filesystem format</strong> before each run.</p>
<p>This leads me to conclusion that write performance on Intel 320 SSD is decreasing in time, and actually it is quite <strong>unpredictable</strong> in each given point of time. Filesystem format does not help, and only <strong>secure erase</strong> procedure allows to return to initial state. There are commands for this procedure for reference.<br />
<code><br />
hdparm --user-master u --security-set-pass Eins /dev/sd$i<br />
hdparm --user-master u --security-erase Eins /dev/sd$i<br />
</code></p>
<p>Discussing this problem with engineers working with Intel 320 SSD drives I was advised to use artificial space provisioning, about 20%. Basically we create partition which takes only 80% of space.</p>
<p>So let&#8217;s try this. The experiment the same as previously, with difference that I use 120G partition, and max filesize is 110GiB.</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/09/intel-320-reservation.png"><img src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/09/intel-320-reservation.png" alt="" title="intel-320-reservation" width="600" height="400" class="aligncenter size-full wp-image-180" /></a></p>
<p>You can see that throughput in first iteration is basically the same as with full drive, but second iteration performs much better. Throughput never drops below <strong>40MiB/sec</strong>, and stays on about <strong>50MiB/sec</strong> level.</p>
<p>So, I think, this advise to use space provisioning is worth to consider if you want to  have some kind of protection and maintain throughput on some level.</p>
<p>Raw results and used scripts as always you can find on our <a href="https://code.launchpad.net/~vadim-tk/percona-benchmark-result/intel-320-write">Benchmarks Launchpad</a></p>
<p><!-- Place this tag where you want the +1 button to render --><br />
<g:plusone annotation="inline"></g:plusone></p>
<p><!-- Place this render call where appropriate --><br />
<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script></p>
<p><script type="text/javascript">mbgc='f5f5f5';ww='320';mbc='cecece';bbc='3F79D5';bmobc='3b71c6';bbgc='4889F0';bmoc='3F79D5';bfc='FFFFFF';bmofc='ffffff';tlc='cecece';tc='6a6a6a';nc='6a6a6a';bc='6a6a6a';l='y';fs='16';fsb='13';bw='100';ff='4';pc='4889F0';b='s'; pid='109242749016593233313';</script><script type="text/javascript" src="http://widgetsplus.com/google_plus_widget.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2011/09/intel-320-ssd-write-performance-cont/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Intel 320 SSD read performance</title>
		<link>http://www.ssdperformanceblog.com/2011/07/intel-320-ssd-read-performance/</link>
		<comments>http://www.ssdperformanceblog.com/2011/07/intel-320-ssd-read-performance/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 22:52:13 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[MLC]]></category>

		<guid isPermaLink="false">http://www.ssdperformanceblog.com/?p=121</guid>
		<description><![CDATA[While PCI-e Flash cards show great performance, I am often asked about alternatives, as price for PCI-e cards is still significant and not acceptable for small companies and startups. Intel 320 SSD appears to be a popular drive with a &#8230; <a href="http://www.ssdperformanceblog.com/2011/07/intel-320-ssd-read-performance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While PCI-e Flash cards show great performance, I am often asked about alternatives, as price for PCI-e cards is still significant and not acceptable for small companies and startups.</p>
<p>Intel 320 SSD appears to be a popular drive with a quite acceptable price.<br />
I wrote about <a href="http://www.ssdperformanceblog.com/2011/06/intel-320-ssd-random-write-performance/">write performance of these cards</a>, and now let&#8217;s take look on a random read workload.</p>
<p>I used a <a href="http://www.percona.com/docs/wiki/benchmark:hardware:cisco_ucs_c250">Cisco UCS C250</a> as base hardware, comparing in it:</p>
<ul>
<li>regular RAID10 over 8 SAS 2.5 disks</li>
<li>single Intel 320 SSD directly attached to a HighPoint RocketRAID 2300</li>
<li>two Intel 320 SSD in hardware RAID0 mode, attached to a LSI SAS9211-4i controller</li>
</ul>
<p>For simulating the workload I used sysbench&#8217;s fileio random reads. Scripts and raw results available on <a href="https://code.launchpad.net/~vadim-tk/percona-benchmark-result/Intel320SSD-reads">Launchpad</a>.</p>
<p>Let&#8217;s see throughput results:</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/07/intel-reads.png"><img class="aligncenter size-full wp-image-130" title="intel-reads" src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/07/intel-reads.png" alt="" width="550" height="480" /></a></p>
<table border="1">
<caption align="bottom">Throughput, MiB/sec (more is better)</caption>
<tbody>
<tr>
<th>threads</th>
<th>Intel 320</th>
<th>Intel 320 2 strip</th>
<th>RAID10</th>
<th>ratio Intel 320 / RAID10</th>
<th>ratio Intel 320 2 strip / RAID10</th>
</tr>
<tr>
<td align="right">1</td>
<td align="right">30.27</td>
<td align="right">31.18</td>
<td align="right">3.75</td>
<td align="right">8.07</td>
<td align="right">8.31</td>
</tr>
<tr>
<td align="right">2</td>
<td align="right">55.18</td>
<td align="right">60.49</td>
<td align="right">6.98</td>
<td align="right">7.91</td>
<td align="right">8.67</td>
</tr>
<tr>
<td align="right">4</td>
<td align="right">95.13</td>
<td align="right">112.85</td>
<td align="right">12.10</td>
<td align="right">7.86</td>
<td align="right">9.33</td>
</tr>
<tr>
<td align="right">8</td>
<td align="right">143.58</td>
<td align="right">191.64</td>
<td align="right">19.05</td>
<td align="right">7.54</td>
<td align="right">10.06</td>
</tr>
<tr>
<td align="right">16</td>
<td align="right">174.75</td>
<td align="right">277.70</td>
<td align="right">26.70</td>
<td align="right">6.54</td>
<td align="right">10.40</td>
</tr>
<tr>
<td align="right">32</td>
<td align="right">174.60</td>
<td align="right">351.84</td>
<td align="right">32.90</td>
<td align="right">5.31</td>
<td align="right">10.69</td>
</tr>
</tbody>
</table>
<p>And response times:<br />
<a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/07/intel-latency.png"><img class="aligncenter size-full wp-image-135" title="intel-latency" src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/07/intel-latency.png" alt="" width="550" height="480" /></a></p>
<table border="1">
<caption align="bottom">95% response time, ms (less is better)</caption>
<tbody>
<tr>
<th>threads</th>
<th>Intel 320 SSD</th>
<th>Intel 320 SSD strip</th>
<th>RAID</th>
<th>ratio RAID/Intel 320</th>
<th>ratio RAID/Intel 320 strip</th>
</tr>
<tr>
<td align="right">1</td>
<td align="right">0.53</td>
<td align="right">0.56</td>
<td align="right">6.13</td>
<td align="right">11.57</td>
<td align="right">10.95</td>
</tr>
<tr>
<td align="right">2</td>
<td align="right">0.72</td>
<td align="right">0.59</td>
<td align="right">7.27</td>
<td align="right">10.10</td>
<td align="right">12.32</td>
</tr>
<tr>
<td align="right">4</td>
<td align="right">0.89</td>
<td align="right">0.74</td>
<td align="right">10.07</td>
<td align="right">11.31</td>
<td align="right">13.61</td>
</tr>
<tr>
<td align="right">8</td>
<td align="right">1.24</td>
<td align="right">0.95</td>
<td align="right">15.63</td>
<td align="right">12.60</td>
<td align="right">16.45</td>
</tr>
<tr>
<td align="right">16</td>
<td align="right">1.76</td>
<td align="right">1.38</td>
<td align="right">25.52</td>
<td align="right">14.50</td>
<td align="right">18.49</td>
</tr>
<tr>
<td align="right">32</td>
<td align="right">3.33</td>
<td align="right">2.15</td>
<td align="right">47.35</td>
<td align="right">14.22</td>
<td align="right">22.02</td>
</tr>
</tbody>
</table>
<p>As conclusion, this card provides great read performance. A single card provides 5-8x better throughput and 10-14x better response time. Striping helps to increase throughput in 8-10x and response time in 10-22x.</p>
<p>While there are questions about write performance (<a href="http://www.ssdperformanceblog.com/2011/06/intel-320-ssd-random-write-performance/">see my previous post</a>), I think this card is very suitable for read-intensive tasks, where you can expect significant improvements.</p>
<p><!-- Place this tag where you want the +1 button to render --><br />
<g:plusone></g:plusone></p>
<p><!--  Place this tag after the last plusone tag --><br />
<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script></p>
<p><a href="http://twitter.com/VadimTk" class="twitter-follow-button" data-show-count="false">Follow @VadimTk</a><br />
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2011/07/intel-320-ssd-read-performance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>FusionIO 320GB MLC random write performance</title>
		<link>http://www.ssdperformanceblog.com/2011/06/fusionio-320gb-mlc-random-write-performance/</link>
		<comments>http://www.ssdperformanceblog.com/2011/06/fusionio-320gb-mlc-random-write-performance/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 15:29:10 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[MLC]]></category>
		<category><![CDATA[ssd]]></category>

		<guid isPermaLink="false">http://ssdperformanceblog.dev.percona.com/?p=103</guid>
		<description><![CDATA[I was advised that new drivers and new firmware for FusionIO cards improve performance and stability and it is recommended to review results I’ve got about year ago. Using the same methodology and the same box as for Intel 320 &#8230; <a href="http://www.ssdperformanceblog.com/2011/06/fusionio-320gb-mlc-random-write-performance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>I was advised that new drivers and new firmware for FusionIO cards improve performance and stability and it is recommended to review <a href="http://www.ssdperformanceblog.com/2010/07/free-space-and-write-performance/">results I’ve got about year ago</a>.</p>
<p>Using the same methodology and the same box as for <a href="http://www.ssdperformanceblog.com/2011/06/intel-320-ssd-random-write-performance/">Intel 320 SSD</a>, I run random writes benchmarks for FusionIO 320GB MLC card (I do not have the card I had year ago on hands).</p>
<p>Information about system, FusionIO drives are raw results are on <a href="http://bazaar.launchpad.net/%7Evadim-tk/percona-benchmark-result/FusionIO-320GB-MLC/files/head:/space-write-performance/">Benchmarks Launchad</a></p>
<p>First graph is to show timeline for different filesizes. Benchmark starts just after formatting card and filesystem and runs around 1 hour with measuring throughput each 10 sec.</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/time-size.png"><img title="time-size" src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/time-size.png" alt="" width="540" height="558" /></a></p>
<p>Interesting to see the same pattern as for Intel 320 SSD: the throughput starts at max, then drops down and after some peak stabilizes.</p>
<p>1500 sec seems enough to get stable line for all filesizes. If we take slice of data after 1500 sec and build summary space-&gt;throughput graph, it looks like:</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/size-throughput.png"><img title="size-throughput" src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/size-throughput.png" alt="" width="540" height="558" /></a></p>
<p>So we still have decent declining line. The throughput drops from 500MiB/sec at peak to 110-120MiB/sec at full capacity.</p>
<p>And to have some fun with R/ggplot2 graphs, let’s build graph to compare FusionIO and Intel 320 SSD (with results from previous post)</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/intel-vs-fusion.png"><img title="intel-vs-fusion" src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/intel-vs-fusion.png" alt="" width="549" height="509" /></a></p>
<p><a href="http://twitter.com/VadimTk" class="twitter-follow-button" data-show-count="false">Follow @VadimTk</a><br />
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2011/06/fusionio-320gb-mlc-random-write-performance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Intel 320 SSD random write performance</title>
		<link>http://www.ssdperformanceblog.com/2011/06/intel-320-ssd-random-write-performance/</link>
		<comments>http://www.ssdperformanceblog.com/2011/06/intel-320-ssd-random-write-performance/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 15:22:52 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[ssd]]></category>

		<guid isPermaLink="false">http://ssdperformanceblog.dev.percona.com/?p=99</guid>
		<description><![CDATA[While I like performance provided by PCI-E cards like FusionIO or Virident tachIOn, I am often asked about SATA drives alternatives, as price of PCI-E cards often is barrier, especially for startups. There is wide range of SATA drives on &#8230; <a href="http://www.ssdperformanceblog.com/2011/06/intel-320-ssd-random-write-performance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>While I like performance provided by PCI-E cards like FusionIO or Virident tachIOn, I am often asked about SATA drives alternatives, as price of PCI-E cards often is barrier, especially for startups. There is wide range of SATA drives on market, and it is hard to pick one, but Intel SSD are probably one of most popular, and I’ve got pair of Intel 320 SSD 160GB to play with it.</p>
<p>Probably most interesting characteristic for SSD for me is <a href="http://www.ssdperformanceblog.com/2010/12/write-performance-on-virident-tachion-card/">Random Write throughput in correlation with file size</a> , as it is known that the write throughput declines when you use more space.</p>
<p>&nbsp;</p>
<p>In this post I will test (using sysbench fileio) single Intel 320 SSD card with different filesize ( from 10 to 140 GiB, with step 10GiB). Filesystem is XFS and IO blocksize is 16KiB.</p>
<p>I posted all scripts and results on <a href="http://bazaar.launchpad.net/%7Evadim-tk/percona-benchmark-result/intel-320-ssd/files/head:/">our Launchpad project</a> where you can find</p>
<ul>
<li><a href="http://bazaar.launchpad.net/%7Evadim-tk/percona-benchmark-result/intel-320-ssd/view/head:/size/run.sh">Script to run benchmark</a></li>
<li><a href="http://bazaar.launchpad.net/%7Evadim-tk/percona-benchmark-result/intel-320-ssd/view/head:/box.summary.txt">System summary</a></li>
<li><a href="http://bazaar.launchpad.net/%7Evadim-tk/percona-benchmark-result/intel-320-ssd/view/head:/intel.ssd.info">Information from Intel 320 SSD card</a></li>
<li><a href="http://bazaar.launchpad.net/%7Evadim-tk/percona-benchmark-result/intel-320-ssd/files/head:/size/">Raw results</a></li>
<li><a href="http://bazaar.launchpad.net/%7Evadim-tk/percona-benchmark-result/intel-320-ssd/view/head:/size/write-space.R">Helper R script used to build graphs</a></li>
</ul>
<p>I used next methodology for testing: format xfs, run 1 hour random write test with measuring throughput each 10 sec.</p>
<p>The results are bit tricky to analyze, as throughput performs in this way (for 100GiB filesize)</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/time-100gib.png"><img title="time-100gib" src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/time-100gib.png" alt="" width="512" height="280" /></a></p>
<p>You can see that just after format throughput starts with 80MiB/sec, then drops to 10MiB/sec and after about half of hour stabilizes on 30MiB/sec level.</p>
<p>We can build the same graph (time -&gt; throughput) for all filesizes we have:</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/time-sizes-2.png"><img title="time-sizes-2" src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/time-sizes-2.png" alt="" width="488" height="619" /></a></p>
<p>where you can see that throughput drops from 100 MiB/sec for 10GiB file to 15MiB/sec for 140GiB file.</p>
<p>For reference I added result from similar benchmark for RAID10 over 8 regular spinning SAS 15K disks, which is around 23MiB/sec.</p>
<p>From graph we see that all results are stabilized after 2500 sec, and if we get slice of data after 2500 sec, the summary graph ( size -&gt; throughput) looks like:</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/space-throughput-1.png"><img title="space-throughput-1" src="http://www.ssdperformanceblog.com/wp-content/uploads/2011/06/space-throughput-1.png" alt="" width="488" height="619" /></a></p>
<p>This graph allows to get idea what is throughput for given filesize much easier.</p>
<p>E.g. for 70GiB files, we have 40MiB/sec and for 120GiB file, it is 20MiB/sec.</p>
<p>Some conclusions from these results:</p>
<ul>
<li>Intel 320 SSD performance is affected by amount of used space. The more space used – the worse performance</li>
<li>Throughput may drop very intensively, e.g. from 10GiB to 20GiB it drops by 20%</li>
<li>When you run benchmark on your own, take into account time needed to get stabilized result. It may take over half of hour for some cases</li>
</ul>
<p>In final I want to give credit to <a href="http://www.r-project.org/">R projects</a> and <a href="http://had.co.nz/ggplot2/">ggplot2</a> which are very helpful for graphical analyzing of data.</p>
<p><a href="http://twitter.com/VadimTk" class="twitter-follow-button" data-show-count="false">Follow @VadimTk</a><br />
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2011/06/intel-320-ssd-random-write-performance/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>MySQL 5.5.8 and Percona Server on Fast Flash card (Virident tachIOn)</title>
		<link>http://www.ssdperformanceblog.com/2010/12/mysql-5-5-8-and-percona-server-on-fast-flash-card-virident-tachion/</link>
		<comments>http://www.ssdperformanceblog.com/2010/12/mysql-5-5-8-and-percona-server-on-fast-flash-card-virident-tachion/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 16:10:16 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[SLC]]></category>

		<guid isPermaLink="false">http://www.ssdperformanceblog.com/?p=86</guid>
		<description><![CDATA[Crossposted from MySQLPerformanceBlog. This is to follow up on my previous post and show the results for MySQL 5.5.8 and Percona Server on the fastest hardware I have in our lab: a Cisco UCS C250 server with 384GB of RAM, powered &#8230; <a href="http://www.ssdperformanceblog.com/2010/12/mysql-5-5-8-and-percona-server-on-fast-flash-card-virident-tachion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Crossposted from <a href="http://www.mysqlperformanceblog.com/2010/12/21/mysql-5-5-8-and-percona-server-on-fast-flash-card-virident-tachion/">MySQLPerformanceBlog</a>.</p>
<p>This is to follow up on my <a href="http://www.mysqlperformanceblog.com/2010/12/20/mysql-5-5-8-and-percona-server-being-adaptive/">previous post</a> and show the results for MySQL 5.5.8 and <a href="http://www.percona.com/software/percona-server/">Percona Server</a> on the fastest hardware I have in our lab: a <a href="http://www.percona.com/docs/wiki/benchmark:hardware:cisco_ucs_c250">Cisco UCS C250</a> server with 384GB of RAM, powered by a Virident tachIOn 400GB SLC card.</p>
<p>To see different I/O patterns, I used different <strong>innodb_buffer_pool_size</strong> settings: 13G, 52G, an 144G on a tpcc-mysql workload with 1000W (around 100GB of data). This combination of buffer pool sizes gives us different data/memory ratios (for 13G &#8211; an I/O intensive workload, for 52G &#8211; half of the data fits into the buffer pool, for 144G &#8211; the data all fits into memory). For the cases when the data fits into memory, it is especially important to have big transactional log files, as in these cases the main I/O pressure comes from checkpoint activity, and the smaller the log size, the more I/O per second InnoDB needs to perform.</p>
<p>So let me point out the optimizations I used for Percona Server:</p>
<ul>
<li><strong>innodb_log_file_size</strong>=4G (<strong>innodb_log_files_in_group</strong>=2)</li>
<li><strong>innodb_flush_neighbor_pages</strong>=0</li>
<li><strong>innodb_adaptive_checkpoint</strong>=keep_average</li>
<li><strong>innodb_read_ahead</strong>=none</li>
</ul>
<p>For MySQL 5.5.8, I used:</p>
<ul>
<li><strong>innodb_log_file_size</strong>=2000M (<strong>innodb_log_files_in_group</strong>=2), as the maximal available setting</li>
<li><strong>innodb_buffer_pool_instances</strong>=8 (for a 13GB buffer pool); 16 (for 52 and 144GB buffer pools), as it is seems in this configuration this setting provides the best throughput</li>
<li><strong>innodb_io_capacity</strong>=20000; a difference from the <a href="http://www.mysqlperformanceblog.com/2010/12/20/mysql-5-5-8-and-percona-server-being-adaptive/">FusionIO case</a>, it gives better results for MySQL 5.5.8.</li>
</ul>
<p>For both servers I used:</p>
<ul>
<li><strong>innodb_flush_log_at_trx_commit</strong>=2</li>
<li><strong>ibdata1</strong> and<strong> innodb_log_files</strong> located on separate RAID10 partitions, InnoDB datafiles on the Virident tachIOn 400G card</li>
</ul>
<p>The raw results, config, and script are in our <a href="http://www.percona.com/docs/wiki/benchmark:mysql558:cisco_ucs:start">Benchmarks Wiki</a>.<br />
Here are the graphs:</p>
<p><strong>13G innodb_buffer_pool_size:</strong></p>
<p><a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2010/12/1000wVirident_13G.png"><img class="aligncenter size-full wp-image-4297" title="1000wVirident_13G" src="http://www.mysqlperformanceblog.com/wp-content/uploads/2010/12/1000wVirident_13G.png" alt="" width="690" height="354" /></a></p>
<p>In this case, both servers show a straight line, and it seems having 8 <strong>innodb_buffer_pool_instances</strong> was helpful.</p>
<p><strong>52G innodb_buffer_pool_size:</strong><br />
<a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2010/12/1000wVirident_52G1.png"><img class="aligncenter size-full wp-image-4306" title="1000wVirident_52G" src="http://www.mysqlperformanceblog.com/wp-content/uploads/2010/12/1000wVirident_52G1.png" alt="" width="754" height="354" /></a></p>
<p><strong>144G innodb_buffer_pool_size:</strong><br />
<a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2010/12/1000wVirident_144G2.png"><img class="aligncenter size-full wp-image-4307" title="1000wVirident_144G" src="http://www.mysqlperformanceblog.com/wp-content/uploads/2010/12/1000wVirident_144G2.png" alt="" width="754" height="354" /></a></p>
<p>The final graph shows the difference between different settings of <strong>innodb_io_capacity</strong> for MySQL 5.5.8.</p>
<p><a href="http://www.mysqlperformanceblog.com/wp-content/uploads/2010/12/1000wVirident_52G_io_cap.png"><img class="aligncenter size-full wp-image-4310" title="1000wVirident_52G_io_cap" src="http://www.mysqlperformanceblog.com/wp-content/uploads/2010/12/1000wVirident_52G_io_cap.png" alt="" width="754" height="354" /></a></p>
<p>Small <strong>innodb_io_capacity</strong> values are really bad, while 20000 allows us to get a more stable line.</p>
<p>In summary, if we take the average NOTPM for the final 30 minutes of the runs (to avoid the warmup stage), we get the following results:</p>
<ul>
<li>13GB: MySQL 5.5.8 &#8211; <strong>23,513 </strong>NOTPM, Percona Server &#8211; <strong>30,436</strong> NOTPM, advantage: <strong>1.29x</strong></li>
<li>52GB: MySQL 5.5.8 &#8211; <strong>71,774</strong> NOTPM, Percona Server &#8211; <strong>88,792</strong> NOTPM, advantage: <strong>1.23x</strong></li>
<li>144GB: MySQL 5.5.8 &#8211; <strong>78,091</strong> NOTPM, Percona Server &#8211; <strong>109,631</strong> NOTPM, advantage: <strong>1.4x</strong></li>
</ul>
<p>This is actually the first case where I&#8217;ve seen NOTPM greater than 100,000 for a tpcc-mysql workload with 1000W.</p>
<p>The main factors that allow us to get a 1.4x improvement in Percona Server are:</p>
<ul>
<li>Big log files. Total size of logs are: <strong>innodb_log_file_size</strong>=8G</li>
<li>Disabling flushing of neighborhood pages: <strong>innodb_flush_neighbor_pages</strong>=0</li>
<li>New adaptive checkpointing algorithm <strong>innodb_adaptive_checkpoint</strong>=keep_average</li>
<li>Disabled read-ahead logic: <strong>innodb_read_ahead</strong>=none</li>
<li>Buffer pool scalability fixes (different from innodb_buffer_pool_instances)</li>
</ul>
<p>We recognize that hardware like the Cisco UCS C250 and the Virident tachIOn card may not be for the mass market yet, but<br />
it is a good choice for if you are looking for high MySQL performance, and we tune Percona Server to get the most from such hardware. Actually, from my benchmarks, I see that the Virident card is not fully loaded, and we may benefit from running two separate instances of MySQL on a single card. This is a topic for another round.</p>
<p>(Edited by: Fred Linhoss)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2010/12/mysql-5-5-8-and-percona-server-on-fast-flash-card-virident-tachion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Write performance on Virident tachIOn card</title>
		<link>http://www.ssdperformanceblog.com/2010/12/write-performance-on-virident-tachion-card/</link>
		<comments>http://www.ssdperformanceblog.com/2010/12/write-performance-on-virident-tachion-card/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 18:41:18 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[SLC]]></category>

		<guid isPermaLink="false">http://www.ssdperformanceblog.com/?p=70</guid>
		<description><![CDATA[One of the biggest problems with solid state drives is that write performance may drop significantly with decreasing free space. I wrote about this before (http://www.ssdperformanceblog.com/2010/07/free-space-and-write-performance/), using a FusionIO 320GB Duo card as the example. In that case, when space &#8230; <a href="http://www.ssdperformanceblog.com/2010/12/write-performance-on-virident-tachion-card/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of the biggest problems with solid state drives is that write performance may drop significantly with decreasing free space. I wrote about this before (<a href="http://www.ssdperformanceblog.com/2010/07/free-space-and-write-performance/">http://www.ssdperformanceblog.com/2010/07/free-space-and-write-performance/</a>), using  a<br />
FusionIO 320GB Duo card as the example. In that case, when space utilization increased from 100GB to 200GB, the write performance<br />
dropped 2.6 times.</p>
<p>In this regard, Virident claims that tachIOn cards provide <a href="http://www.virident.com/products.php">&#8220;Sustained, predictable random IOPS – Best in the Industry&#8221;</a>. Virident generously provided me model 400GB, and I ran the benchmark using the<br />
same methodology as in my experiment with FusionIO, which was stripped for performance. Also using my script, Virident made runs on tachIOn 200GB and 800GB model cards and shared numbers with me ( to be clear I can certify only numbers for 400GB card, but I do not have reasons to question the numbers for 200GB and 800GB, as they corresponding to my results).</p>
<p>The benchmarks was done on <a href="http://www.percona.com/docs/wiki/benchmark:hardware:cisco_ucs_c250">Cisco UCS C250</a>  box and raw results are on <a href="http://www.percona.com/docs/wiki/benchmark:virident:start">Benchmarks Wiki</a></p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2010/12/Virident-space-200.png"><img src="http://www.ssdperformanceblog.com/wp-content/uploads/2010/12/Virident-space-200.png" alt="" title="Virident-space-200" width="695" height="376" class="aligncenter size-full wp-image-75" /></a><br />
<a href="http://www.ssdperformanceblog.com/wp-content/uploads/2010/12/Virident-space-400.png"><img src="http://www.ssdperformanceblog.com/wp-content/uploads/2010/12/Virident-space-400.png" alt="" title="Virident-space-400" width="695" height="377" class="aligncenter size-full wp-image-76" /></a><br />
<a href="http://www.ssdperformanceblog.com/wp-content/uploads/2010/12/Virident-space-800.png"><img src="http://www.ssdperformanceblog.com/wp-content/uploads/2010/12/Virident-space-800.png" alt="" title="Virident-space-800" width="695" height="376" class="aligncenter size-full wp-image-77" /></a></p>
<p>Visually, the drop is not as drastic as it was in the case using FusionIO, but let&#8217;s get some numbers.<br />
I am going to take the performance numbers at the points where the available space of the card is 1/3, 1/2, and 2/3 filled, as well as at the point where the card is full. Then I will compute the ratio of each of those IOS numbers to the IOS at the 1/3 point.</p>
<p>**For the 400GB tachIOn card:**</p>
<table border=1>
<tr>
<td>size</td>
<td>Throughput, MiB/sec</td>
<td>ratio</td>
</tr>
<tr>
<td>130</td>
<td>959.17</td>
<td>  &#8212;  </td>
</tr>
<tr>
<td>200</td>
<td>849.58</td>
<td>1.13 </td>
</tr>
<tr>
<td>260</td>
<td>685.18</td>
<td>1.40 </td>
</tr>
<tr>
<td>360</td>
<td>417.33</td>
<td>2.29 </td>
</tr>
</table>
<p>That is, at the 2/3 point, the 400GB card is slower by 29% than at the 1/3 point, and at full capacity it is slower by 57%.</p>
<p>Observations from looking at the graph:</p>
<p>   * You can also see the card never goes below 400MB/sec, even when working at full capacity. This characteristic (i.e., high throughput at full capacity) is very important to know if you are looking to use an SSD card as a cache layer (say, with FlashCache), as, usually for caching, you will try to fill all available space.<br />
   * The ratio between the 1/3 capacity point and full capacity point is much smaller compared with FusionIO Duo (without additional spare capacity reservation).<br />
   * Also, looking at the graphs for Virident and comparing with the graphs for FusionIO, one might be tempted to say that Virident just has a lot of space reserved internally which is not exposed to the end user, and this is what they use to guarantee a high level of performance. I checked with Virident and they tell me that this is not the case. Actually from diagnostic info on Wiki page you can see: tachIOn0: 0&#215;8000000000 bytes (512 GB), which I assume total installed memory. Regardless, it is not a point to worry about. For pricing, Virident defines GB as the capacity available for end users. So, a competitive $/GB level is maintained, and it does not matter how much space is reserved internally. </p>
<p>Now it would be interesting to compare results with results for FusionIO. As cards have different capacity I made graph which shows<br />
throughput vs percentage of used capacity for both cards, FusionIO 320GB Duo SLC and Virident 400GB SLC</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2010/12/relative-performance.png"><img src="http://www.ssdperformanceblog.com/wp-content/uploads/2010/12/relative-performance.png" alt="" title="relative-performance" width="725" height="428" class="aligncenter size-full wp-image-79" /></a></p>
<table border=1>
<tr>
<td>Util %</td>
<td>Duo 320GB</td>
<td>	tachIOn 400GB</td>
<td>	advantage percent</td>
</tr>
<tr>
<td>20%	</td>
<td> 1,095 </td>
<td> 990 	</td>
<td> 90%  </td>
</tr>
<tr>
<td>30%	</td>
<td> 1,006 </td>
<td> 980 	</td>
<td> 97%  </td>
</tr>
<tr>
<td>40%	</td>
<td> 825 	</td>
<td> 964 	</td>
<td> 117% </td>
</tr>
<tr>
<td>50%	</td>
<td> 613	</td>
<td> 872	</td>
<td> 142% </td>
</tr>
<tr>
<td>60%	</td>
<td> 397	</td>
<td> 783	</td>
<td> 197% </td>
</tr>
<tr>
<td>70%	</td>
<td> 308	</td>
<td> 669	</td>
<td> 217% </td>
</tr>
<tr>
<td>80%	</td>
<td> 237	</td>
<td> 611	</td>
<td> 258% </td>
</tr>
<tr>
<td>90%	</td>
<td> 117	</td>
<td> 502	</td>
<td> 429% </td>
</tr>
<tr>
<td>100%	</td>
<td> 99	</td>
<td> 417	</td>
<td> 421% </td>
</tr>
</table>
<p>In conclusion:<br />
  * On single Virident card I see random write throughput close or over 1GB/sec in with low space usage and it is comparable with throughput I&#8217;ve got on stripped FusionIO card. I assume Virident maintain good level of parallelism internally.<br />
  * Virident card maintains very good throughput level in close to full capacity mode, and that means you do not need to worry ( or worry less) about space reservation or formatting card with less space. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2010/12/write-performance-on-virident-tachion-card/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Free space and write performance</title>
		<link>http://www.ssdperformanceblog.com/2010/07/free-space-and-write-performance/</link>
		<comments>http://www.ssdperformanceblog.com/2010/07/free-space-and-write-performance/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 03:44:15 +0000</pubDate>
		<dc:creator>Vadim Tkachenko</dc:creator>
				<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[MLC]]></category>

		<guid isPermaLink="false">http://www.ssdperformanceblog.com/?p=48</guid>
		<description><![CDATA[In previous post On Benchmarks on SSD, commenter touched another interesting point. Available free space affects write performance on SSD card significantly. The reason is still garbage collector, which operates more efficiently the more free space you have. Again, to &#8230; <a href="http://www.ssdperformanceblog.com/2010/07/free-space-and-write-performance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In previous post <a href="http://www.ssdperformanceblog.com/2010/07/on-benchmarks-on-ssd/">On Benchmarks on SSD</a>, commenter touched another interesting point. Available free space affects <strong>write</strong> performance on SSD card significantly. The reason is still garbage collector, which operates more efficiently the more free space you have. Again, to read mode on garbage collector and write problem you can check <a href="http://en.wikipedia.org/wiki/Write_amplification">Write amplification wiki page</a>.</p>
<p>To see how performance drops with decreasing free space, let&#8217;s run <code>sysbench fileio random write</code> benchmark with different file sizes. </p>
<p>For test I took FusionIO 320 GB SLC PCIe DUO™ ioDrive  card, with software stripping between two cards, and there if graph how throughput depends on available free space ( the bigger file &#8211; the less free space)</p>
<p><a href="http://www.ssdperformanceblog.com/wp-content/uploads/2010/07/fusion-space.png"><img src="http://www.ssdperformanceblog.com/wp-content/uploads/2010/07/fusion-space.png" alt="" title="fusion-space" width="558" height="396" class="aligncenter size-full wp-image-52" /></a></p>
<p>The system specification and used scripts you can see on <a href="http://www.percona.com/docs/wiki/benchmark:fusionio:space:start">Benchmark Wiki</a></p>
<p>On graph you can see two line ( yes, there are two lines, even they are almost identical).<br />
First line is result when FusionIO is formatted to use full capacity, and second line is for case when I use additional space reservation ( 25% in this case, that is 240GB available). There is no difference in this case, however additional <strong>over-provisioning</strong> protects you from overusing space, and keeps performance on corresponding level.</p>
<p>It is clear the maximal throughput strongly depends on available free space.<br />
With <strong>100GiB</strong> utilization we have <strong>933.60 MiB/sec</strong>,<br />
with <strong>150GiB</strong> (half of capacity) <strong>613.48 MiB/sec</strong> and<br />
with <strong>200GiB</strong> it drops to <strong>354.37 MiB/sec</strong>, which is 2.6x times less comparing with 100GiB.</p>
<p>So returning to question how to <a href="http://www.ssdperformanceblog.com/2010/07/on-benchmarks-on-ssd/">run proper benchmark</a>, the result significantly depends what percentage of space on card is used, the results for 100GiB file on 160 GB card, will be different from the results for 100GiB file on 320 GB card.</p>
<p>Beside free space, the performance also depends on garbage collector algorithm by itself, and the card from different manufactures will show different results. Some new coming cards make high performance in case with high space utilization as competitive advantage, and I am going to run the same analysis on different cards.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssdperformanceblog.com/2010/07/free-space-and-write-performance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

