Slowing down virtual machines

Slowing down virtual machines

  • Comments 8

A common request that I hear is that people want a way to create a 'slow' virtual machine.  Usually this is because they have an old game or application that has problems when run on modern, fast computers.

The problem is that Virtual PC and Virtual Server virtualize the processor.  This means that when the virtual machine is using CPU resource it is actually running directly on the physical processor (most of the time).  Because of this there is no way for us to purposefully slow down the speed of the CPU inside a virtual machine.

Programs that emulate a processor (where they have software the provides the same functionality as a physical processor, without actually needing direct access to the processor) can control the speed of the emulated process (DOSBox and Bochs are two such programs), however emulation is much slower than virtualization - so they cannot run as fast as Virtual PC / Virtual Server can.

Virtual Server provides the ability to limit the amount of CPU resource used by a given virtual machine, but this is not effective for slowing down the virtual machine.  As I mentioned already - we run the virtual machine directly on the processor - so it is not possible for us to change the processor speed.  So setting a virtual machine with a maximum of 10% CPU resource under Virtual Server (for example) means that it will only be allowed to run on the CPU for 10% of the total system scheduling time over a period of time.  While the virtual machine is running, it is still running at full processor speed (albeit less oftenly than it would otherwise run).

So what are your options?  Well - maybe an emulation solution is better for your needs.  Or, maybe you need to invest in some older hardware.  Or - you could pursue the use of 'slow down' software inside of the virtual machine.  Some programs that I have used with varying levels of success include:

One final comment on this topic - some people have noticed that some older DOS programs that are known to crash on fast hardware actually run perfectly inside of Virtual PC / Virtual Server.  The reason for this is that a long time ago in Virtual PC development, we put in some code to detect the problematic routines in some common DOS libraries (checkout this for an example reference) and to patch these binaries 'on the fly' so that they would run correctly inside of the virtual machine.

Cheers,
Ben

Leave a Comment
  • Please add 5 and 3 and type the answer here:
  • Post
  • For gaming, I would like to have a builtin cheater/trainer support :P Any chance to get such a feature in VPC? Or in a better name... DEBUGGER :)

  • Ah, I got bit by the "Runtime Error 200" bug of Borland/Turbo Pascal 7. At the time,  many people around here used some DOS program launcher, written in TP7. Once I (as a PC technician) upgraded their machines, their program wouldn't work anymore. They were not amused. IIRC, the problem started when the second-generation Celerons (300A, 333, etc) appeared - these were the first mainstream PC processors to have core-speed cache, and thus run the timing loop too fast.

    Sound like if you want slow, you should use emulation. To quote from the post:

    A common request that I hear is that people want a way to create a 'slow' virtual machine. (...) emulation is much slower than virtualization - so they cannot run as fast as Virtual PC / Virtual Server can.

    BTW, is it possible to change the color of links? The difference between #700 (dark red) and #333 (dark grey) is invisible to slightly color-blind people (like myself and all the males in my family).

  • "For gaming, I would like to have a builtin cheater/trainer support :P Any chance to get such a feature in VPC? Or in a better name... DEBUGGER"

    There are DOS apps that can do this, like GameWizard. Not sure if it works in VPC though.

    This has been requested many times for DosBox but it's not a DosBox priority as we are more concerned with compatibility.

    Any DOS game that that runs too fast on your host PC should run just fine in DosBox.

    I recently threw together a C2D machine and now instead of 15-20fps in Duke3D @ 640x480 (Athlon XP 2800+) , I'm getting 40+ fps @ 1024x768. :) Duke is fully playable at 15fps so if DosBox supported even higher resolutions I could probably get away with it. (Of course there is Jonof's Duke3D port but I bench DosBox with Duke to get a general feel of Build engine games under DosBox).

  • Not sure if anyone is listening.. but

    1. Higher screen resolutions

    Any plans for virtual PC to support more screen resolutions?  I bought a 22" lcd which defaults to 1680x1050.  Virtual PC does not support this resolution.. even though it supports 1600x1200.  I know many share this frustratation.

    2.  Multiple monitor support.  

    Any chance of competing with vmware in this regard?  I must say since v2007 at least being able to run in full screen mode now without affecting other monitors is a major, major benefit. thanks, thanks!!

    3.  Multiple core cpu's

    This is going to be a major in the not too distant future.  Limiting it to one CPU for a virtual machine is sooo restrictive.  Do they even ship single core machines anymore?  duals are standard now and I expect quad cores to be mainstream in the not too distant future.

    ewart at ihug.co.nz

  • On a similar note, we have a legacy application that due to some insanity of the original developers checks that it is running on a Pentium III processor. The application refuses to start if it is not.  We >really< would like to virtuize this application and it's server, however virtual PC and virtual server report to the client o/s the actual processor that is in the physical machine.

    Is there any way to "trick" the client VM into reporting that is is running on a certain processor?

  • question -

    No, this is not possible.

    Cheers,

    Ben

  • If you really need to run dos programs that can't run on a modern, fast CPU, you could always use dosbox.  It's pretty good at emulating an old, slow PC with all the quirks and limitations the old processors had.  It was made specifically to run old DOS games, but it's plenty capable of running more serious apps, too.

    http://dosbox.sourceforge.net/

  • cpukiller has been the best one so far that i've tried but it costs quite a bit more than I'd pay for it just to run a handful of games..

    something like this should be 20 bucks. no more!

    it should be the cost of a game in the same vein

    that way it's worth it.

    anyways, I found it worked a lot better because it runs outside as it's own program so there's no compatibility issues. I'm only using the demo which only allows for like 20 minutes of use at a time.

    what a disconcerting name though.. cpukiller :/ why would they name it that. sounds like a horrible virus or something lol

Page 1 of 1 (8 items)