What is a good target for capacity utilization?
by Hu Yoshida on Jun 13, 2012
The other day while talking to a customer about capacity efficiency he asked, what should be a reasonable utilization target? With thin provisioning, he can eliminate the waste of over allocation which used to cause his open systems’ capacity to be less than 20% utilized. But what is the target? Should he aim for 80% utilization like he does on mainframes?
This is a great question since it recognizes the differences between efficiency and utilization. Increasing capacity utilization does not automatically mean that your efficiency will be increased. In some cases, your efficiency may suffer. A major reason that open systems storage has been so underutilized is that it has been too disruptive to add incremental capacity from an operational perspective. It was also very disruptive for applications that had underestimated their capacity requirements and were caught in the middle of a peak cycle with no room to grow, no time to requisition new capacity and no maintenance window to format, configure and allocate new capacity. Over allocation of capacity has been an effective efficiency tool, especially when the capital cost of capacity is cheaper than the operational costs of adding new capacity. However, now that capacity costs are no longer eroding as they have in the past, and data center space and power have become more important, we need to take a closer look at capacity and efficiency.
Today technologies like dynamic provisioning and dynamic tiering can increase capacity utilization as well as capacity efficiency when properly implemented. With Hitachi Dynamic Provisioning we can automatically provision storage capacity as it is required from a pool of preformatted capacity. This capacity is also stripped across the width of the pool, which provides wide stripe performance across all the disk spindles in the pool. When additional capacity (disks) is added to the pool, the capacity is automatically restriped across the new width. An application can continue to over allocate to avoid running out of capacity, but what gets allocated are only the pages of capacity that he actually uses. Since his volumes are thin provisioned, he is no longer taking snapshots, backup and replication of allocated, unused space. All these functions become more efficient. With dynamic tiering we go a step further and move the less active pages to lower cost, internal or external, tiers of storage for cost efficiency.
As we now allocate only the storage that is utilized we can start to increase capacity utilization. But when capacity utilization is increased, it often leads to running more applications on the storage system. That means more eggs in one basket, so the availability of the storage system becomes more important. It also means more I/O, which puts more workload on storage resources like front and backend ports, cache and disk arrays. This load could also mean more randomness in the I/O stream and more contention between different workloads as more applications come online. If the storage system is not designed to scale up to handle this increase in workload the efficiency of the storage systems may suffer. Thin provisioning and dynamic tiering also add their own CPU and memory workload to the storage system. With more applications running online, it is likely that peak requirements will be much higher than they were before and more head room may be required to accommodate these peaks, especially if the applications think they have much more capacity than they actually have allocated.
So the amount of capacity utilization that you should target with thin provisioning and dynamic tiering will depend on the nature of your workload and the storage system. If your workload is more stable, predictable and running a few applications, you might be able to run your capacity utilization higher than if your workload was bursty, explosive and running a large number of applications. Two controller storage systems that have automatic load balancing between the two controller caches like Hitachi AMS and HUS storage systems can sustain more workload than the traditional active/passive two controller storage systems but even so you should not plan to run your utilizations as high as you could on a scale-up enterprise system with multiple processors and a global cache.
Enterprise storage systems like VSP can sustain much higher capacity utilization while maintaining storage efficiency, through the use of multiple processors, a global cache and higher port counts. If some applications require more resources during peak periods, VSP can increase their port priority or provide them with a larger cache partition to maintain their SLA. Since a separate pool of processors is used to implement functions like dynamic provisioning and dynamic tiering, the use of these features does not burden the processors that do the I/O processing.
So what is a good target for capacity utilization? It depends, and there is a lot to consider before you go as high as 80%. A capacity utilization of 50% to 60% is a conservative target which is considerably much higher than utilization of most open systems storage today. Mainframe systems can go to 80% since mainframes use enterprise storage and have better tools like DFSMS to manage provisioning and allocation. But be sure to consider your workload and the capabilities of your storage system before you commit to higher capacity utilization.