Virtualization
It is around 02:00 AM CST in the Twin Cities of Minneapolis and St. Paul in Minnesota. Woke up and decided to browse the web for a few minutes. One thing led to another and here I am finishing an entry that I started earlier this week.
Virtualization, as far as computer technology goes, is currently a hot but not a new topic. Virtualization was developed in the 1960’s by IBM to allow very expensive main frames to be shared by multiple users. The reason was simply based on cost. At the time, it took in the order of several minutes to a few hours to set up programs and associated data. Today, on all modern computers, we are able to invoke programs with the click of a mouse or by typing in a second or two a command on a console. Depending on the intended use of the computer, we are able to utilize our personal computers in bursts that may hit close to 100% while remaining most of the time almost idle 0% to 1%. On Windows you can see this by opening Windows Task Manager and selecting the Performance tab. As I am writing this blob using MS Word, I can see a few CPU utilization spikes per minute in the order of 3% to 5%. The rest of the time it is 0% to 1%. What a waste! Of course, when I am working developing software or using other more demanding applications than just a word processor, the CPU utilization may be at 100%. This frequently occurs when I am compiling a program or running tests on software that I am developing.
How could I possibly benefit from using virtualization? The answer at this point appears to be just to use technology for the sake of technology. But wait a second. I do run some applications that need a different operating system and have some applications that make use of some software that interferes with my network functionality when I use it. By default my machine boots on Windows 7 Professional, but I often have the need to run different flavors of the Linux operating system. As in the 1960’s, I could serialize my requirements by booting Windows to run Word and Visio while working on documentation. I would then close the applications and shutdown the operating system. I could then boot with Ubuntu Linux and do some software development. By switching back and forth I could meet my needs, but if I run virtualization software I could simultaneously be running Linux and Windows on my machine or properly speaking, on two (2) virtual machines. I could then switch from one to another with a click on the mouse. That makes sense!
A couple weeks ago I attended a one-day Microsoft seminar in a hotel in Bloomington, Minnesota. The location was easy to get to. The hotel is next to I-494 and France Avenue. Food and beverages were provided. The venue was as good as expected when attending a Microsoft sponsored event.
Overall I enjoyed and learned about Microsoft offerings for virtualization. The presenters had the sense not to trash competitor’s products. Overall the general consensus was that most offerings provide similar value and are priced somewhat different. Of course, if you are considering virtualization and your organization is a Microsoft shop, it does make sense to consider Microsoft offerings for virtualization. In general products from the same vendor tend to play well among each other.
For the most part, attendees appeared to be system administrators. Some showed various knowledge levels on the presented products. A few people pick up their belongings during the presentation and headed out. They did not seem interested with what was presented or the level and depth of the seminar. I stayed for the morning session and left before picking up lunch box. The presentations were fast paced and focused on product features and how simple (or complex) it is to get into and use virtualization.
During the first break, I approached one of the presenters and ask why should one use virtualization in the first place. Apparently this is not a typical question asked by the average attendee. I am relatively familiar with the concepts and use VM VirtualBox for work and research. For my simple needs any virtualization tool is quite adequate. The presenter appeared to be startled at my questions so I continue to fill in by stating that if the applications of interest run on Windows why should I use virtualization at all. The answer was quite unexpected. It went something like not all Windows products play well with each other. For example, if you are using SQL Server you probably do not want to have in the same machine Exchange because those products do not play well with each other. My initial comments were that virtualization is a way to hide limitations and issues with Microsoft products. At that point the presenter kind of gave me a nod with his head like if he had successfully answered my question and moved on to listen to a different question specific to a virtualization products from Microsoft. It was obvious to me that virtualization as used by most system administrators and for what I saw and learned during the presentation, is just a technology pushed by Microsoft to technicians and system administrators that do not appear to understand the concepts and reasons why one would virtualize.
During the next segments it became obvious the overhead incurred by virtualizing a machine and the additional issues that are present when different machines have different and variable loads. Memory assigned to a virtual machine can cause it to start paging / swapping even though there might be additional free physical memory in the host computer.
In general, hardware is optimized for use by a computer system. When an array of virtual machines, each with different requirements are hosted on a computer, the performance of the processors / cores / memory caches are affected. It is true that hardware instructions have been added to the repertoire of processors to help with virtualization, but they work fine when a single virtual machine is used. The only valid justification for virtualization is to run disparate operating systems on a single computer. This reduces the amount of space and energy when compared with discrete computers needed to run disparate operating systems.
When you get a change, open Task Manager on your Windows computer, and without running any applications, take a look at the CPU utilization. Make sure to show kernel times. Depending on the system and network connections, one may see from around 1% to 5% CPU utilization. What you see is the operating system overhead. Utilization grows as applications run. The additional overhead is due to operating system tasks that are periodically performed. Notwithstanding the additional overhead when the system gets some basic load, if ten (10) machines are virtualized on a computer, then each virtual machine will be using 1% to 5% of CPU when idle. If one takes the sum, the hosting hardware will be using about 10% to 50% of the CPU resources supporting idle operating system tasks. It does not take much to figure out that having compatible applications / servers running on their own sand boxes just to make use of virtualization does not make sense at all. The software applications / server running directly on a single instance of the OS would have available a considerable amount of resources that are wasted by duplicating OS tasks on each instance of a virtual machine.
By the way, stop for a second and take a look under the CPU Usage for Memory utilization in the Task Manager windows at the amount of memory that each virtual OS is using just by having it running idle. A Windows 7 system takes over 1 GB of RAM when idle. In the above example, ten (10) virtual machines will waste 10 to 15 GBs of RAM. Of course, who cares when most servers hosting virtual machines are configured with 128 or more GBs of random access memory.
Target is big in the Twin Cities area. The main example of a company that has ripped the benefits of Microsoft virtualization was what Target has done for their stores. The project to simplify operations and reduce cost was to replace seven (7) computers with two (2) each running seven (7) virtual machines. The contents of each virtual machine were not covered during the presentation. Of course, if different software packages requiring different flavors and versions of operating systems were required, then virtualization made sense. The two (2) physical machines are running a cluster so if one fails the other picks up the entire load. One has to assume that in the Target example, some virtual machines were running different operating systems (i.e., Linux, Windows) while others were running different Microsoft servers that do not play well when in the same machine.
In conclusion, the use of virtualization just for the sake of virtualization is a performance hindrance to the entire system. Poor architecture, design and implementation can be hidden to some extent with the use of virtualization, but this comes at the expense of powerful servers when the proper develo0ped software could run directly on a single non-virtual machine with considerably less resources.
One of the main reasons for the proliferation of virtual machines is that most technicians making IT decisions do not have the background or experience needed to evaluate technology and select it only when it provides a benefit to the organization. Also, you have vendors whose business thrive in making periodic changes and motivating system administrators to keep up with the latest technology just for the sake of it.
The Naïve American