Vagrant Tutorial – From Nothing To Multi-Machine

As developers, we sometimes want to quickly test some software. Instead of installing it directly on our developer machine, it’s better to install it in a virtual machine (VM). But if you don’t have a VM ready, setting one up usally takes a lot of time – and there goes your productivity.

Fortunately, there is a solution: Vagrant

Vagrant is a free tool that lets you quickly spin-up fresh VMs out of thin air. It can even spin-up multiple VMs at the same time.

This article is step by step tutorial for getting from nothing to a multi-VM setup where the VMs can talk to each other.

Read more →

Assign DNS name to virtual machine (here: Parallels Desktop 7)

Assigning a DNS name to a virtual machine can be a convenient thing. Do this is not very complicated, it requires some technical skill though. This tutorial shows how to do this with a Ubuntu 11.10 Linux server running under Parallels Desktop 7 on Mac OS X Lion. The basic principals described in this article work as well for any other combination, but that’s beyond this article (and that’s where your technical skill comes into play).

Read more →

VMWare Fusion Performance Test

Today I did some testing on the performance of VMWare Fusion 3.1 regarding whether to use a 32-bit or a 64-bit guest system on a 64-bit host system. For the test I used:

  • Machine: MacBook Pro 15” early 2010
  • CPU: Intel Cor i5 2.4 GHz (Dual Core; 64-bit CPU)
  • RAM: 4 GB 1067 MHz DDR3
  • OS: Mac OS X 10.6.5 (with all updates)
  • VMWare: VMWare Fusion 3.1.2 (332101)

For the testing I shut down all applications (that could be shut down) except for:

  • VMWare Fusion (of course)
  • Terminal
  • TextWrangler

I also disabled Spotlight indexing for the duration of the test using (in Terminal):

$ mdutil -a -i off  # use "-i on" to reenable indexing

For testing I used an Ubuntu 10.04 Server Edition Linux either in the x86 (32-bit) and in the x64 (64-bit) version. Each version got one CPU and 512 MB RAM assigned (default values). I installed all updates (as of 2010-12-17) and also installed the packages “psmisc” and “bc”. The kernel version was 2.6.32-26. The VMWare Tools were not installed.

I then started VMWare Fusion (Virtual Machine Library only for now), and then called “purge” in the Terminal to free all inactive, unused memory for more correct information on how much memory is actually free. I then ran “vm_stat” (in Terminal), started the virtual machine, and ran “vm_stat” again to get the amount of memory actually used by the virtual machine.

Inside the virtual machine (i.e. in Ubuntu) I stopped cron and rsyslog to prevent them from interrupting the test, determined the free disk space (df -h) and the free memory (free -ok), and then calculated Pi with 3000 digits:

$ time echo "scale=3000; 4*a(1)" | (bc -l >/dev/null)

The results of the comparison can be found in the table below:

32-bit 64-bit Difference on 64-bit
Time to calculate Pi: 9.585s 8.823s -7.9%
Memory consumption on the host system (MacOS): 482.3 MB 648.2 MB +34.4%
Total/Used/Free memory in the guest system (Ubuntu): 496.96 MB / 35.22 MB / 461.74 MB 493.62 MB / 126.89 MB / 366.73 MB +260.3% (used only)
Disk usage in the guest system (Ubuntu): 560 MB 581 MB +3.8%

Observations:

  • CPU speed: A 32-bit guest system on a 64-bit host system runs slower than a 64-bit guest system.
  • Memory consumption: 64-bit guest systems require significantly more memory on the host system and on the guest system. In fact on the guest system the memory consumption seem to tripple (for some unknown reasons).
  • Disk usage: As expected, disk usage is higher on a 64-bit system , but only slightly.

Conclusions: If memory consumption is an issue on your system (i.e. if you have not so much memory), then select a 32-bit guest system. It’ll be slightly slower but also consume less memory. If memory consumption is not an issue, select a 64-bit guest system.