Whenever we have to design a new SharePoint farm, we also talk about virtualization. Green IT and efficiency suggest that running different virtual machines within one physical box is a good thing today. Additionally we can encapsulate different services within single machines. All we ever wanted before we know anything about virtualization. We always learnt not to run different services within on machine, because they can handicap each other. Using virtualization, we are able to configure one machine for each service we need. Buying a physical machine with lot of processors and lot of RAM, attached to a SAN in the background is even cheaper than buying a physical machine for each service we need. And we can benefit from mechanisms like snapshots, when we need to do any configuration changes. Today we normally do not buy our machines in the data center. Normally we are leasing the machines for 3 – 5 years. When we need to replace a virtualization host, it’s very easy to shift the virtual machines to a new host. From the operating perspective that’s an optimal option.

But what should we do, when we have to solve performance problems? We are running in a Windows environment, and Microsoft Windows has options to monitor the performance. The Performance Monitor has different counter to supervise processor usage, memory usage and I/O. But when we are running in a virtual machine, we have to keep in mind that we are monitoring virtual components. We never have a deeper look on the physical components, and that makes it more difficult to find the reason for any performance problem. That’s why in earlier days we recommended not to run different services on one physical machine. When looking for the performance on this machine, any service running on this box could be the reason for any performance problem. The same we have today when we are looking for any performance issue in the virtualized world. Any virtual machine on the host could be the reason for performance problems.

What are the options to solve this problem? Actually I think, a good way could be, to have enough hosts, where we could place our virtual machines. Whenever any performance problem occurs, we can move the virtual machine to a free host, just to have the option to monitor the performance without any effects. If we are using just one SAN in the background, this would ever be a problem. When there are not enough hosts, we just have the option to use the monitoring tools we have, to find the reasons for our performance problems.

Conclusion: From the performance perspective, virtualization is not the best way to run our data center. Using physical machines with one service on each machine lets us use the performance monitoring tools the way, they are built for.