Archive for the ‘Hyper-V’ Category

Comparing Performance of Virtualization Products

Nowadays there are several different virtualization products available on the market. All these products offer the same basic functionality and can be divided into two major categories: software based virtualization and hardware based virtualization.

The first category requires an Operating System like Windows or Linux to be installed on the machine first. The second category doesn’t require an Operating System to be installed, but in fact provides it’s own OS or a hypervisor. Since this hypervisor runs straight on top of the hardware it is often referred to as a bare metal virtualization solution.

As far as performance is concerned, a bare metal solution will without a doubt offer better performance than a software based virtualization solution. But how do these bare metal solution compare to each other? And is there a noticeable performance drop when using a virtualized workstation compared to a “normal” installation?

Just to satisfy my own curiosity, I decided to put this to the test.

Tested products and test environment

There are numerous bare metal virtualization products available on the market, but I limited the tests to several products I have experience with myself. The products I included in the tests are:

  • Microsoft Windows Hyper-V 2008 R2
  • VMWare ESXi 4.1
  • Citrix Xen Server 5.6
  • Citrix Xen Client 1.0

All tests were performed on the same workstation. For this purpose I have used a HP Compaq 6000 Pro SFF. The hardware specifications of this machine are:

  • Intel Core2 Duo CPU E8400 @ 3,00 GHz
  • 2048 Megabyte RAM
  • Intel Q45 / Q43 graphics chipset
  • Western Digital WD3200AAJS-60Z0A0 Hard Disk

For the tests I created a new Virtual Machine with a single CPU / core with 1024 MB of memory and a 64 GB hard disk. In the Virtual Machine I installed Windows 7 Professional (32-bit). After installing the Operating System I also installed the appropriate tools (Xen tools, Integration Services, VMWare tools, etc.) and installed all available updates for Windows 7 that were available through Windows Update.

For comparison I also installed Windows 7 straight onto the workstation. During the tests I limited the number of available CPUs to 1 and the amount of memory to 1024 MB.

To test the performance I used Passmark Performance Test and ran the standard test suite. Because none of the virtualization products supported 3D acceleration I excluded the 3D graphics test from the results. I also excluded the CD performance test, because these will not be very important in everyday situations.

For the final test result I repeated the standard test suite 5 times, dropped the highest and the lowest result and computed the average of the remaining results. These final results were compared to the result of the performance test of a normal Windows 7 installation. The latter received a score of 100%, the others were computed as a score relative to this.

Overall Score

For the overall score Passmark Performance Test calculates a score for each category:

  • CPU
  • 2D graphics
  • Memory
  • Disk


As one would expect the performance of the Virtual Machines is slightly worse than the performance of the physical machine. The difference between the Virtual Machines is almost negligible. The only exception is the 2D graphics score where VMWare ESXi score considerably worse compared to the other virtual machines.

Surprisingly, the disk score of most virtual machines is higher than the score of the physical machine. Also here VMWare scores considerably worse.

CPU score

The overall CPU score shows there is not much difference between the virtual machines, neither is there a large performance drop. The only considerable difference compared to the physical machine is during the Find Prime Numbers test.


2D graphics score

After installing Windows 7 in the virtual machines, only the Hyper-V virtual machine had a suitable driver for the display adapter installed. The others were using the standard VGA display driver. During the tests the physical machine performed exceptionally poor, compared to the virtual machines. This poor performance was caused by the Intel graphics driver that was installed. After installing the standard VGA driver, the performance was normal. Since most virtual machines were using the standard VGA driver anyway, using this driver also on the physical machine would provide better results for comparing the graphics performance.


In several tests (Image Filter, Windows Interface, Complex Vectors) Microsoft Hyper-V clearly outperforms its competitors. But in the Image Rendering test it performs the worst. The overall score of Hyper-V is almost equal to Xen Server, with Xen Client following an a short distance. VMWare ESXi is trailing in almost every 2D graphics test which results in the lowest overall 2D graphics performance.

Memory score

The memory test do not show much different between the physical machine and the virtual machines. Only on the Large RAM test the physical machine performs much better. Of the virtual machines Hyper-V performs much better than its rivals during this test. Because of this, Hyper-V achieves a slightly better overall memory score compared to the other virtualization products.


Disk score

