In VSTS 2010 in the world of ping-pong testing we introduced the ping-pong effect. In this post we will be introducing a slightly more energetic bouncing ball chaos … if you are using hyper-v or virtual machines in an environment where many machines are communicating with each other or a server, or if you are experiencing a Team Foundation Server (TFS) and Visual Studio Team System (VSTS) that is slooooooooow or showing weird erratic and/or freezing symptoms then stay with us for the next few paragraphs.
- Imagine one Team Foundation Server (TFS) running on either a virtual or a physical server, with the monitoring tools showing close to no utilization of memory and processor.
- Imagine many, say twenty, virtual workstations running Windows 7 and Visual Studio Team System (VSTS) and accessing team projects, reports, build, source control and other services from the TFS server.
- Visualize many software engineers tearing their hairs out, with VSTS freezing up, taking forever to check-out code from TFS and generally acting very, very strange.
- Tasks that that typically take seconds, run for ever … in fact I started a check-out, went to lunch, came back and stared at the screen … ~10% done. Doing the same task on my laptop against a server on the other side of the US/Canadian border takes a few seconds … hmmmmmm…
Where do the chaotic bouncing balls come into effect?
Well, we finally figured out what the problem was and in my mind I had an image of thousands of bouncing balls going berserk in a small room … all virtual machines had the same MAC address and therefore the confused network packets turned into a chaos of packets bouncing around the network, seldom reaching the server and less seldom making their way back to the originating workstation.
What did we do to calm the chaos and restore performance and stability?
- When running Hyper-V you can literally click a checkbox to create a unique MAC address for each virtual machine.
- When running Windows 7 and Virtual PC, you need to do a bit more:
- Start the virtual machine and logon.
- Go to Control Panel\Network and Internet\Network Connections, right-click on the relevant network connection and select properties.
- Select configure and then advanced.
- Find the property Network Address and set it to a unique address manually.
- Confirm the changes, sit back, watch the crazy bouncing balls evaporate and the network packets getting back on their structured and efficient network journeys.
… each network data packet pacing itself.
Well, the check-out that ran forever and stopped at 10%, completed in a fraction of a few seconds … go TFS, go.
I cannot, however, get rid of the feeling that Zayd is still going “tsk, tsk, tsk” and that we had a similar problem back home in South-Africa a long time ago.