Once you prioritize which applications to virtualize, it's a good idea to test their performance. Application performance testing is the best way to learn how virtual applications will fare in your virtual infrastructure and what the end-user experience will be like.
Virtual application performance testing is exactly that -- testing. Some people consider it a science, but I think of it as an art form. You can get creative with testing to generate the best performance, but it won't exactly replicate how your virtual applications will perform in production.
Pre-testing factors: software and the users
Application performance testing is an essential part of any solid virtual application plan -- particularly for tier-one and mission-critical applications. By performing some quick load tests -- with some willing users enlisted as guinea pigs -- you can experiment with the hypervisor and the apps themselves to achieve the desired performance results.
But as you tinker with virtual applications, don't forget about user experience. If a virtualized application runs as well as it did on physical hardware (or better), you shouldn't worry too much about users' expectations.
In some cases, though, you might think twice about virtualizing an application if, as a result, it would no longer look the same on the users' end. For example, if an application is visually intensive and is not a true client-server app, but rather a simple Remote Desktop Protocol session-accessed application, a user's daily interactions with the application are most important. Virtualizing applications saves resources and space -- which is great for admins -- but it won't always benefit the user.
Finally, remember that not everyone has the luxury of a full-blown testing lab or the available users for application performance testing. Thankfully, some software manufacturers produce load-testing software from application vendors themselves to third-party providers.
Virtual application performance testing considerations
The following are some important factors to consider and questions to ask before you begin virtual application performance testing.
Host affinity. What are the application vendor requirements, if any? Can you run one application on the same host -- or even in the same Distributed Resource Scheduler or high-availability cluster -- as another application? Host affinity is a requirement in some infrastructures, and in others it just makes good sense.
Resource affinity. Again, is this a vendor requirement? It may be necessary to dedicate quantities of the core five resources -- CPU, RAM, disk, network interface cards and USB -- to ensure the best performance and support for virtual applications.
Shares and resource pools. In my experience, these resources don't enter into the equation until the end of the process, but you should consider resource quantities up front. Determine the amount of resources your guest machine and its virtual applications will use. Don't necessarily leave the hypervisor's resource allocation at the default amount. You can fine-tune shares throughout the application performance testing process to see what's best for each virtualized application.
Dedicated clusters. To improve performance and management, try forming a cluster with an isolated set of servers that host common or interacting applications.
Application stacking. With the ultrafast and capacity-heavy hosts that exist today, it's possible to stack two or three applications on one virtual server. But with bigger applications, I advise against it. Stacking can be a great thing, but it can also be a problem if virtual applications don't cooperate with one another.
Inter-application cooperation. Some applications just don't play well with others in the sandbox. We know that all too well from the physical server world. Some virtualized applications won't interact well with others on the same guest, host or cluster. And some just cannot be virtualized at all.
As you begin virtual application performance testing, create a baseline of servers and a load that's as similar as possible to what's on the physical server. It's not always possible to test virtual applications with 100% accuracy, but you should be able to get close. Also, keep in mind that some problems might emerge only after testing is done and you compare the data. If you think of application performance testing as an art, you'll find some creative ways to boost performance.
About the expert
Mike Nelson has been in IT for more than 20 years, with exposure to a very diverse field of technologies and solutions. He has devoted more than half a decade to virtualization and server-based computing. Currently, Nelson is a senior analyst at a Fortune 100 company in the U.S. Midwest.