During the disk tests almost all products, except VMWare ESXi, perform better than the physical machine. Especially the test scores of Xen Client are consistently high. Hyper-V does exceptionally well on the sequential write test, but scores considerably lower during the random seek + read/write test.

Because of the high score during the sequential write test, Hyper-V achieves the highest overall score, closely followed by Citrix Xen client.


So why are most virtual machines performing better during the disk tests than the physical machine? The only reason I can think of is caching. During the standard disk tests, Passmark Performance Test uses Windows API calls to read from and write to the disk. Because of the use of caching, the read/write operation seems to be finished as far as the OS is concerned, while the data has not been written physically. Because the data is still in the cache, the read operation will also finish much quicker.

This also seems to be supported by the fact that especially Hyper-V showed strange results during the tests. The tests are most likely designed in such a way that the sequential write test writes some data and the same data is read again during the read test. Because the data written is still in cache, the read operation can also retrieve the data from the cache. This resulted in scores that were about 100 times higher the the score of the physical machine. I have neglected these scores during the tests and included only “normal” test results.

Besides the standard disk tests, Passmark Performance Test also provides advanced tests. These tests provide a simulation of read/write patterns for workstations, file servers, database servers and web servers. It is also possible to use different methods of accessing the disk, besides the Windows API calls. Perhaps these advanced tests will show different results. Maybe I will do a similar comparison focusing on the advanced disk tests in the future, if time permits it.


My basic goal for this comparison was to compare the performance of different virtualization products compared to a physical machine. For all products I have used the out-of-the-box configuration settings.Most likely it is possible to tweak the configuration to achieve a better score.

It was also not my intention to compare all features of the different virtualization products and pass judgment on which of these products is the better one. I think this is something that is also a matter of personal taste. The remote console of Citrix Xen server seemed very sluggish to me, which made working in the virtual machine quite cumbersome. Both Hyper-V and VMWare use a similar remote console, but both did not suffer from this sluggish performance.

Citrix Xen client is a fairly new product, which is far from finished at the moment. Especially the full 3D graphics support it is supposed to deliver looks very promising. For now this 3D support is still limited to certain Intel graphics chipsets only, but other graphics chipsets and cards may be supported in the future.

But other products are also still being improved constantly and start offering additional features. Maybe this comparison should be repeated about the same time next year. It will be interesting to see if this will show major differences compared to this test.


Using a UPS with Hyper-V R2

Did you ever try to get a UPS up and running on a server using Microsoft Hyper-V? Well, I did. And it proofed to be a more difficult task than I had initially imagined…

There is quite some information about Hyper-V and UPS’s  that can be found on the internet, but most of this information is about connecting the UPS using a USB connection. In this scenario the server will act as a very big (and very heavy) laptop with the UPS being the battery. On a Windows 2008 server it would be possible to use the regular power options to shut down or hibernate the server when the battery (i.e. UPS) runs low.

Too bad this doesn’t apply to a Hyper-V R2 server (core) installation. On this platform it is possible to use all kinds of scripts that monitor the battery status using WMI (querying the WIN32_Battery class) and then shutting down the server when the battery is running low.

But in both cases only the server connected to the UPS will be shut down. What if there are multiple servers connected to the same UPS? This situation is quite common.

Of course one could write another script that shuts down several other servers before shutting down the Hyper-V server, but this would not be a very flexible solution.

Unfortunately, we did have another problem. Our UPS’s were not connected through USB, but through a serial cable. So all of the above doesn’t apply.

Before we migrated our physical servers to a Hyper-V based platform, we were using LanSafe to monitor our UPS’s. Despite a lot of people are always complaining that the UPS software itself is lousy, we quite liked the LanSafe software. This software did allow us to set up a LanSafe controller (server that was connected to and monitoring the UPS), several LanSafe members (servers that are shut down by the controller when the power fails) and and a LanSafe console (on a workstation) that allows the remote configuration of the LanSafe controllers. Wouldn’t it be neat to be able to use the LanSafe software again?

Downloading LanSafe

In order to download the LanSafe software, go to the Eaton website. Before you will be able to download the software, you will have to register first.

Eaton Website

After registering, you should be able to download the LanSafe software. Be sure to download all required versions. Since we want to install on a Hyper-V server, you have to download the 64-bit version. But if we also need to install the software for a member that is running on a 32-bit version of Windows, you will also need the 32-bit version.

Installing LanSafe

