Wednesday, June 01 2011 09:36 Written by VMGuru
Welcome to a slightly belated Part 3 of our elementary capacity management series. You can catch up on Part 1 and Part 2 respectively. For this post, I want to discuss the concept of Adjustments and Tuning in the environment. Adjustments, most simply stated, are shifts that impact the amount of capacity available; either positively or negatively. Tuning is a type of adjustment that is done to optimize how resources are being utilized in order to gain additional capacity. It's important to understand that in any type of computing environment there is almost never a completely linear growth trend. The environment and utilization trend is constantly changing. If we look at how Adjustments and Tuning can impact the environment resulting in these shifting trends, we can start to understand a much broader set of questions such as the following:
- If I add more capacity how many more objects can I add?
- If I add more capacity how will that impact when I will run out?
- If I lose capacity can I still run the remaining workload?
- If I lose capacity how many fewer objects can I add?
- If I lose capacity how will that impact when I will run out?
- If I optimize my existing capacity how many more objects can i add?
- If I optimize my existing capacity how will that impact when I will run out?
So, at this point, you may be asking yourself "What types of adjustments occur in my environment?" There are four primary adjustments that I'll discuss:
- Increase in Capacity
- Decrease in Capacity
- Increase in Utilization
- Decrease in Utilization
Increase in Capacity
Sticking to the elementary theme and our fictional apple picking business, let's assume that based on forecasting and where we last left things in Part 2, we determined that the crates we were using to carry our apples just weren't enough to sustain further growth. Let's assume we ordered a new crate, and instead of holding 6 apples, we can now hold 8, as illustrated in the following diagram.
If we do some basic math (Used/Capacity), we can highlight the overall utilization of our crate week over week. You can see that once we add the larger crate, our overall utilization decreases even though the number of objects we are holding has increased. Based on the above diagram we can also answer a subset of the initial questions that were posed:
- If I add more capacity how many more objects can I add? - 2 More Objects
- If I add more capacity how will that impact when I will run out? - 2 Additional Weeks
Decrease in Capacity
Instead of an increase in capacity, let's look at a situation that introduces significantly more risk into the equation... A decrease in capacity. Whenever we run the risk of losing capacity, whether intentionally or unintentionally, we need to first look at the utilization of the existing workload and determine if we can still sustain our business. Many people build out their virtual environments in what I call an "N+1" configuration, meaning they always build out the environment to plan for at least one host failure. This is not a bad practice. Let's take a look at our apple business again through the following diagram.
Let's assume that business has been booming and I now have 3 guys out in the field picking apples. I want to optimize the number of apples I get on a daily basis, but as a business owner, there is nothing I hate more than wasting apples and having to leave them behind for the worms. If we take a look at the top row of the above diagram, we can see that I have 3 guys in the field, and each is returning 4 apples. If one of the crates were to break on the way back to the barn, the remaining 2 crates could still support the remaining apples with the space they have available in their crates.
If we take a look at the bottom row of the above diagram, we can see that one of my guys picked 5 apples and each of the others picked 4. If one of the crates were to break, there is no room available for the remaining apples, and they will be forced to leave one apple behind, which is likely to make me angry. Now if these were production virtual machines and not simple apples, it means that I won't be able to provide service to my business without some form of performance impact.
Increase in Utilization
An increase in a utilization trend can be introduced for several reasons. An acquisition of a company may increase the number of systems need to be deployed or the end of a quarter could trigger significantly more processing within an environment for financial systems. Either way, we see a medium to long term increase in how our resources are being utilized.
Using the diagram above, let's assume I'm well on my way to becoming an Apple mogul. The available storage that I have in my warehouse continues to close in on 100% capacity month after month. In October, we hit an increase in production due to the fact that more apples are becoming ripe for the picking. This essentially doubles my production and starts to fill up my warehouse even faster. If I forecast this out further, I can assume that unless I find more storage space, I'm going to run out of room around January. I need to be able to see and understand this shift in utilization in order to successfully sustain my business.
Decrease in Utilization
When we tune or optimize our environment, the ultimate goal is to decrease our utilization so we can get more out of the existing resources that we have. I don't really have a solid apple picking analogy for this one. Instead I'll give a real-world virtualization scenario.
When going through the process of tuning, it's important to look at all resources across the board to ensure you aren't getting yourself into a situation that could cause significant performance degradation. Cramming 45 VMs on a box because you have available CPU, Memory and Disk is only useful if you don't ramp up %Ready to 15% or introduce disk latency of 100ms. If you aren't linking your optimization or tuning to performance management and clear visibility into resultant utilization, you'd better make sure you're treading lightly.
The most important take away here is that your total capacity isn't just a measure of how many resources you have available, but also a measure of the limitations that can cause unacceptable performance due to adding more objects. This is less important in development environments, but absolutely critical when looking at production workloads.
Adjustments and tuning play a major role in how your environment is utilized and the rate in which it is consumed. While it's important to understand these shifts and ensure you can continue to service your business, the goal is to do so with the best performance possible. Check back here soon when we dig into the ancient concept of resource scheduling!