Hey StackExchange, I'm unsure of whether or not I should be using a VM for development, as opposed to running a native configuration on a distribution certified for use with Oracle 11g (as opposed to Debian).

1 Answer
1

Unless your intention is to run OLTP benchmarks, I doubt you're going to be able to see much in the way of latency on modern hardware. Between native virtualization support in recent Intel and AMD chips, lots of RAM, and mature VM systems, VMs run quite well these days.

You do have to configure the VM to fully use the native hardware, of course. This means giving the VM 8 "CPUs" on a 4-core Hyperthreaded box, for example. If you're using VMware or Parallels, there are tools you have to install into the VM to get the best performance, for another example.

Justification: I've gotten my development environment down to just a few real hardware boxes:

one full-size main server, where most development takes place; it also serves as the release build system for the OS the box happens to be running

a laptop running VMware Fusion, for testing on other platforms, and building release binaries

The only reason I use two physical machines and put the VMs on a laptop instead of running everything on the big server is simply that I want access to the VMs while away from the office, too, without drilling holes in the corporate firewall. The laptop is plenty fast enough for most purposes.

Important caveat: I'm a command line type of guy, using GUI systems mainly for running tabbed Terminal apps, plus auxiliary apps like file managers and web browsers. Point being, I access my VMs through efficient SSH connections almost all the time. If your use will require a lot of GUI access, then you will likely notice the latency. But, if you can do the GUI stuff on the native side, and leave VMing to SSH connections for the most part, you'll be fine.

All is not lost if you need GUI access to the VMs, as long as you're using a "workstation" class VM system, like Parallels {Workstation, Desktop}, VMware {Workstation, Fusion}, or VirtualBox. You just do the GUI through the VM system, rather than via a remote X11 connection. It's still a bit slower than native, but still quite usable.