Mike Levin SEO

Future-proof your technology-skills with Linux, Python, vim & git... and me!

VMWare Fusion 5 on Mac OS X in full-screen is remarkable

by Mike Levin SEO & Datamaster, 02/24/2013

I have to test my Levinux tiny virtual Linux server distribution on a lot of different operating systems. It’s designed to run with a double-click whether you’re on a Windows, Mac or Linux desktop—and a wide variety of Linux at that. So, I need to try it out on a lot. This article is about one of the tools I’m using to accomplish that.

While I do have various different computers to test on, I don’t have as many computers as the OSes I need to test. So, it’s time to play around with virtualization products again. But I have a love/hate relationship with virtualization, and I’m always dubious—especially of a kind called Type 2 hypervisor virtualization that runs after a main OS boots. Well, I’ve used VirtualPC and Parallels on the Mac. This time up, it’s VMWare Fusion 5.

It’s turning out that VMWare Fusion and the Mac OS X are a match made in heaven. I’m finally starting to have some faith in type 2 hypervisors—something l’ll explain in this article. This is a surprising development for me, as I usually advocate using the one intended OS per piece of hardware, to keep things running smoothly. Life’s too short to try living inside houses of cards (what virtualization tends to be). So, generally adding another whole OS on top of the one you e got is bad news and something I avoid.

Now, I’m a big fan of virtualization in the right circumstances—and my very own virtual Linux distribution is based on it. However, I’m more an advocate of low-level access to your actual hardware for severely optimized code—code that does something so perfectly that it hasn’t lost a cycle doing anything its not supposed to be doing. In other words: making more of less. Economy in computing is a rare topic due to Moore’s Law, but there are rising instances it’s important—like for low power consumption in mobile.

Virtualization and optimization are two opposite sides of the how-to-be-most-productive with your equipment argument. Virtualization is a high-level abstract code lifeboat for ultimate code survival, at the expense of CPU cycles—and consequently heat cost, performance, and stability. Fast optimized code is low-level precise one-off never to be reused, because you’ll never encounter precisely the same challenge on precisely the same hardware. Low-level near-the-metal hardware optimization of software is faster, cooler, cheaper, and generally more stable.

Why? Because virtualization requires all these overlording tasks from an outside, like the hypervisor that—while (in type 1 bare metal hypervisors) seemingly not interacting with the hardware it supervises, still has the right to kill it. But otherwise, there should in theory be no performance burden or stability sacrifice on the regulated and virtualized OS. It doesn’t (shouldn’t) know it’s being monitored. It doesn’t know it’s virtualized. And hardly anything is being stolen for it to notice. CPU cycles don’t have log files, so it’s hard to know. But from the things that go wrong with virtualization, I’ll tell you the ideal theory does not always hold true.

The truth is that when you virtualize a computer on another computer, something’s got to be in control—and that control costs something, or else things would bog down with overhead forever until all resources darken out and can’t be fixed without a full hardware reboot. Kinda like how old 486 and Pentium PCs would bog down and crap out under Windows after awhile until their hard drives needed to be wiped and reinstalled. Security-wise on these systems, they were extraordinarily easily owned machines. Something has to me the taskmaster. So what’s in control at the very top of privileged tasks?

Enter the hypervisor—wasted overhead cycles because you’ve bought into virtualization. Everything has a cost, and don’t let anyone fool you—those resources are being used in housekeeping. It’s just that the average user is so non-demanding on their very powerful hardware, that they don’t notice in the least the extra overhead. HOWEVER, VMWare fusion, because it runs AFTER OS X is started, can’t use a type 1 hypervisor. It has to be type 2 with many more moving parts, so expectations were low. House of cards, and all that.

So, the type 2 hypervisor in VMWare Fusion for Mac OS X is kinda like the heavyweight overlording task of a virus checker. I mean—how do you write a virus checker? Something’s got to interrupt every potentially at-risk operation with elevated sufficient rights to investigate and scan it, and then let it continue if benign, or kill it if malevolent. Think how much overhead that must be. On tasks running with privileged access in memory—and with every read or write of a file.

Well, it’s not quite as bad with virtualization as it is with virus checkers, but I always fear it could be. Type 2 VMWare Workstation (the PC equivalent to Fusion) was even once used as a trick on me by a rotten sysadmin who never delivered hardware that I had ordered, but instead just gave me a login to a virtualized session that turned out to be a VMWare Workstation session running—maybe—on the hardware that I ordered, but which he intercepted and kept for himself.

