Fog Creek Software
Discussion Board




VMWare virtual machine as primary environment

I'm in the process of reconstructing a copy of my working environment on a new laptop and will be going through that process again soon with a faster desktop PC. Yuk! Any thoughts and experiences about running a VMWare virtual machine as your primary environment? So instead of installing development tools, email client, productivity applications etc. onto the native O/S you build your day-to-day working environment  inside a VM.

Advantages: easy to move  your entire working environment between machines, for example to a laptop or a faster PC just by copying the VM. Easy backups too.

Disadvantages: a slight performance hit (but does this matter with todays fast hardware?)

VMQ
Saturday, March 06, 2004

Great idea but at 2 GHz on the main CPU, it's still a little too slow, I think.

Joel Spolsky
Fog Creek Software
Saturday, March 06, 2004

I develop only inside of Virtual PC now. My host PCs run the most appropriate OS for personal use (Windows XP), and then I can select from literally dozens of available development environments as I see fit (matrix of OS vs. compiler vs. other things like what versions of individual software is installed vs. additional required development tools like SharePoint).

I've been doing it this way for about 6 months now, and I cannot image doing it any other way now. This is just too flexible. Plus, my desktop has 2GB of RAM, so it's a breeze to not only get my development tools running in one VPC, but clean client and server environments in others, and have it all running at once.

Brad Wilson (dotnetguy.techieswithcats.com)
Saturday, March 06, 2004

Oh, and I do it with a 1GHz P3 and 5400RPM drive on my laptop, too, and it's still extremely usable.

Brad Wilson (dotnetguy.techieswithcats.com)
Saturday, March 06, 2004

Yup, I do this pretty often as I have multiple clients who require multiple, incompatible development environments.  I'm usually using VMWare for linux work under Windows XP, but I sometimes run Windows under Windows as well. 

Performance is ok for development but drops off markedly your VM starts needing to page to disk.  I should note that I'm running an older 1.3GHz 128M RAM laptop.  More memory would certainly improve the situation.

erics
Saturday, March 06, 2004

Yes, plentiful RAM is a requirement to make this work. I just upgraded my desktop machine (P4-2.8/800), and put 2GB of ultra-fast RAM into the system. Now I can run a literally insane number of Virtual PCs without swapping to disk.

A strong recommendation for non-laptop users: get a second disk, and put the virtual hard drive files on that second disk, separate from your OS & paging file. Even on an external Firewire or USB 2 drive, that can make a pretty substantial difference in disk performance, which is admittedly the weakest point for both VMware and VPC.

Brad Wilson (dotnetguy.techieswithcats.com)
Saturday, March 06, 2004

we run our builds on a vmware machine. WE can build anywhere , and if hardware has problems we move the build vm image over to new machine.

cj

dood ,
Saturday, March 06, 2004

[psst, Brad! One word: SCSI]

Philo
Saturday, March 06, 2004

I develop on vpc's on a laptop (1.5ghz Pentium M with 1 G RAM) and it is a great way to do work.  On the laptop I keep the VPC's on a USB 7200 harddrive w/ 8M cache.  It is important to keep the VPC's on a harddrive that does not contain your host OS.  The other benefit is that in team development you can bring a new person on to the team in less then half a day.  Definately worth looking into.

K
Saturday, March 06, 2004

VMQ, you are right on.

Basically you should only run the bare minimum on your host pc, this 1) reduces registry/dll hell to the point where you'll rarely reinstall; 2) keeps it stable

And then stack on the goodies in your virtual host. You should still backup (either the VM files or ghost what's within) and use the rollback feature to undo what mysterious shareware might have done to your system.

Performance wise, it's good enough for most office work.
For GUI less linux remote administration/programming, I would say anything faster than a P3-800,
For same machine GUI development, anything faster than a P4 2.0GHz should be more than adequate (depends on what you do though).

You won't want to run 3D rendering or Premier in it, however, keep the serious long-runs and raw crunching out of it as much as possible.

Li-fan Chen
Saturday, March 06, 2004

> You won't want to run 3D rendering or Premier in it, however, keep the serious long-runs and raw crunching out of it as much as possible.


YMMV.

Li-fan Chen
Saturday, March 06, 2004

[psst, Brad! One word: SCSI]

psst, Philo! One sentence: 3ware SATA hardware RAID smokes, for half the price of SCSI, when the drives are physicall the same! :)

Brad Wilson (dotnetguy.techieswithcats.com)
Saturday, March 06, 2004

