Way back when, I used to use VMware desktop on my Dell for development. When I switched to the Mac, I naturally selected Parallels desktop to let me run Windows instances under OSX. A couple of days ago I was offered a review license for VMware Fusion, so I tried it out to see if it’s better than Parallels, even though I actually have very few complaints about Parallels.
So what I’m comparing here is Parallels Desktop 3.0 for Mac and VMware Fusion 1.1.1. My comparison isn’t in any way exhaustive, just a first impression after a few days of use and for a fairly limited application, namely software development and backups and stuff.
The machine I’m running these guys on is my brand new Mac Pro with dual quadcore Xeons at 2.8 GHz and 8 Gb of RAM. On this machine it’s hard to have any software perform poorly, so I wouldn’t be able to detect much in the way of inefficiencies, if there are any. Nice for me, but it hobbles my advice somewhat. For details on the machine, see my earlier entries on “Mac XP”.
I’m running an old Win 2000, and two instances of Windows XP under Parallels. One XP is equipped with MS SQL Server developer’s edition and Visual Studio 2005, while the other one harbours Visual Studio 2008. They have 1 Gb resp. 768 Mb of RAM allocated in Parallels. The Win 2000 has just 512 Mb, but I don’t use that one much.
For this comparison, I created a third Win XP and gave it 512 Mb of RAM. I plan on using this VM as a “utility VM”, containing stuff like backup software. The first thing I installed in it was Retrospect 7.5 for Windows that came bundled with my Netgear ReadyNAS+ (5 clients included) and then I purchased and added a further 5 client licenses. So it can now backup 10 clients, mixed Mac OSX and Win clients.
It turns out that Fusion is a pretty good choice for this “utility” VM, since it allows me to allocate 2 virtual CPUs. Retrospect does exploit multiple CPUs if you have them, so this allows Retrospect to use two of the eight cores I have in the machine. Parallels would limit Retrospect to just one core.
Running Retrospect in one of the other XP VMs would make that VM go very slowly. All it’s activities would be limited to one core on the Mac and I would have a nasty time of working in Visual Studio in the same VM at the same time. Having Retrospect run on two cores in its own VM allows me to work in the other VMs without noticing any slowdown at all. It’s great! In all fairness, running Retrospect in a Parallels VM would have had the exact same result, except Retrospect would have run slightly slower.
I’m usually writing quite a bit of multithreaded code, making it practically necessary to run on a multiprocessor to avoid subtle bugs. That would seem to mandate Fusion. But I don’t know how fully it emulates two CPUs. Does it interrupt right in the middle of memory accesses like a true multiprocessor machine would do, or is it more civilized than that? The lack of documentation about this is a problem, just like for hyperthreaded CPUs. In both these cases, it’s very unclear how close they mimic a true multiprocessor machine.
As far as simply running most software, I think both these products do a grand job. I’ve not encountered any problems with either, but remember I’ve done much more on Parallels than on Fusion. The network setups are also practically identical with choices for host sharing, bridged, and host only. The intricate and flexible network configurations we see in VMware’s Windows product aren’t found in Fusion (yet). What’s also lacking is a decent snapshot management in Fusion. You can take snapshots and revert, but there’s no management of multiple snapshots like in the Windows product or in Parallels.
Miserable keyboard handling
Now for my real beef with both of these products: the keyboard. Obviously, most keystrokes should be passed on to the virtual machine, some should be converted, and some intercepted and sent to the host OS. Both these products have made a mess of this even though it ought to be simple to get right.
In Parallels, the command and control keys swap nicely on the left side of the keyboard while remaining unswapped on the right side. Kinda confusing, but I don’t mind getting used to it. But function keys is a real problem. Sometimes I succeed in getting them through to the VM using different combinations of command and control or something, then I can’t remember exactly what I did. It also varies according exactly which function keys we’re talking about. The function keys that have predefined uses for dashboard, exposé, and similar, behave differently from other function keys. Parallels does have a menu where one can select magic key combinations to send to the VM, but it would have been great to have these keystrokes pass right through under their own steam, so to speak. Having to select function keys from a menu is good for once or twice, but get’s old real quick. This is how it looks under the “Actions” menu in Parallels:
Under VMware, there’s a setting in the “Preferences”, which means that it is the same for all VMs under VMware:
As you can see, there’s a single checkbox “Enable Mac OS keyboard shortcuts” and it works admirably. A little too admirably, in fact. Once you deselect it, all keystrokes go to the VM, including command-tab. Now there’s no point in passing command-tab to the VM since Windows doesn’t know what a command key is. But it makes sure I can’t easily switch between apps on the Mac. This is ridiculous, since Windows reacts to alt-tab, so they could just as well left command-tab for OSX. The new Mac keyboards also have a special “Fn” key where the useless “Help” key used to be. That ought to be exploited by Parallels and Fusion somehow, but isn’t.
I don’t know which of the systems, Parallels or VMware, got the key settings most wrong; it’s a close call. To me it’s obvious they really could spend a little effort in getting this right, since it’s the one thing that makes working with VMs hard; everything else is almost perfect. Having options allowing all keystrokes to pass to the VM except command-tab and possibly control-space (which I use for QuickSilver), would be absolutely great. Allow the user to freely define another couple of magic combinations that should not pass to the VM, and you’re set.
Converting: defeated by Mickeysoft
Both products are able to convert a VM from the other product to its own system. Both of them take forever to do it, but seem to do a good job of it, ultimately. But Windows isn’t happy about it, since it sees the conversion as a move to another machine and then insists on needing a new activation. Just to be a real PITA, Windows only gives you three days to reactivate, if it was already activated. Considering that you get 60 days to activate (for the MSDN version of XP), you are actually severely punished for having activated your XP in the first place before the conversion. How very nice of MS. Actually, WGA being what it is, it’s not a good idea to convert Windows installations from Parallels to VMware or vice versa at all. Actually, if you can avoid activating at all, that’s even better, but it limits you to 60 days per setup.
Parallels shows an actual live image of the VMs screen in the dock and in the task switcher, so even though a VM is hidden behind a stack of other apps, I can keep an eye on the dock icon and see if some compile has finished or a dialog box is waiting for input:
Fusion, on the other hand, just shows a Fusion logo, missing an opportunity to display something useful:
My current conclusion is that both products are great and work just fine. Both need serious work in the keyboard handling. Fusion has dual CPUs, a major advantage, especially on a multicore machine. Parallels has better snapshot handling and really useful dock icons.