fvogel
Contributor
Contributor

VM Performance Tweaking

Yesterday I cloned my first physical machine. This is a build machine we have on an old dell running windows 2000. I have a screaming fast ESX machine and the hope was that once I cloned this machine it would go from super slow on a 10 year old box to fast.

This didnt happen. My VM is slow. Its the only slow VM i have. I gave it 2 cpu's and looking at the performance meter, it isn't using it. I've upped the memory to 2GB and that hasn't helped. My ESX is a long way from maxed out in terms of Ram, HD, and CPU. I've tried to play with the vBIOS but am at a loss.

Can anyone provide some reccomendations to help make this VM live up to its potential on my fast host? Can this be all the legacy drivers imported from the old physical machine? Can W2k not utilize multiple CPUs? Is it somehow using a legacy clock speed?

Thanks,

Fred

0 Kudos
13 Replies
LarsLiljeroth
Expert
Expert

Hi

So how did you clone it. ?

You write that it is a 2 vCpu vm but is it running with the MultiCPU hal ?

What Nic type are you running ?

Also remove all old hardware driver.

/ Lars

// Lars Liljeroth -------------- *If you found this information useful, please consider awarding points for "Correct" or "Helpful". Thanks!!!
0 Kudos
weinstein5
Immortal
Immortal

Being 10 years old are you sure the O/S and application are multithreaded so they can take advantage of the second processor? W2K reuires a change in the HAL to utilize a second cpu - was the original physical machine a sigle cpu box? - try setting the vm to a single vcpu and see if performance improves -

If you find this or any other answer useful please consider awarding points by marking the answer correct or helpful
0 Kudos
fvogel
Contributor
Contributor

Hi Lars,

To clone it I told it to import the machine and it went out installed an agent on the physical machine and copied it onto the ESX. This is a hot clone. I was unable to cold clone it because i have the free version of vmware converter.

It came over as a 1 cpu machine an i added a second. As far as MultiCPU hal, i don't know what that is, so my gues is no. Can you elaborate on this?

As far as nic type, its just a normal vNIC like all the the others, it has access to my network and seems to be working fine. Network speed has not been an issue. If i need to elaborate more, tell me what your looking for on this.

Removed all the old hardware drivers, ok, I'll give this a shot. I guess this means i should uninstall all the system dirivers?

A couple of things i failed to mention before, i installed a current vmware tools and the HD's are IDE on the legacy machine but are SCSI on the VM. It imported it that way.

Thanks

fred

0 Kudos
weinstein5
Immortal
Immortal

Definitely power down the vm and drop the vcpu count to 1 and make sure vmware tools is indtalled - vmware tools will replace drivers with the vmware necessary drivers -

If you find this or any other answer useful please consider awarding points by marking the answer correct or helpful
0 Kudos
khughes
Virtuoso
Virtuoso

Hi Lars,

It came over as a 1 cpu machine an i added a second. As far as MultiCPU hal, i don't know what that is, so my gues is no. Can you elaborate on this?

Removed all the old hardware drivers, ok, I'll give this a shot. I guess this means i should uninstall all the system dirivers?

A couple of things i failed to mention before, i installed a current vmware tools and the HD's are IDE on the legacy machine but are SCSI on the VM. It imported it that way.

Thanks

fred

First off, you should probably remove that second vCPU from the box. Throwing CPUs at servers that don't utilize them actually hurts the performance not only of that box but could hurt your ESX enviroment. You first need to semi understand how ESX handles your CPUs.

Lets say you have a single duel core processor in your ESX server, that equals 2 usable cores. When you have a VM like the one you just imported, you gave it 2 vCPUs which means that for every instruction set that the VM wants to send, it needs to wait for 2 cores to be free at the same time in order to process that set. If you had a VM with only 1 vCPU, then it would only need 1 available core to process an instruction set. Granted if you have a larger server with lets say 2 quad core processors, that gives you 8 cores to work with which will make it easier for the VM with 2 vCPU to find available cores to process information but overall in a very general standpoint, there aren't many types of servers out there that can run better on multiple vCPUs.

With that being said, you said it was a single processor server to begin with which means that it has the single processor HAL. You can find this under the device manager, when you expand "Computer" shoudl say ACPI uniprocessor HAL (or something along that line). If you added a second vCPU and never changed that HAL, your system isn't actually taking advantage of it anyways. but ESX still sees the 2 vCPU assigned so it still treats it as if it was using both.

Another thing you might want to look into is cleaning up the ghosted device drivers, you can do this by going to the command prompt (if this is a windows box) type :

set devmgr_show_nonpresent_devices=1

devmgmt.msc

Click on the View menu bar and select "show hidden devices"

