Friday, August 19, 2005

Virtual PC Guy's WebLog : Tweaking the performance of Virtual PC 2004

Tweaking the performance of Virtual PC 2004
Most people who use Virtual PC are running it on a uni-processor computer - and are trying to run other programs at the same time; however, Virtual PC can be very demanding on CPU resources at times. To help people deal with this - we have provided the following performance options under Virtual PC:

Run Virtual PC at maximum speed

Selecting this option will result in Virtual PC always getting the CPU time that it needs - and this is the option that provides the best performance inside of Virtual PC. The problem with this option is that if the virtual machine attempts to use 100% of its CPU it can bring other applications running on the host computer to their knees. It should be noted that a virtual machine does not have to be 'busy' in order to use 100% CPU. Some operating systems / applications (like DOS) do not implement an idle loop - which means that they will always use 100% CPU.

This option is best for users who are spending the majority of their time inside of the virtual machine and are only doing light processing on the host computer.


Give processes on the host operating system priority

With this option selected; Virtual PC will throttle its CPU usage whenever it is in the background. This allows the host system to remain responsive - but can result in terrible performance inside of the virtual machine (users have reported that operating system installs can take > 6 hours with this option selected and the virtual machine in the background - as opposed to the ~1 hour with the other performance option).

This option is best for users who are spending the majority of their time using the host operating system and are only doing light processing inside of the virtual machine. This option should *never* be selected if you are performing an OS installation inside of the virtual machine.
A third option is to choose the 'Run Virtual PC at maximum speed' option and then launch Virtual PC using the following command:

Start /low "" "Virtual PC.exe"

This will run Virtual PC at a lower priority than other applications, which will allow it to get all of the CPU resource that is available, while letting other host applications remain responsive. The problem with this option is that it can conflict with other low priority applications like Seti@home.

A final comment on all of this is that as Virtual PC runs all of its virtual machines on one thread - if you have a dual-processor computer - you can just select to 'Run Virtual PC at maximum speed' and not worry about performance as your host applications will run on the other processor.