VMware Communities
Sakesaru
Contributor
Contributor

Help! VM doesn't have enough grunt to play older games! Only using one CPU?

Problem:[/b]

Alright, I was hoping to use VMWare to emulate myself up a PC that runs an older version of windows, to play old games.

I got all that going fine, windows 98SE installed after some fiddling around. Got my audio working, etc, etc. Everything works fine on the VM, with the exception of speed.

Using windowed applications load at pretty much the speed of the host machine, very nice and quick. But when I open a game, say Doom or Destruction Derby 2, I'm only getting a ONE frame per second. There seems to be some massive delay between what I'm pressing on the keyboard, and what the games actually receive as being pressed too. Like the timing seems to be out.

I checked my CPU usage, and, as I suspected, VMwares (vmware-vmx.exe) only using 50% of my CPU usage, occassionally spiking up to 53%. VMwares (vmware-vmx.exe) affinity is set so it can use CPU0 & CPU1, if I set it so it only has one (either one, no difference) it doesn't help at all. But I think in reality it's only using the one CPU.

It still strikes me as strange that I can run the OS at such insane speeds, yet a couple of really old crappy games that could run fine in MS-DOS's days are too hard to run =(

Is there any way it can be set to use both CPU's? Is there something else I'm missing here? Please help!

Specs:[/b]

VMWare Workstation version 6

Using Machine 6

Host OS: Windows XP Home (32 bit)

Host CPU: Athlon X2 (dual core) 3800+

Host GPU: nVidia 7600GS

Host RAM: 2GB

Guest OS: Windows 98SE

Guest RAM: 128MB (should I use more?)

Guest HDD: 512MB (pre-allocated, don't need much space)

VMX file for the guest OS:[/b]

config.version = "8"

virtualHW.version = "6"

scsi0.present = "TRUE"

memsize = "128"

ide0:0.present = "TRUE"

ide0:0.fileName = "Windows 98.vmdk"

ide1:0.present = "TRUE"

ide1:0.fileName = "C:\Documents and Settings\Sakesaru\Desktop\DX8 for Win 95.iso"

ide1:0.deviceType = "cdrom-image"

floppy0.autodetect = "TRUE"

usb.present = "TRUE"

ehci.present = "FALSE"

sound.present = "TRUE"

sound.fileName = "-1"

sound.autodetect = "TRUE"

svga.autodetect = "FALSE"

pciBridge0.present = "TRUE"

mks.keyboardFilter = "allow"

displayName = "Windows 98"

guestOS = "win98"

nvram = "Windows 98.nvram"

deploymentPlatform = "windows"

virtualHW.productCompatibility = "hosted"

tools.upgrade.policy = "useGlobal"

ide1:0.autodetect = "TRUE"

floppy0.startConnected = "FALSE"

floppy0.fileName = "A:"

svga.maxWidth = "1280"

svga.maxHeight = "1024"

numvcpus = "1"

isolation.tools.hgfs.disable = "TRUE"

uuid.location = "56 4d 8f 61 05 98 10 c9-7f 1d 19 7d f8 ce 75 95"

uuid.bios = "56 4d 8f 61 05 98 10 c9-7f 1d 19 7d f8 ce 75 95"

ide0:0.redo = ""

pciBridge0.pciSlotNumber = "17"

scsi0.pciSlotNumber = "16"

sound.pciSlotNumber = "32"

ehci.pciSlotNumber = "-1"

checkpoint.vmState = ""

ide1:0.startConnected = "TRUE"

tools.remindInstall = "FALSE"

tools.syncTime = "FALSE"

usb.generic.autoconnect = "FALSE"

0 Kudos
10 Replies
RDPetruska
Leadership
Leadership

You are correct - your guest is only using 1 cpu. However, I do not believe that there are ANY Win9x kernels which support multiprocessors, so even if you were to add a 2nd virtual CPU, your guest would not be able to take advantage of it. Also, since you only have 2 physical CPUs/Cores in your host, running a 2-vCPU guest is not going to work very well - you will essentially starve your host.

0 Kudos
ist2007
Contributor
Contributor

Why not trying more RAM? With 2GB RAM on the host, you should have enough capacity. Just try 256MB or 512MB for the Virtual Machine and you'll see if you get more speed Smiley Happy

Regards Christian

0 Kudos
Sakesaru
Contributor
Contributor

RDPetruska: No I mean like, using both CPU's to emulate a single CPU host.

IST2007: Just tried using 512MB and 64MB of Guest RAM, didn't make any difference at all.

I've also tried every available "Hardware Acceleration" level in Win98, it doesn't seem to make any difference at all. (Right click my computer, properties, performance, click graphics, and then fiddling with that slider).

0 Kudos
RDPetruska
Leadership
Leadership

>No I mean like, using both CPU's to emulate a single CPU host.

Computers don't work that way. A single thread can only execute on 1 CPU. If you want both CPUs to work on the same task, you need at least 2 different threads in the program - and the program MUST be written correctly to handle multithreaded issues!

In your case, you have a single virtual CPU guest (note the line 'numcpus = "1"'). That process runs on 1 main execution thread - and therefore on 1 and ONLY 1 of your host's CPUs. Ergo, the maximum host CPU usage which your guest will take is ~50%.

0 Kudos
Sakesaru
Contributor
Contributor

RDPetruska: Yeah I knew all that, was hoping that the VM may be able to pull some serious lies out of nowhere and somehow make it work. Sometimes I get nice surprises when asking if software does impossible things... lol.

"RDPetruska: No I mean like, using both CPU's to emulate a single CPU host." I ment to say guest not host there.

This utterly puzzles me. When I play the game on the Host machine it operates at full speed, just with a garbled display (thanks windows XP). When I try it on my friends pentium 2 with windows 98SE (the definition of slow) it runs like a dream. But these type of games won't run on the VM, which from the speed that it does stuff in windows (open explorer, etc), the VM looks to be much much faster.

0 Kudos
RDPetruska
Leadership
Leadership

It's most likely due to the virtual graphics card. The VMware SVGA II video adapter (you HAVE installed the VMware Tools in your guest, haven't you?) is a basic 2D graphics card with 16MB of video RAM by default.

