IO Scalability With Solid-State Drives
In my current consulting project, I work with two colleagues Markus and Niko every day. Markus (the 2nd) is doing his part of work through his own company and he has told us some exact business numbers such as what is our real daily price for the customer company and how expensive it is to run the business. Without that information on mind, it is much easier to become an Average Joe and think that time in work does not cost anything. My experience tells that not enough developers or even management personnel know how much money their company burn in an hour.
In Finland, most of the leaders of larger technology companies have a technology degree. For an engineer, this means that it is okay to have a bit more thoughtful discussions about the company product with the boss. By 'thoughtful discussions' I mean not only the schedules and deadlines, but also the nature of the biggest technical problems that should be prioritized to the beginning of the project to minimize the risks. If you talk about these technical details to a traditional businessman manager, who think like "Time is money, two times faster process produces two times better profit", you will most probably leave him standing still with his mouth open.
New web services are often published before they are sufficiently stress tested due to the delivery requirements from management. Stress testing means a simulation where an application is tried to test under certain circumstances to proof that it can handle X amount of customers efficiently enough. A failing test should reveal the bottlenecks and possibly wrong solutions within the system architecture.
One possible bottleneck especially on the server side, is the database I/O. Web services such as Facebook are getting more and more registered users and for software developers that means a) more user data to databases such as text, images, videos, ... and b) more network bandwidth due to simultaneously logged in users. Scalability answers these problems and shows how the application can respond to the extending requirements cost-effectively.

Figure1. Intel X25-M G2 80 GB SSD (Thanks to Paul Choo from HSE for this image).
Last Saturday, I installed my first SSD (non-mechanical hard drive) from Intel. X25-Mainstream Generation 2 shows a great performance especially with small files and it is recommended as well by my fellow-countryman Linus Torvalds. I add here some graphics to compare the performance between X25-M and 2x 500 GB Seagate Barracuda 7200.12 in RAID0.

Figure 2. Benchmarking the X25-M. Fantastic access time and huge amount of IOPS.

Figure 3. Benchmarking Stripe RAID with two Seagate Barracuda 7200.12 500 GB.
As you can see, the difference is enormous. No wonder Linus was happy. I have already seen database architectures where a SSD is used as a huge cache in front older hard-drives. Microsoft provides a simulation tool called SQLIO, which is a disk workload generator that is designed to simulate some aspects of the I/O workload of Microsoft SQL Server. I tested the tool with both SSD and RAID0 configurations like this:
C:\Program Files (x86)\SQLIO>sqlIO -kR -t1 -s30 -dC -o32 -frandom -b8 -BH -LS testfile.dat
sqlio v1.5.SG
using system counter for latency timings, 3718984 counts per second
1 thread reading for 30 secs from file C:testfile.dat
using 8KB random IOs
enabling multiple I/Os per thread with 32 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 8 MB for file: C:testfile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 26787.39
MBs/sec: 209.27
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 1
Max_Latency(ms): 6
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 1 98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
C:\Program Files (x86)\SQLIO>
End results were pretty much similar to the findings from HD Tune Pro:

Solid-State Drives are definitely something to think about when designing the physical architecture for new database applications.

