Erratic Pings to a HyperV Guest

If you have seen erratic pings in a HyperV Enviornment the chances are you are running a Server 2003 Operating system.
This may also manifest itself in a Slow GP Link being detected incorrectly and some policies not being applied at all.

This is due to the Operating system being configured for multiple virtual processors (VPs). All operating systems use some sort of clock timing mechanism, and frequently they rely on the Time Stamp Counter (TSC), which counts CPU ticks since system start. Each processor has its own TSC, and the TSC for each processor can be different because they’re not necessarily synchronized. What this ends up meaning is that if a VM is reading the TSC from multiple VPs, the date stamps may actually go backwards or be out of order.

C:Documents and SettingsAdministrator>ping 10.0.0.254

Pinging 10.0.0.254 with 32 bytes of data:

Reply from 10.0.0.254: bytes=32 time<1ms TTL=255
Reply from 10.0.0.254: bytes=32 time=34868ms TTL=255
Reply from 10.0.0.254: bytes=32 time<1ms TTL=255
Reply from 10.0.0.254: bytes=32 time=34868ms TTL=255

Ping statistics for 10.0.0.254:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 34868ms, Average = 17434ms

To resolve this you need to add the /usemptimer switch to the boot.ini configuration in order to sync the CPU’s.

Click Start, click Run, type notepad c:boot.ini, and then click OK.
In the Boot.ini file, a line that starts with “default” is located in the “[boot loader]” section.

This line specifies the location of the default operating system.
The line may appear as follows:
default=multi(0)disk(0)rdisk(0)partition(2)WINDOWS

In the “[operating systems]” section, locate the line for the operating system that corresponds to the “default” line.
For example, if the computer is running Microsoft Windows Server 2003, Enterprise x64 Edition, the line should resemble the following:
multi(0)disk(0)rdisk(0)partition(2)WINDOWS=”Windows Server 2003 Enterprise x64 Edition” /fastdetect /NoExecute=OptIn

At the end of the line, add a space, and then type /usepmtimer. The line should now resemble the following.
multi(0)disk(0)rdisk(0)partition(2)WINDOWS=”Windows Server 2003 Enterprise x64 Edition” /fastdetect /NoExecute=OptIn /usepmtimer

Save the file and restart the server.

Leave a Reply

Your email address will not be published. Required fields are marked *