Storage Caching and VDI
I recently had the chance to do some testing with PernixData’s
vSphere solution and it was very educational. It worked
great, doing exactly what it was supposed to do… and it also got me thinking
about the nature of storage caching.
For just about ever, caching has been the technique that
allows storage devices to provide the blazing performance that we all
demand. Monolithic SANs always have some
amount of cache on their controllers.
What exactly does that cache do?
As the name implies, it caches data.
On those SANs, we would typically assign some amount of read cache and
some amount of write cache (I’ve typically biased my vSphere storage devices
heavily towards write cache, but opinions vary). When a write request comes in, it is very
quickly written to that cache and the acknowledgement is sent to the device that
is performing the write. The SAN’s job
is then to destage the data from the cache onto the disks for long term
storage, which only happens as fast as those disks can write data.
The write cache is like an IOPS loan from the disk
system. You can perform 10,000 write
operations in one second, even though the disks are only capable of 2,500 write
operations per second. That means that
the SAN is going to be destaging data from the cache for 4 seconds. You’ve effectively borrowed 3 additional
seconds worth of writes from the disk device; they must still occur and the
device will still be busily writing data for 3 seconds after the write
operation has seemingly completed.
This is great!
Storage access is generally spiky; some system needs to read or write a
bunch of data and it wants those operations completed ASAP. The cache allows this to happen, ‘completing’
that storage operation ASAP so that the system can then go about its business
analyzing that data or doing whatever it needs to do. Once that operation is completed, there’s
probably going to be some amount of “idle” time… time that the SAN can use to
get caught up and destage that data that’s sitting in its cache. Cache solutions don’t create IOPS out of thin
air, they allow you to use future IOPS now.
When we’re planning a VDI solution, we have awesome tools that
give us tons of information about the resource requirements of our target
desktops. One of the vital statistics is
IOPS. If we find that the average desktop
uses, on average, 20 IOPS while users are logged in, we can extrapolate out and
say that 1,000 such users will need a storage system that supports at least 20,000
IOPS. At this point, anyone who has
planned a VDI solution is shaking their head, as planning for the average is a
recipe for disaster.
If storage use in general is spiky, VDI storage use is like
a mountain range. A volcanic one. Things like powering on desktops, refreshing
desktops, even processing logins – they all consume very large amounts of IOPS…
and then they complete their task and basically sit idle. I think that this is where cache solutions
can have an immense impact on a VDI solution.
By having a pool of very low latency cache available to the hypervisor,
the environment can deal with those IOPS volcanoes, effectively regularizing
the IOPS spikes over time rather than requiring that an immense volume of storage
device IOPS be available and unused except for those large spike events.
Comments
Post a Comment
Sorry guys, I've been getting a lot of spam recently, so I've had to turn on comment moderation. I'll do my best to moderate them swiftly after they're submitted,