Virtualization in the Cloud

Virtualization in the Cloud

Does an application need to be virtualization-ready in order to be hosted effectively within cloud computing environments? What do I need to do to make my application virtualization-ready?

5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hosting arrangements in cloud computing come in different flavors.

Some providers lease hardware, allowing the customer to install and administrate any and all layers of the software stack. In this case, the customer can choose to use virtualization or not depending upon their needs. From this, it also follows that an application may or may not need to be virtualization ready; it merelyneeds tomatch the environment within which it will be run.

Other cloudprovidersprovide VM hosting services to their customers. In this case, the customer knows the type of environment that they will be runningin (which OS and the fact that virtualization is being used) but not the location or specifications of the underlying hardware. In this case, clearly the application needs to be virtualization-ready.

Yet other cloud providers provide highly abstracted programming environments for implementing applications. In this case,simply using theprogramming language, libraries, and basic paradigms provided will naturally lead to an application that can be hosted without any problem. Whether theprovider uses virtualization in the underlyingcompute environment will depend on the provider. (Generally'yes'.) But the details just don't matter to thecustomer who is programming the application within the environment.

David Ott

If you application is not virtualization ready because you rely on some specific hardware it is still possible to have it running in the cloud. Some service providers provision bare metal servers. You will be in total control of the hardware. However there will be a trade off. You will have to do everything from scratch (for e.g install OS, install and configure application). This will also mean it will take significant time before you are up and running.

Lets take it to the other extreme. Requesting IAAS (Infrastructure as a service) from the cloud. For example, you need some webservers, appservers and database servers. You request this infrastructure from your IT admin (in case of private cloud) or the service provider (public cloud). You will be up and running in matter of hours instead of days. You can decommission the infrastructure when you are done. You will be billed for whatever you use and based on the load you can dynamically adjust your hardware and software resources. The trade off would be, you will be limited to the flavors of services provided by the cloud.

For more information on getting up to speed on cloud, please see:

http://software.intel.com/en-us/articles/intel-cloud-builder/

To verify "virtual-readiness", you should test your application using the same target environment in which it will be deployed. This includes the same hypervisor and the same OS (VM) environment.

First, verify that all functionality works correctly. In general, most applications have no strong hardware dependencies and run fine in a VM environment. The biggest potential for problemscomes withapplications that make strong assumptions about system hardware and/or try to interact with itdirectly.

Second, you should compare application performance with performance on a bare metal configuration (i.e., no virtualization). Some loss in effeciency is natural due to the overhead of indirection in virtualized environments, but the loss should not be too severe. While it's hard to generalize, you might consider it a problem if your application is performing more than15 or 20 percent worse than native.(Note that many applications perform near native levels, so this is merely a ballpark worse case.)

David Ott

If you find that you application performs poorly, you might consider two issues to remedy:

1. VM Sizing

Part of virtualization readiness is understanding the resource requirements of your application for good performance. You should be aware of its memory requirements, for example, and the number of processors/processor cores needed for good performance. These considerations should be figured in when doingVM configuration.

2. Hardware Virtualization Features

Many Intel platforms support hardware virtualization features that go by the name of Intel VT (VT-x and VT-d, for example). You should examine whether these features are available and have been enabled in the BIOS. Your hypervisor may also have configuration requirements in order to use these features effectively. For more information on Intel VT, seehttp://www.intel.com/technology/virtualization/

David Ott

Leave a Comment

Please sign in to add a comment. Not a member? Join today