The ‘Smart’ way to enhance VMware virtual machine’s performance

There are many I/O caching solutions that employ Solid State Drives (SSDs) to bridge the performance gap between the CPUs and the virtual infrastructure’s I/O sub-system. However Symantec Storage Foundation’s SmartIO along with Dynamic Multi-pathing’s SmartPool employs a ‘SMART’ way for achieving this.

In virtual environments, the virtual infrastructure administrator gets requests to provision virtual machines specifying the amount of physical resources – CPU power, memory size and storage space, that are required for the virtual machine to operate. The storage space requirement is typically met by assigning one or more virtual storage devices depending on the storage’s characteristics such as performance, flexibility etc.

Once the resources are provisioned, it’s left to the system administrator to choose how to assign these to various applications that they plan to run on the virtual machine and the virtual infrastructure administrator has no visibility into it. Similarly when the storage space is spread across multiple devices as well; the virtual infrastructure administrator has no visibility into how the applications in the virtual machines would use these storage devices, which require caching and which do not. Even within a single storage device, when a file system or database is created on it, there is no visibility from outside the virtual machine into how the device is partitioned among various file system or database objects. There is no distinction between the portions that store important data and portions that store less important stuff.

A SSD on the physical machine is a precious resource. Therefore a judicious use of it needs to be made to store only the important stuff. The visibility of the important stuff can be made only from within the virtual machine and not outside. Besides one caching solution does not fit all and needs to be tailored according to the application running in the virtual machine. Therefore it’s best to provision the SSD as a separate resource at the virtual machine’s disposal along with CPU, memory and storage.

Directly mapping an SSD to a particular virtual machine robs the advantage of sharing it with other virtual machines and also the ability to move the virtual machine across physical frames. Also creating a datastore on the SSD to share it among multiple virtual machines does not provide the required performance advantage.

 Therefore Veritas employs a ‘smart’ solution where in

  • The hypervisor would have the infrastructure to pool (SmartPool) and share the physical SSD device among multiple virtual machines without compromising on the performance while retaining the ability to freely move them from one physical frame to another carrying the caching resource along with them.
  • The virtual machine would perform intelligent I/O caching (SmartIO) by plugging into the filesystem, database and application usage characteristics and using the precious shared SSD resource only for the important data.

Besides the obvious advantage of being closer to the application, SmartIO caching solution provides other significant features that go a long way in ensuring better application performance

  • Specific portions of the application data set can be permanently pinned to the cache such as files/directories/regions representing database lookup tables, file-system meta-data indices etc. This works better than other caching techniques that depend on repeat block access patterns or cache every block and depend on eviction algorithm to free up space once the cache is full.
  • Since the SSD resource is available at system administrator’s disposal, they can manage it by further partitioning it and selectively enabling the I/O caching facility to only the required filesystem/files/regions. For e.g. it does not make sense to have caching enabled for database log files, temporary files, swap files, data already cached in the application or operating system’s page cache etc.
  • The caching solution operates at the virtual machine level with all types of storage - physicalRDM, virtualRDM, VMDK residing on VMFS datastore, VMDK residing on a NFS datastore but with the flexibility to distribute it based on the application being deployed and not at virtual device boundaries.
  • Unlike other solutions, the cache is kept warm across virtual machine suspend, reboots so that the application performance can be at peak right from the word go.
  • There is neither a limit on the number of SSD devices on the physical frame that can be used for I/O caching, SSD device capacity nor a limit on the SSD resource assigned to a virtual machine and number of virtual machines with which the SSD is shared
  • When the virtual machine with caching enabled migrates to another physical frame with no free caching resource (in SmartPool), the caching is automatically disabled temporarily until the caching resource becomes available. There is no user intervention required. The design principle has been that the virtual infrastructure administrator can perform the resource movement without requiring any co-ordination with the system administrators of individual virtual machines.
  • Unlike other caching solutions, Smart-IO uses even the memory resources diligently and the memory usage is kept independent of the cache size.

So you do see that lot on thought and years of experience of providing infrastructure for running enterprise class applications has gone into developing this solution. I am sure after reading this most of you would agree that this is the ‘Smart’ way to do I/O caching and achieve application performance gains.

Looking forward to your comments and experiences with this solution. Your feedback would help in further fine tuning the offering…