"[...] keep the serious long-runs and raw crunching out of it as much as possible."

Actually, this is precisely where VPC excels. The CPU performance between VPC and host is nearly 100% equal. Where you hurt the most is disk. So, computationally expensive (but not data intensive) things works just beautifully inside a VPC.

Brad Wilson (dotnetguy.techieswithcats.com)
Saturday, March 06, 2004

I would go with Brad on this, basically this is what it will translate to: longer compiles, not because of CPU power waste, but disk access waste (lots of files are created, translated in any given major compiles).

Li-fan Chen
Sunday, March 07, 2004

I do 100% of my development inside VMware on 2GHz Celeron with 1G RAM. WinXP as host, RedHat Linux as guest (very minimal X environment, no KDE or something, so I give it 256MB).

GCC compilation times seem to be on par with PIII-500/256/ATA33, (which I also use for same builds, so I can compare). So, as you see, slowdowns are significant. Things like traversing directory tree are also much slower. But my disks are virtual, I guess you can get a lot better performance from raw partition access.

Egor
Sunday, March 07, 2004

There are a couple different options to combat that. The raw partition access is a very good one. Another option available in VPC (and presumably VMware) is to make the "virtual disk" a fixed size on the host disk; i.e., it doesn't grow. Much of the performance penalty associated with disk access is growing the on-host file size for the virtual disk.

Brad Wilson (dotnetguy.techieswithcats.com)
Sunday, March 07, 2004

Also...

"GCC compilation times seem to be on par with PIII-500/256/ATA33"

I was previously a VMware user (paid twice, for 2.x and 3.x), and switched to Virtual PC, because I found the performance with Virtual PC is absolutely outstanding. My slowdowns are nowhere near as bad as yours seem to be..

The downside, obviously, is that the host for VPC must be Windows, whereas you can host VMware with Linux (which is a seemingly better host choice, given its relatively low hardware requirements). On the other hand, VPC can be hosted on the Mac, which last I checked, VMware could not.

I'd say anybody who's evaluating VMware for something like this sort of owes it to themselves to get the timed trial version of VPC and do an A/B performance comparison.

Brad Wilson (dotnetguy.techieswithcats.com)
Sunday, March 07, 2004

I have to agree. Virtual PC is much better at running Windows operating systems (can you say undocumented hooks -- just kidding folks! I don't want to troll), especially in the area of i/o throughput. There was a review going round a couple of weeks ago that confirmed this, if I find the link I post it.

You can run non-Windows OS in Virtual PC 2004, and the networking side of things is handled in a much nicer fashion, without the extra adpators and bridge protocols that VMWare uses.

Just my fraction of a Euro.

Anon
Sunday, March 07, 2004

I have never tried VPC, sincerely hope I am not missing out :-)

Yes, VMWare is infatuated disk optimizations (but it has a crush on memory and processing power too). In order of preferences:

1. VMWare GSX running on Google's 13000+ linux servers
2. A complete scsi subsystem, accessed as a raw partition
3.  A separate physical scsi drive, all to the virtual os as a single raw partition.
4. A separate physical ide drive, all to the virtual os as a single raw partition
5. A separate ide drive with separate partitions, one used by host os, one used by virtual os,
6. Same drive as host OS drive, dedicated raw access on a separate partition
7. Same drive as host OS drive, preallocated virtual disk
8. 7. Same drive as host OS drive, dynamic sizing of virtual disk


The more you go out of your way to help this along, the more your VMWare will speed up.

Li-fan Chen
Sunday, March 07, 2004

I've just posted about my experices. I run VMWare 4 on Fedora and am having a whale of a time with it. Snapshot and Revert now take a minimal amount of time. The only hit I really see is on graphical refreshes, most graphics development is ok, it static graphic design. But constant refreshes can be seen. For example, iconising/expanding a window can be seen in steps instead of as a smooth close. I've not tried playing Unreal Tournament on it yet though :-)

I used to do this partially on VMWare 3 but the suspend was so slow as to be unusable and the peripheral support was a little dodgy in places. Now I've got all my devices working (although I have to rmmod them to free them from linux sometimes).

Look here:- http://pollenation.net/journal/tim.php?p=25 for my recent VMWare rave.

You do need lots of RAM though (preferably about 1/2 GB for Win XP). I'd like to see a more direct link into the graphics card but apart from that I'm hooked.

Tim Parkin
Wednesday, March 31, 2004

*  Recent Topics

*  Fog Creek Home