That stupid procurement abuse—which was severely corrected—made me forever suspicious of the ways of lording sysadmins, and particularly the performance of type-2 hypervised sessions—which tended to pop like soap bubbles in those days if you didn’t shell out $10K for the type-1 ESX product (which he didn’t). This all resulted in the soap-bubble hosted website nosediving in availability, until ultimately it hurt sales. So, I now equate type 2 virtualization as cheap, fragile soap bubble-like sessions and trickery.

But I’m finding that VMWare Fusion pulls off type 2 virtualization miraculously well for single-user desktop work. I’ve used VMWare and VirtualBox pretty extensively over the years on a variety of host operating systems. And although I tend to shy away from VMWare because VirtualBox can be had in a free and open source forms—I have to say my latest experience with VMWare Fusion is knocking my socks off. A few nuances come together to make OS X the ideal host OS for Type 2 hypervised virtualization.

First is the way OS X now brilliantly handles full-screen mode. It’s the best implementation I’ve seen since the Amiga computer, which made cycling through full-screen apps as easy and fast as switching TV channels—BEFORE digital. Amiga+N to zap, zap, zap, app, app, app. I have missed this for the twenty years since—until now. Mac OS X seamlessly blended together the concept of virtual screens, full-screen mode, and swiping gestures with your fingers on a trackpad to move between them for something even better that the Amiga’s model.

Ever fumble around losing time or your productive flow by trying to switch between full-screen apps under Windows? Tired of their their jolting half-assed response to Mac Expose that zooms an annoying 3D stacked effect just to switch full-screen apps? Well not on the Mac. It’s just swoosh-left with a three-finger gesture. Swoosh-right. The whole screen slides naturally horizontally butter-smooth like all your virtual full-screen programs are lined up next to each other on a wheel on a highly greased rail, waiting to be spun into focus—with none of the distracting “chrome” from the OS.

Well, this is a combination of three features: how Macs handle full-screen “windows”, how they handle virtual workspaces, and how they handle multi-touch gestures on trackpads for natural hand-motions. One might also argue it is the result of Mac’s now also having plenty of the type of video memory so often needed for first-person 3D shooter games.

The end result is a workable full-system-feeling Ubuntu. The result is a full-system-feeling Windows whatever. The result is a full-system-feeling Fedora, OpenSUSE, or whatever’s your poison. And you navigate between them swoosh, swoosh, swoosh. And one is the Mac OS. But it’s really there in control of everything—as a tap of the pointer against the top or bottom of the screen within any of the full-screen virtual sessions will remind you.

The end-result is almost unreal. It has been my most elegant and least painful use of type 2 virtualization yet. And I’ve used VirtualPC in Mac in it’s pre-aquistion state and post. On both Mac and Windows. And I’ve used Parallels on Mac. Now, in all fairness, maybe all emulation products on the Mac seem magical, thanks to the full-screen mode, virtual screen and multi gesture swooshing gifts of the host OS. But VMWare is the one I got up to testing while the Mac OS is in such an awesome state.

Also, in fairness, I haven’t tried the a KVM-based solution on Linux. My Levinux virtualized Linux server distro actually avoids the kernel virtual machine for maximum compatibility with different host systems. And my current primary Ubuntu system has a weak Atom netbook motherboard. So, my MacBook Air is my best VM platform right now.

Plus, UIs to the KVM under Linux is yet another place different UIs are doing battle. No such uncertainty under Mac OS X. Almost complete rightness, seamless blending with host OS features for a nearly transparent experience—leaning on a multi-touch trackpad to accomplish this—something not universally supported in Linux yet. There’s just no added UI contrivances or any extra UI chrome to mess with. It’s just natural native feeling. I almost respect Type 2 virtualization now as much as Type 1.

Plus, you get an OS X system—something which is possible, but whose legality is questionable on other systems. Apple’s terms of service are not very supportive of running OSX virtualized or on other hardware. For, I go back to A-Max for the Amiga—late ‘80’s—88, I think. You needed actual Mac ROMs. Suffice to say, Apple has never been crazy about OS X being virtualized. So if you want Windows, Linux and OS X at your disposal, it’s most legally tidy to make OS X the host OS anyway—aside from it being seemingly most suited for it.