0 Kudos
Sakesaru
Contributor
Contributor

Yep, I installed the guest additions. Checked it on the device manager, it's all up and running with the SVGA 2 driver. The game refuses to run unless it's in 256 bit color or higher which was what prompted me to install it.

More stuff to eliminate: It did this before I installed the sound drivers too. Installing them hasn't made any difference.

I couldn't find any settings to alter how much video memory the video adapter had, how fast it goes, 2D/3D, if it supports DirectX etc. So I haven't touched anything there, just installed the SVGA driver.

0 Kudos
RDPetruska
Leadership
Leadership

>I couldn't find any settings to alter how much video memory the video adapter had, how fast it goes, 2D/3D, if it supports DirectX etc.

There is no GUI for it. You have to manually edit the vmx file to do so. Refer to the Workstation user manual.

0 Kudos
Sakesaru
Contributor
Contributor

Okay, I checked the manual, doesn't support Win 9X but I tried it anyway.

Increasing the amount of VRAM just makes Doom and Destruction Derby 2 crash on launch.

Installed DX8 and the OS won't even boot now, /sigh

Yeah, I give up.

0 Kudos
cogumel0
Enthusiast
Enthusiast

Try this (if you haven't yet):

Right-click the desktop and choose Properties > Settings > Advanced > Troubleshoot. Move the Hardware Acceleration slider all the way to the Full position.

Open your .vmx file with your Virtual Machine totally powered off, not suspended or running[/b] and add these lines:

mks.enable3d= TRUE

svga.vramSize = 33554432[/i]

You might need to add

vmmouse.present = FALSE[/i]

as sometimes (depending on OS) as soon as you run the VM it disables the 3d (so it changes mks.enable3d = FALSE[/i]).

After you start your VM open your .vmx file again (do not change anything when the VM is running or suspended though!)[/b] and just make sure that those 2/3 lines you just added remain unchanged.

If everything remains unchanged you should now be enjoying 3d in windows with a 32mb graphics card.

cogumel0

PS: if you want to change the value of svga.vramSize, this comes in Bytes. To change it, for example to 32[/b], do:

32[/b] * 1024 *1024 = 33554432.

0 Kudos