After downloading LanSafe we can install it on the Hyper-V server. But before we will start the installation, we will have to connect the UPS first. If the UPS is being detected as “New Hardware”, we can just ignore this by selecting “Don’t ask me again”. We can now run the installation program that we downloaded previously and go through the installation wizard:

  • Accept the license agreement.
  • Select “LanSafe Controller” to install the UPS monitoring component on the Hyper-V server.
  • Select “Serial Connection (COM port)” and have the software automatically detect the attached UPS.
  • Accept the detected serial port.
  • If required, select the correct UPS. LanSafe supports several different UPS models and different vendors. Usually the UPS will be detected correctly.
  • Enter the password for the LanSafe controller. This password is required when connecting remotely rom a different LanSafe member or console.
  • Accept the default Power Failure Settings (these settings can be configured later).
  • Enter a unique name for the controller.
  • Skip the configuration of the SMTP settings (this can be done at a later stage).>
  • Continue the installation wizard (installation folder and program group can be changed, if desired).

When the installation has finished unselect the option to start LanSafe !!! Before we can use LanSafe we still have some work to do.

Enabling the LanSafe GUI

The LanSafe GUI requires the presence of msvfw32.dll, but this DLL file is not present on a system running Hyper-V. You should be able to obtain a copy of this file from  the %WINDIR%\System32 folder on a computer running Windows Vista or Windows 7.

Now copy the DLL file into the %WINDIR%\SysWOW64 folder on the Hyper-V server. That’s it…

You should now be able to start LanSafe.exe which is located in the Bin subfolder of the installation location (usually C:\Program Files (x86)\Powerware\LanSafe\Bin).

LanSafe GUI

Configuring the firewall

As I mentioned before, it is quite common for a single UPS to supply power to multiple servers. In case of a power failure the controller should shut down the other servers first, before is will shut down itself. Therefor it must be possible for the controller and the member servers to communicate with each other. The problem is that the firewall blocks the ports that LanSafe requires for its communication. We need to enable these ports first.

The ports that LanSafe uses are UDP ports 3068, 3069 and 7015. To enable communication through port 3068, type the following commands in the command windows at the Hyper-V server:

netsh advfirewall firewall add rule name="LanSafe (UDP 3068)" protocol=udp localport=3068 dir=in action=allow

netsh advfirewall firewall set rule name="LanSafe (UDP 3068)" new enable=yes

Repeat the commands above for port 3069 and port 7015. When done, communication between the LanSafe controller and the LanSafe members / consoles will be possible.

Shutting down physical servers during power failure

When we would like the LanSafe controller to shut down other servers attached to the same UPS as the controller, we will need to install the LanSafe software on these servers as well. Depending on the type of Operating System on the server, we will either need to download the 32-bit or 64-bit version of the LanSafe software.

Run the appropriate installation package and go through the installation wizard:

  • Accept the license agreement.
  • Select to install a “LanSafe Member”.
  • Enter the name of the controller that should be managing this member.
  • Skip the configuration of the management settings. These settings can be configured later.
  • Select a destination folder and a program group.
  • When the installation is completed, LanSafe can be started.

After starting LanSafe it is required to enter the password of the controller. This is necessary to prevent unauthorized members to connect to the controller.

The shutdown timings for each member as well as the controller itself, can be configured through the Management Settings using the LanSafe GUI.

Shutting down the virtual servers on the Hyper-V server

Using virtual servers makes it very easy to shutdown a server, or even suspend a server. In fact, the latter is the default setting in Hyper-V. As soon as the physical Hyper-V server is shut down, all virtual server running on the Hyper-V server will be suspended.

Hyper-V VM Shutdown

If desired, it is also possible to automatically shut down all virtual servers. In that case one would have to select the bottom option in the Hyper-V management console.

UPS’s connected via USB or LAN

Although the information above is about using a serially attached UPS with Hyper-V, the LanSafe software also supports UPS’s connected via USB and UPS’s connected via the LAN using a network card inside the UPS. I have not been able to test these configurations myself. I know that the LanSafe software also contains drivers for USB connected UPS’s (you’ll have to extract these drivers from the installation program first). You will probably need to install these drivers on your Hyper-V server first, before attaching your UPS.

If you can confirm this from your own personal experience, then please leave me a comment.

Categories: Hyper-V, Virtualization Tags: ,