Archive for October, 2009

The argument AGAINST virtualization

Sunday, October 25th, 2009

It seems a day doesn’t go by that I don’t see another article written on the virtues of virtualization. For those that don’t know what virtualization means it is technology that allows you to run multiple instances of an operating system on a single server or on top of a system of clustered servers. Virtualization has been around forever. This is the method that many mainframes used to deploy software, but virtualization became popular for desktops/workstations in1998/99 when VMware was first released.

While virtualization techniques have improved dramatically in the last 10 years (Think 3D support, para-virtualization for direct access to the hardware layer, etc) there is a fundamental problem with the whole concept of virtualization that no one ever talks about. That is the issue of the HUGE overhead that comes along with having multiple instances of an operating system running at the same time for software that doesn’t doesn’t NEED to be run on different machines. This is best illustrated by an example.

Lets assume there are 100 units of CPU processing power available on 2 servers that are configured identically (From a hardware perspective), and that 10% of the system resources are dedicated to servicing the operating system running on these servers. **10% is a very very low number in my opinion, but I will use it to be on the safe side of this argument.** Lets assume that a given user/customer consumes 2% or 2 units of system resources each.

Server A – 100 Units of CPU
10 Units used for OS (Windows, Linux, OSX, etc)
90 Units for users/customers –

Server A can accommodate 45 users.

Server B – 100 Units of CPU
10 Units used for OS (Windows, Linux, OSX, etc)
2 Units for users/customers

12 Units per customer or a little more than 8 users per server.

45 users vs 8 users… Hmm…. Now I have taken several liberties with regard to my assumptions. To be fair, there are numerous techniques used to speed up the process of virtual systems that I have not explained but I think you get my point. Here are some important reasons to USE virtualization. Listed below are several cases where virtualization may be the best or only option you have.

* If you need to run disparate instances of OSs on the same hardware IE – OSX and Windows on the same machine at the same time.
* Testing purposes – If you want to set up an alpha, beta, live setup on the same server.
* Security reasons – Memory & cpu are segregated pretty well on most virtualized environment (Disk I/O not so much – in fact I think its terrible on vmware, parallels, xen, etc). A lot of progress has been made in this area, but its not even close on a fully loaded machine in my opinion and based on extensive i/o testing.
* Need to migrate virtual machines on the fly – This is a great feature that many vm products support.
* If you OFTEN have a need to dynamically change resources for different OSes then a virtual product may be good for you as you can change cpu/memory/disk resources easily and in many cases make these changes on the fly.

Here are some of the reasons against using a virtualized product.

* Overhead of all the multiple OS installs to deal with before you even run a single program.
* You have to do security updates/maintenance for every OS install you have installed. Just thinking about 10 instances of Windows Anything running on a server is enough to make any botnet operator salivate.

Virtualization has its place. Its a super important piece of technology, but it is being applied in many areas where efficiency is scrapped for convenience. I revile the idea of convenience over efficiency for a long term strategy, yet many companies are doing just that. If you are a company deploying huge numbers of virtual machines to control resources CPU/MEMORY/DISK then you are just throwing money away. In an industry where every penny counts why give your competition any advantage?