This page describes an unresolved (early 2014) performance issue that Diego is having with Intel 520 SSDs. Feedback and ideas are welcome: ongaro at cs stanford edu.
Update Tue, 25 Feb 2014 00:21:06 -0800: added "Effects of Write-Caching" section.
Summary
I'm optimizing a system in which synchronous disk writes are a key factor in performance. My current drives are too slow. I have a single Intel 520 drive that performs well enough (<1ms), but I need five drives. I bought five Intel 530 SSDs in hopes they would perform like the Intel 520, but instead they take 10ms to write a single byte to disk under various versions of Linux. Curiously, if I connect the Intel 530 drives over a USB-to-SATA adapter instead of using SATA directly, they're much faster (~200us per write). What's wrong?
...
So that raises two questions: why does the Intel 530 take so much longer in the driver/device, and why does it take even longer end-to-end?
Effects of Write-Caching
Tom Dale suggested I try to enable write-caching (https://twitter.com/aka_pugs/status/438148846476996608). Write-caching was already enabled on all the machines I tried, but disabling it had some interesting effects. I used hdparm -W 0 /dev/sdx to toggle write-caching.
host | disk | write caching off | write caching on |
---|---|---|---|
rcmonster | 520 | 100us per write | 440us per write |
rcmonster | 530 | 10.4ms per write | 10.1ms per write |
rc66 | M4 | 1.5ms per write | 2.7ms per write |
rc66 | 530 | 1.7ms per write | 9.8ms per write |
flygecko | X25-M | 1.1ms per write | 210us per write |
flygecko | 530 | 1.5ms per write | 9.5ms per write |
Each drive seems to behave differently. For the 530, write-caching seems to have no effect on rcmonster but improves latency for one-byte writes by a factor of six on rc66 and flygecko. This opens up a lot of questions...