I had a complaint from a customer today that there new virtual server with lots of resources was too slow on copying files and could I take a look.
So I did! The virtual server was connected to a 1GB switch via two different network cables. One was configured in the Hyper-V virtualization software as available for the guest and one for the host. In the host I could copy a test file across the network from a file server at close to the expected speed for the network:
Copying the same file from inside a virtual machine on that same host was considerably slower:
Notice the speeds. 85.3 MB/s compared to 355 KB/s!!!
I tried a tracert to the same file server. From the host I got 1 <1 ms <1 ms <1 ms fileserver.domain.local[192.168.1.2] but from the guest I got 1 <200 ms <201 ms <38 ms fileserver.domain.local[192.168.1.2]. Every host to file server tracert had a latency in excess of what I expect of some of the internet!
So how to fix…
On the host I checked which physical network card was being used by the Hyper-V guest (Virtual Switch Manager in the Hyper-V tools) and found it was Broadcom NetXtreme Gigabit Network #4 in this case. So in the host I brought up the properties of that same network card (Network and Sharing Center > Change adapter settings > and hover over each NIC to see the hardware description).
Bring up the properties of this network card and click Configure to bring up the configuration of the network card hardware for this specific NIC.
Change to the Advanced tab and select Virtual Machine Queues. Change this to Disabled.
Click OK. The network card will reset and come back online in about 3 to 5 seconds. The guest machine will be offline for this time as well. If you are changing the network card that the host uses as well, you will be disconnected from the host for this time as well (though you will be warned about this in the Hyper-V management tools).
Results when I connected to the guest again:
Now this is half the speed of the host – and I did not find on this machine other network settings to improve this, so I guess this is the impact of using virtualization over physical machines.
Once you have installed Windows 7 RC and downloaded Microsoft Virtual PC you might have the need to run Microsoft Official Curriculum courseware virtual machines. And therein is a problem.
The virtual machines are built to use Virtual Server 2005, but that cannot install in Windows 7, so you cannot use the Lab Launcher. Though you can install the courseware drives, you will need to run the installer in compatibility mode or the VHD installer will not run.
Once you have the VHD files unzipped you need to configure Microsoft Virtual PC to load them up. This though is a problem if you are not located in the same timezone as the creators of the base disks (PST timezone).
The steps to create a virtual machine when you are in a different timezone are:
- Start the virtual machine wizard and make a note of the location value. You will need to modify files in this location later on
- Set memory and untick the network connections option
- Browse to the exiting hard disks folder. Enable undo disks at this time as well
- If you are in a different timezone you will get the following cryptic error
- Click OK and modify the file used to point to either any of the “allfiles” disks (as these are not differencing disks) or create your own empty vhd for the time being
- Complete the creation steps and then bring up the settings of the new virtual machine (with the wrong disk attached)
- Modify the network settings to Internal Network and add any additional disks needed (this will be described in the full setup guide for the course) and close the settings dialog.
- Browse to the folder that contains the actual settings file (the vmc file). This folder is the location value from step 1 (defaults to C:\Users\username\AppData\Local\Microsoft\Windows Virtual PC\Virtual Machines).
- Open the vmc file in Notepad (or an XML editor) and change the settings to that which you require. These changes are for disks. Look for ide_controller 0 and ide_controller 1 (if present) and change the name of the vhd file to the correct disk name.
- Modify the time sync. settings as per disabling-time-synchronization-under-virtual-pc-2007. The virtual machines from Microsoft for training purposes have a grace period and if you bring them up with the current date/time on them (which Virtual PC 2007 does automatically) then you will need to activate them.
- Save the file when your changes are completed.
- Start the virtual machine. You will see this error message – Inconsistency in virtual hard disk time stamp detected – The virtual hard disk’s parent appears to have been modified without using the differencing virtual hard disk. Modifying the parent virtual hard disk may result in data corruption. It is strongly recommended that you mark the parent virtual hard disk as read-only to prevent this in the future. If you recently changed timezones on your host operating system, you can safely continue using this virtual hard disk.
- This can occur for a number of reasons, but if the reason is timestamps then click OK. DO NOT click the option not to show the message again, or you will not be able to get past this error without modifying the options.xml file in C:\Users\username\AppData\Local\Microsoft\Windows Virtual PC.
The virtual PC will start, and will prompt you about updates to the integration components, but that is only a minor , so that can be ignored when you are presented with that error, unless you want the error to never show again per machine, in which case install (at your own risk and numerous reboots) the integration components.
Finally, you might need to reactivate some machines, as the hardware will have changed.
With the correct BIOS settings enabled on a E8500 processor (see http://processorfinder.intel.com/ for the processors that support EM64T, Virtualisation and Execute Disable which is needed for Hyper-V to work), and with them and the Trusted Execution property set to On in the BIOS I got the following errors with Hyper-V RC1 on Windows 2008 Enterprise Server RTM (running Server Core):
- Hyper-V launch failed; Either VMX not present or not enabled in BIOS.
- Hyper-V launch failed; at least one of the processors in the system does not appear to provide a virtualization platform supported by Hyper-V.
Fixed this by rebooting and pressing F2 to enter the BIOS and disabling the following settings
- Security > Execute Disable (set to Off)
- Performance > Virtualization (set to Off)
- Performance > VT for Direct I/O Access (set to Off)
- Performance > Trusted Execution (set to Off)
Press Esc and save settings. When the server reboots do a hard power off. Power on, and then in the BIOS again ensure that the following is set:
- Security > Execute Disable (set to On)
- Performance > Virtualization (set to On)
- Performance > VT for Direct I/O Access (set to On)
- Performance > Trusted Execution (set to Off)
Press Esc and save settings. Hard power off again once the server reboots. Turn power on and let computer boot normally.
At this point I got an Hyper-V error in that the entries in the event log above did not appear anymore, but were replaced by an error indicating that Hyper-V was not installed.
So I removed Hyper-V by running:
- ocsetup Microsoft-Hyper-V /uninstall
Reinstall Hyper-V by downloading the latest build and install it using:
- wusa <filename_of_download.msu>
or if you have the latest build already installed, then reinstall using:
- ocsetup Microsoft-Hyper-V
When I have started too many virtual machines in Microsoft Virtual Server 2005 I find that the administration application (http://server/virtualserver/VSWebApp.exe) stops working.
To get it to restart, change the authentication settings on the IIS virtual directory to something other than what you have already (but not anonomyous). For example if it is Basic and Integrated set it to Basic only.
Open the admin page again and you will be prompted for authentication and it will now work.
I am running Microsoft Virtual Server 2005 and every 10 seconds or so I get a pause in the mouse movement on the screen – very annoying.
Examining the performance logs of the server I see that the Virtual Server service “vsssrv” goes to 0% CPU utilisation when this happens – so something is interupting the service.
Stopping my anti-virus software solves the problem, but introduces another problem in that my computer is now unprotected, so I will post back here later my results on not have the AV software (McAfee Managed Anti-Virus) from scanning the filesystem where my virtual machines are installed and the vsssvc.exe application (“C:\Program Files\Microsoft Virtual Server” folder).
As I do not have any spare PC hardware I decided to install a copy of Windows Vista (Beta 1) on virtualization software. I have a choice of both VMWare Workstation 5.0 and Microsoft Virtual PC.
And the winner is – Microsoft Virtual PC
The reason is simple – I can see what I am doing and what is happening with Virtual PC as it runs with a decent virtual graphics adapter. VMWare Workstation 5.0 runs at 4bit colour until after installation has completed and you install the VMWare tools (which installed fine) but compare that to Virtual PC and the experience is so different.