RAID vs SSD vs FusionIO

In benchmarks passion (see my two previous posts) I managed to setup all three devices (RAID was on board; Intel X25-E SSD connected to HighPoint controller, FusionIO card) on our working horse Dell PowerEdge R900 (btw, to do that I had to switch from CentOS 5.2 to Ubuntu 8.10, as CentOS was not able to start with attached SSD card to HighPoint controller) and along with other tests I ran tpcc-like IO-bound workload on all devices.

For tests I used MySQL 5.4/InnoDB, and all other parameters are the same from previous posts (100W, buffer_pool 3GB). Filesystem – XFS mounted with nobarrier option.

Graphical results are here
RAID vs SSD vs FusionIO
and average results:

RAID10 – 7439.850 TPM
SSD – 10681.050 TPM
FusionIO – 17372.250 TPM

However what should be noted – both SSD and FusionIO are run in “non-durable” mode, that is you may lose some transactions in case of power outage (see my post http://itezer.com/blog/mysql-performance/161-SSD-XFS-LVM-fsync-write-cache-barrier-and-lost-transactions.html).

While results for SSD (note it is single device, in comparison to RAID 10 on 8 disks) and FusionIO are impressive, it is worth to consider price/performance parameter.

Here is my very rough calculation:
For RAID 10 we use 8 73GB SAS 2.5″ 15K RPM disks, with price 190$ per disks it gives us 1520$ for 292GB useful space, or ~ 5.2$ per GB.
For SSD I can get 32GB card for 390$, which is ~12.1$ per GB
For FusionIO I really not sure what is price (it was given as only for tests), but quick googling gave me 30$ per GB, so for 160GB card gives 4800$.

Now simple dividing TPM on price of IO system, we have
RAID 10 – 4.8 TPM / $
SSD – 27 TPM / $
FusionIO – 3.6 TPM / $

Please note that price of transaction is not the main criteria to consider, as total TCO for systems with SSD may be much cheaper (considering you need less servers, less space, less power). Also worth to consider that SSD is only 32GB space and to have the same space as FusionIO we need 4 cards (but it still will be cheaper than FusionIO), but it also may improve performance as such setup will be able to handle IO requests in parallel.


[Author: Vadim, via www.mysqlperformanceblog.com]

SSD, XFS, LVM, fsync, write cache, barrier and lost transactions

We finally managed to get Intel X25-E SSD drive into our lab. I attached it to our Dell PowerEdge R900. The story making it running is worth separate mentioning - along with Intel X25-E I got HighPoint 2300 controller and CentOS 5.2 just could not start with two RAID controllers (Perc/6i and HighPoint 2300). The problem was solved by installing Ubuntu 8.10 which is currently running all this system. Originally I wanted to publish some nice benchmarks where InnoDB on SSD outperforms RAID 10, but recently I faced issue which can make previous results inconsistent.

In short words using Intel SSD X25-E card with enabled write-cache (which is default and most performance mode) does not warranty storing all InnoDB transactions on permanent storage.
I am having some déjà vu here, as Peter was rolling this 5 years ago http://lkml.org/lkml/2004/3/17/188 regarding regular IDE disks, and I did not expect this question poping up again.

Long story is:
I started with puting XFS on SSD and running very primitive test with INSERT INTO fs VALUES(0) into auto-increment field into InnoDB table. InnoDB parameters are

  1. innodb_buffer_pool_size=3G
  2. innodb_data_file_path=ibdata1:10M:autoextend
  3. innodb_file_per_table=1
  4. innodb_log_buffer_size=8M
  5. innodb_log_files_in_group=2
  6. innodb_log_file_size=256M
  7. innodb_thread_concurrency=0
  8. innodb_flush_log_at_trx_commit=1
  9. innodb_flush_method             = O_DIRECT

Actually most interesting one are innodb_flush_log_at_trx_commit=1 and innodb_flush_method = O_DIRECT (I tried also default innodb_flush_method, with the same result), using innodb_flush_log_at_trx_commit=1 I expect to have all committed transactions even in case of system failure.



( Read more )

SandForce brings MLC to server flash drives

SAN JOSE, Calif. — SandForce aims to be the first company with a controller supporting multi-level cell flash chips for solid-state drives used in servers. By using MLC chips, the SF-1500 paves the way to lower cost and higher density drives servers makers want.

To date flash drives for servers have used single-level cell flash chips. That's because the endurance and reliability for MLC chips have generally not been up to the requirements of servers.

SandForce (Saratoga, Calif.) claims it has solved those issues with a set of new algorithms based on 20 patents pending. They increase flash chip endurance as much as eighty-fold by optimizing the number of write operations on the flash chips. The controllers also use improved Error Correction Code, wear-leveling and a form of RAID technology applied to the flash chips.

The algorithms also help provide equivalent read and write performance, something unusual for flash drives. The SF-1500 can handle sequential read or write operations at 250 Mbytes/second maximum on 128 Kbyte blocks. It performs random reads or writes at 30,000 I/O operations/second.

The controller sports a Mean Time Between Failure of 10 million hours and AES-128 encryption. It consumes 625 milliwatts on average and 1.5W max.

The company will also sell a version of its controller, the SF-1200, with lower performance and power consumption aimed at notebooks.

Either controller supports up to 16 flash chips of up to 32 Mbits in density. They can be used to build 1.8- or 2.5-inch drives of up to 512 Gbytes in density.

The chips use a 3 Gbit/s serial ATA interface and will be in production this fall. Versions with 6 Gbit/s SATA and SAS interfaces are in the works.

The company would not disclose details of its 90nm chip design except to say it uses a Tensilica-derived supervisory core and is made at TSMC.