Once you do that it, you should be able to expand and see hidden devices which aren't being used by the system anymore. You can go ahead and remove like the old NIC drivers, sometimes the hard drive controllers (IDE) etc... One word of advice, when you're making these changes, make sure you take a snapshot of the server BEFORE, so if you accidently remove a device and your server blue screens, you can just revert back to before you made the change. Since this is a 10 yr old box, I wouldn't think it, but if it is running windows 2003 server, switch your hard drive drivers to LSI (again make sure you snapshot before you do this incase it errors).

  • Kyle

-- Kyle "RParker wrote: I guess I was wrong, everything CAN be virtualized "
Phil_White
Enthusiast
Enthusiast

I can't and won't speak for anyone else, but I will for me Smiley Happy

I have had nothing but horrendous performance from any Win2000 physical machine that I have converted to a VM. I have not found a solution to this and I really don't care any more because I have no reason to run a Win2k machine in my environment any more.

Good luck on finding a resolution.

0 Kudos
tgradig
Hot Shot
Hot Shot

If you are running 2CPU's make sure you upgrade the hal. You can upgrade the hal from the Device Manager, Computer area.

Other things to check are remove all Dell related software. Check for hidden devices like metioned before. If the server was an old SQL box, then you need to notify the SQL group to make sure they set their application to run on 1 or 2 CPU's.

Check your resource allocation and make sure you don't have a reservation set that might limit your server.

Disable Com Port devices if not in use.

Make sure you have the latest VMtools installed. Check to see if the Hardware Accelerations is set to full. You can find this in the advanced button of you display setting.

Tony G

0 Kudos
stumpr
Virtuoso
Virtuoso

I've run into a few VMs (never 2000 though, always 2003 VMs -- so take that with a grain of salt) where there is no obvious resource bottlenecks (no disk, no network, no cpu, nor memory). I've solved the issue by powering down the vm and adding a parameter in the vmx file.

monitor.idleLoopSpinUS = "4000"

Look at this VMware KB article.

It's sort of aimed at VMs that seem to be using up too much ESX host CPU usage without any apparent in VM guest CPU usage (so they tell you to lower the idleLoopSpin). But I've successfully solved VMs feeling sluggish on their desktop (console or rdp) as well as sluggish application response (most noticeable in web applications) where there was no apparent guest resource contention. You might be able to adjust the spin loop value to something between 2000 and 4000, though I've had the most success with the max setting.

Reuben Stump | http://www.virtuin.com | @ReubenStump
williambishop
Expert
Expert

I've had luck by changing the HAL, which replaces all hardware in the OS. This has worked at least twice for me. Change it to no apci or whichever you have to do. Reboot, add in the drivers it asks for, and you should be good to go.

Ita feri ut se mori sentiat
0 Kudos
LarsLiljeroth
Expert
Expert

I agree ( weinstein5 ). That set the vm to singele vCPU as the first thing. Instead of changing the HAL as i mentioned.

/lars

// Lars Liljeroth -------------- *If you found this information useful, please consider awarding points for "Correct" or "Helpful". Thanks!!!
0 Kudos
fvogel
Contributor
Contributor

I would like to thank you all for your comments.

Followed several pieces of advice. I first reduced it back to a single cpu. I followed the advice to remove the hidden drivers and I then modified the hal to utilize multiple cpus and then tried putting two on it. I can see that it is using both cpu's now. I continued to clean up what i could. I got my best boost after making the adjustment to the hidden drivers.

Unfortunatly after all of these things i only got a marginal imporvement in performace. I think i'm going to throw in teh towel on this windows 2000 box and just build a new 2003 or xp vm to do my builds on. I had hoped that virtualizing the old physical machine would make my builds go at a more ressonable speed. My ESX has 8 cpu's and 32 GB of ram and is not particularly taxed and i wanted that power to crush this build. I'm guessing its windows 2000 that is holding everything back. It currently takes over 2.5 hours to do a build on this VM, which is similar to that of the 10 year old physical pc. If i do the same build on my physical xp box it only takes a half hour.

Rebuliding the build machine will take some time; but i'll try to report if I get a significant imporvement in build time by switching platforms.

Fred

0 Kudos
tgradig
Hot Shot
Hot Shot

Windows 2000 isn't the problem. We have over 150 production 2000 servers running in our environment without a problem.

Tony G

0 Kudos
khughes
Virtuoso
Virtuoso

I agree, if he rebuilt the server using windows 2000 it would prob run fine, but if your going to rebuild it might as well use 2003 if you have the licenses for it shrug

Btw are you sure that whatever is running is made for multiple CPUs? If the program isn't designed for two even though you have decently beefy boxes it isn't going to take advantage and still could slow it down.

  • Kyle

-- Kyle "RParker wrote: I guess I was wrong, everything CAN be virtualized "
0 Kudos