Does Your Data Wait in Line?
I think many people misunderstand write caching and how it plays a role in storage performance. I believe this is mostly due to competitors trying to compete with the success of NetApp Flash Cache.
First, A Flash Cache Detour:
I’ve been able to see the great results of Flash Cache myself at local customers. Below are some real charts from a customer POC that shows the benefits of Flash Cache in their environment. Yes, they went with NetApp after seeing the results.
The first chart represents a NetApp controller with real-world test I/O patterns generated by their application. Flash Cache was disabled on this controller until near the end of the run, where you can see the disk usage drop dramatically. Disk utilization prior to that point was nearly 50% on 2TB SATA drives. Network throughput represents the green line, while the blue line represents disk throughput.
The below chart is another controller with NetApp Flash Cache enabled throughout the test. You can see disk throughput is significantly less (0-4%) as over 90% of the I/O is being handled straight out of Flash Cache. Those are impressive results that are allowing this customer to get some serious distance out of these 2TB SATA drives.
With so many NetApp customers seeing the benefits of Flash Cache (over 1PB sold), it is easy to understand why our competitors are trying to differentiate themselves. One of the arguments that is brought up often is in regards to write caching. Our competitors frequently argue that we have somehow overlooked write performance in our architecture by only heavily caching reads.
Onto the Details:
We use write cache differently than our competitors. Our competitors store writes in cache to act as a buffer during I/O bursts. The write cache allows I/O acknowledgments to be returned to the host nearly instantaneously and the data written to disk at a later date. This works well, for a time, but eventually the laws of physics catch up. Eventually, the data stored in cache has to be written to disk and, therefore, the disk has to be fast enough to receive the amount of I/O and also agile enough to process the pattern of I/O (random vs. sequential) before the cache fills up. If the cache fills up, the true performance characteristics of the drives emerge to the clients in the form of latency and retries.
The following diagram represents this unfortunate, yet common, scenario with write caching. The different colored dashes represent I/O from various hosts each writing to their dedicated location on disk. Because traditional arrays cannot dynamically choose data placement, disk heads are forced to seek all over the platter to serve various client write requests. Slow writes mean full cache and full cache means client latency.
This type of caching only lets your data wait in line before getting to disk. If you compare it to an amusement park, large write caches mean bigger lines—not faster rides. NetApp’s approach is to keep the line short and focus on fast rides.
Instead of using a large write cache as an I/O buffer, we use a fraction of the amount of cache our competitors do. Buffering is not the primary purpose of our write cache, data analysis is. By storing new writes in cache, it gives our arrays the ability to analyze that data, compare it to the current disk structure and dynamically determine the most efficient place to put it on disk. See, in nearly all environments disks are easily able to handle the throughput requirements of application I/O. What drives lack is the agility to respond to different I/O patterns (sequential vs. random) with the same level of performance.
For demonstration, I configured a single 3 disk NetApp aggregate (2 parity, 1 data) to demonstrate how much random write I/O I could get out of a single 1TB 7200 SATA drive. I use a full random write workload of 4KB blocks on the disk and measure the maximum sustained I/O I could achieve. Even though a 1TB data disk would max out at around 80 IOPs or less with random I/O. NetApp can dynamically modify the random I/O pattern into a sequential workload—something a 1TB drive can handle far better! The result is over 4600 random write IOPs with an average response time of 0.4ms. The best news is that as drives become larger and their areal density increases, more and more sequential IOPs are possible. So, while our competitors will struggle more and more with the random I/O capabilities of large SATA disks, NetApp customers will benefit from the sequential I/O enhancements!
The below diagram is an example of how we can cache I/O for a short period of time, analyze the best placement on disk and then place that data as sequentially as possible on disk. This minimizes head seek time and allows us to get orders of magnitude more write IOPs out of SATA disk than our competitors can even get out of 15K RPM FC drives.
What Does This Mean To You:
As datacenters become extremely dense through virtualization technologies and consolidation practices, storage arrays will need to accommodate not just the additional throughput requirements of thousands of virtual host systems, but they will also need to respond to hundreds of differing I/O patterns. The scalability of NetApp Flash Cache along with the flexibility of data placement inherent in Data OnTap, allow NetApp customers to get far better performance and resource utilization with low-cost SATA disks than with more costly, competitive solutions.
So, which do you prefer: Long lines or fast rides?