Just before I commented on Karl Dohm's quixotic quest to prove the NetApp sales team were snake oil salesmen, I was talking about IOPS data density.
In that post, I threw out the following statement:
I'll also state that applications expect consistent performance rather than variable performance and perform worse as variability increases.
This is a very important and fundamental concept and underlies a lot of how I think about Flash and storage tiers will shake out. So I will spend a little bit of time on this point.
So let's begin at the beginning.
Within a company, which is a conglomeration of humans working to a single set of goals, consistency is very prized. Consistency makes long term planning possible. Variability makes long term planning impossible.
The software systems that exist to support human beings must, therefore, fit into a world where people expect consistency and predictability.
As a result, software solutions have been designed and architected around providing consistent behavior.
Over time, software architectures have evolved to the point where some layer of software, typically the application, expects all the resources it uses to have the same performance.
What do I mean?
Well an application that uses a database is designed around the assumption that regardless of what field in the database is accessed, there is some maximum time the database will take to respond. The application is then designed to work given that maximum. When the application gets better behavior from the database, the user of the application is pleasantly surprised, but at no time does the user of the application experience worse performance than the expected maximum time.
In practice what this means is that application authors expects the underlying software (database, operating system, file system, storage, server, network) to provide uniform resource access to the resources they manage. Vast amounts of innovation are invested in software to provide a sand-box that provides the illusion of performance uniformity.
From a narrow and simplistic storage system point-of-view, this implies that along with IOPS there is an expectation of uniform latency, which is why benchmarks like SPC and SFS measure latency. And just in case I forget to say this, providing uniformly good latency is not just a SAN thing, but is also a NAS thing too…
And why all this effort?
Because of the simplicity of programming model. To provide that simplified model, a significant amount of complexity and cost are introduced throughout the infrastructure, but as an industry we have chosen to make that tradeoff.
So how to provide uniform resource access?
At one extreme, Seymour Cray remarked You can't fake what you don't have, and designed a system to provide uniformly excellent performance. At the other extreme you have the web which promises nothing.
What's important to note is that between spending a lot of money, and doing nothing there are lot of well established in-between places, also known as caching, that make it possible to provide on average excellent latency at a fraction of the worst case cost.
In my next in this series, I'll consider, and this time I promise, Flash and the new storage tiers.

