Skip navigation
VMware
36,230 Views 31 Replies Last post: Sep 4, 2009 6:16 PM by gkeiner RSS
1 2 3 Previous Next
paulo.meireles Master 999 posts since
Oct 29, 2004
Currently Being Moderated

Jan 10, 2006 3:43 AM

How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor

How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[b]Problem description[/b][/u]

It's commonly heard that you cannot revert a Windows Server 2003 back to Uniprocessor after upgrading to Multiprocessor - and then upgrade to Multiprocessor again. There are some "hacks" that involve manually replacing system files or editing .inf files, but these are, of course, unsupported. How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorThe solution described here involves no hacks, no scripting, no manual file replacement, no file editing, and even no command line! It only uses supported mechanisms available on the GUI, so I guess it should be a supported operation.[/u]

 

How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[u]Warning:[/u] The solution described here has only been tested on Windows Server 2003 machines on ACPI VMs.[/b]

 

How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[u]Common pitfalls[/u][/b]

It's considered good practice to start with uniprocessor machines and, only if needed, upgrade them to SMP. This is usually done by powering off the VM, adding a second CPU and powering it on. Windows Server 2003 does, then, detect the second CPU and convert it to an How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i] by itself, and all sems to be OK. The problem is, if we ever need to downgrade back to How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC[/i], we will no longer be able to; if we go back to one CPU, the machine won't "autoconfigure" itself again; it will remain as How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC.[/i] When this happens, the only options we have are either:

\- leaving the machine with the multiprocessor HAL/Kernel and decrease the number of CPUs to 1 (however, using the multiprocessor kernel on a uniprocessor machine involves some additional overhead), or

\- "Update Driver" to the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorAdvanced Configuration and Power Interface (ACPI) PC[/i] HAL/Kernel. Although all seems to work (and, as far as I know, there are no reports of problems arising from its use), there is a lot of FUD about doing this; an official clarification from Microsoft would be nice to have. Moreover, How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorif we install this HAL/Kernel, we won't be able to "Update Driver" to the multiprocessor HAL/Kernel again.[/u]

 

How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[b]The solution[/b][/u]

The trick, if it can be called so, it to use the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorRoll Back Driver[/i] feature on the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorDevice Manager[/i] instead of How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorUpdate Driver[/i]. It must, however, be used with caution, and there are some operations that must be done previously or it won't work. Step-by-step, here's how it's done:

 

\- Start from a powered-on Uniprocessor VM.

\- On the Device Manager, below "Computer", select How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC[/i], and "Update Driver" to the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i].

\- When asked, power the VM down.

\- Now - and only now! - add the second CPU to the VM configuration.

\- Power the machine on. Check that everything is OK.

\- Upgrade to SMP is complete!

 

\- Power down the VM.

\- Remove the second CPU from the VM configuration

\- Start the VM and go to the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorDevice Manager[/i]

\- See properties for How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i] and press the "Roll Back Driver" button

\- Reboot the VM when asked.

\- Downgrade to Uniprocessor is complete!

 

These two operations may now be repeated over and over again.

 

How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[b]How to handle machines that already have the SMP HAL/Kernel[/b][/u]

The "roll back" trick only works if - expectedly - there's something to "roll back" to. When we install a uniprocessor VM, shut it down, add a second CPU and let plug-n-play do its magic, Windows doesn't make a copy of the previous Kernel/HAL to which we can revert. Also, when we create an SMP VM or P2V an SMP server - which were both installed with the Multiprocessor kernel - there's no Uniprocessor to roll back to. So, the lack of a Uniprocessor HAL/Kernel to which to roll back happens in two scenarios:

\- if the OS has been installed on a SMP machine, or

\- if the Kernel and HAL have been upgraded "by themselves", by just adding a second CPU and rebooting the machine.

However, if you're comfortable with running with the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorAdvanced Configuration and Power Interface (ACPI) PC[/i] Hal/Kernel instead of How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC[/i], here's what you can do:

 

\- Start from a powered-on Multiprocessor VM

\- On the Device Manager, below "Computer", select How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i], and "Update Driver" to How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorAdvanced Configuration and Power Interface (ACPI) PC[/i]

\- When asked, power the VM down

\- Remove the second CPU from the VM configuration

\- Power the machine on. Check that everything is OK

\- Downgrade to Uniprocessor is complete!

 

\- Start the VM and go to the How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorDevice Manager[/i]

\- See properties for How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorAdvanced Configuration and Power Interface (ACPI) PC[/i] and press the "Roll Back Driver" button

\- Power down the VM when asked.

\- Add the second CPU

\- Power the machine on. Check that everything is OK

\- Rollback to Multiprocessor is complete!

 

Again, these operations may be repeated as many times as you like.

 

How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor[b]Last thoughts[/b][/u]

If you're building a physical Windows 2003 server with only one single-core Intel CPU, you might want to disable HyperThreading before installation, manually select How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Multiprocessor PC[/i] after installation and only then enable HyperThreading, so you can later revert to How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC[/i] if needed.

The most important thing to keep in mind is that How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorthe VM should never be powered on with 2 CPUs and the Uniprocessor HAL, or Windows will upgrade to Multiprocessor by itself and there will be no way back to How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessorACPI Uniprocessor PC.[/i][/b]

 

Paulo

devzero Master 2,776 posts since
Dec 27, 2004
Currently Being Moderated
1. Jan 10, 2006 1:02 AM in response to: paulo.meireles
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocesso

\*sigh*

 

(but a good description from you!)

 

thanks

roland

Mike_Laverick Virtuoso vExpert 4,279 posts since
Jan 5, 2004
Currently Being Moderated
2. Jan 10, 2006 7:07 AM in response to: devzero
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocesso

It is possible to do downgrade from Multi-to-Uni using Microsoft's DevCon utility...

 

It does work - but i cannot speak for the performance...

 

I wrote a white paper on how to achieve this:

 

http://www.rtfm-ed.co.uk

 

Kind Regards

Mike Laverick

Regards Mike Laverick RTFM Education http://www.rtfm-ed.co.uk
Mike_Laverick Virtuoso vExpert 4,279 posts since
Jan 5, 2004
Currently Being Moderated
4. Jan 11, 2006 1:18 AM in response to: paulo.meireles
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocesso

Sure... I will check out your steps and incorporate them (with credits) when I have time...

 

Regards

Mike

Regards Mike Laverick RTFM Education http://www.rtfm-ed.co.uk
skearney Hot Shot 292 posts since
Jan 28, 2004
Currently Being Moderated
6. Jan 12, 2006 2:16 PM in response to: paulo.meireles
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocesso

Has anybody tried the /HAL option available in boot.ini file as referenced in this KB?

 

http://support.microsoft.com/default.aspx?scid=kb;en-us;833721

nsmallcomb Novice 19 posts since
Dec 7, 2005
Currently Being Moderated
8. Feb 27, 2006 6:29 PM in response to: paulo.meireles
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor

In my experience I have found the following to be untrue:

 

Windows Server 2003 does, then, detect the second CPU and convert it to an ACPI Multiprocessor PC by itself, and all sems to be OK.

 

It usually does not detect the second CPU...although when it does...I would agree that all seems OK

 

Also, I have found that when I try to upgrade the driver to multiproc, I am not always presented with that option.  Does anybody have any thoughts on this?  Is there a specific .inf I can point the update at?

Mike_Laverick Virtuoso vExpert 4,279 posts since
Jan 5, 2004
Currently Being Moderated
9. Feb 28, 2006 6:37 AM in response to: nsmallcomb
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessor

In my experience I have found the following to be

untrue:

 

Windows Server 2003 does, then, detect the second CPU

and convert it to an ACPI Multiprocessor PC by

itself, and all sems to be OK.

 

It usually does not detect the second CPU...although

when it does...I would agree that all seems OK

 

Also, I have found that when I try to upgrade the

driver to multiproc, I am not always presented with

that option.  Does anybody have any thoughts on this?

Is there a specific .inf I can point the update at?

 

For the hell of it - I did a CPU upgrade on a Win2K3 box... Without having to update the HAL or ACPI - I have 2-CPU's when I originally had just one...

 

If you upgrade from 1-CPU to 2-CPU the MUI (can't speak for VirtualCenter) it warns you:

 

"This virtual machine is configured with a single processor. The guest operating system Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocessormay[/i] require additional tuning if this number is increased"

 

Operative word here is "may" - as the automatic upgrade doesn't work with all Windows OS - and you "may" have to upgrade the ACPI manual to ACPI MultiProcessor

 

If you downgrade from 1-CPU to 2-CPU the MUI warns you:

 

"This virtual machine is configured with more than one processor. If you choose a single processor configuration and the guest operating system is tuned for multiple processors, it may not boot and will probably degrade the performance of other virtual machines."

 

I think this is because it would be up to the operate to downgrade to ACPI Uni-Processor to make sure the HAL.DLL and ntsokernel.exe was correct for the operating system to "idle" correctly

 

Regards

Mike

Regards Mike Laverick RTFM Education http://www.rtfm-ed.co.uk
nsmallcomb Novice 19 posts since
Dec 7, 2005
Currently Being Moderated
10. Feb 28, 2006 9:08 AM in response to: Mike_Laverick
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocesso

Thank you for suggesting the idea that I use the MUI...I typically use VirtualCenter.

 

When I went into MUI to upgrade to two procs I found this message:

 

This virtual machine is using legacy virtual hardware and cannot be configured with more than a single processor. To upgrade the virtual machine's hardware, click here.

 

VirtualCenter provided no such message and let me change the number of processors without complaining.

 

Upon clicking "here" I am prompted with:

 

If this virtual machine's hardware is upgraded, it can only be powered on with ESX Server version 2.0 or later.  If you need to run this virtual machine on versions of ESX Server prior to 2.0, then click Cancel.  Upgrade virtual hardware now?

 

Of course I click OK because we are running ESX 2.5.2 across the board.

 

Now the plot thickens as the windows informs me that the operation timed out.  The cause for this was VirtualCenter.  Because it was open while I was working in the MUI, VC was prompting me to accept the upgrade prompt in the same way the MUI did.  After I responded affirmatively to the pending (backlogged) questions in VC, I clicked "here" again in the MUI then quickly acknowledged the same prompt in VirtualCenter.  The upgrade worked successfully in the MUI and I am now able to change it to 2 CPUs.

 

I boot the VM and still can't get the OS (Windows 2003 Server SP1) to recognize both CPU's.  I tried upgrading the driver, but am not presented with the SMP option.

 

I decided to use the P2V assistant on the drive.  When prompted to select the target VMware Product / Virtual Harware the "2 VCPU" options are all greyed out.  I am forced to choose a 1 VCPU option.

 

Thanks for this input thus far.  Any ideas?

Mike_Laverick Virtuoso vExpert 4,279 posts since
Jan 5, 2004
Currently Being Moderated
11. Feb 28, 2006 9:37 AM in response to: nsmallcomb
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocesso

Thank you for suggesting the idea that I use the

MUI...I typically use VirtualCenter.

 

When I went into MUI to upgrade to two procs I found

this message:

 

This virtual machine is using legacy virtual hardware

and cannot be configured with more than a single

processor. To upgrade the virtual machine's hardware,

click here.

 

VirtualCenter provided no such message and let me

change the number of processors without complaining.

 

Upon clicking "here" I am prompted with:

 

If this virtual machine's hardware is upgraded, it

can only be powered on with ESX Server version 2.0 or

later.  If you need to run this virtual machine on

versions of ESX Server prior to 2.0, then click

Cancel.  Upgrade virtual hardware now?

 

Of course I click OK because we are running ESX 2.5.2

across the board.

 

Now the plot thickens as the windows informs me that

the operation timed out.  The cause for this was

VirtualCenter.  Because it was open while I was

working in the MUI, VC was prompting me to accept the

upgrade prompt in the same way the MUI did.  After I

responded affirmatively to the pending (backlogged)

questions in VC, I clicked "here" again in the MUI

then quickly acknowledged the same prompt in

VirtualCenter.  The upgrade worked successfully in

the MUI and I am now able to change it to 2 CPUs.

 

I boot the VM and still can't get the OS (Windows

2003 Server SP1) to recognize both CPU's.  I tried

upgrading the driver, but am not presented with the

SMP option.

 

I decided to use the P2V assistant on the drive.

When prompted to select the target VMware Product /

Virtual Harware the "2 VCPU" options are all greyed

out.  I am forced to choose a 1 VCPU option.

 

Thanks for this input thus far.  Any ideas?

 

This is very interesting scenario (does that make me a sad person)

 

Firstly this statement...

 

This virtual machine is using legacy virtual hardware

and cannot be configured with more than a single

processor. To upgrade the virtual machine's hardware,

click here.

 

Its the case that a P2V VM can "inherit" some of the limitations of the physical hardware - for example ability to only host one CPU or the lack of ACPI Management. This is because when you install Windows - windows selects the approrpiate HAL for that "computer type". Only by updating the the HAL can we alter this.

 

There are some cases where updating the HAL is not support by Windows and therefore as consequence by VMware...

 

Since W2K3 Microsoft has chosen to "hide" from the GUI the ability to change the HAL in some circumstances - obstensible to aviod BSOD. I see this as their support adopting a CYA policy...

 

The only option they "offically" support is a "in place installation" - basically going through a repair installation of Windows. This always gives ACPI UniProcessor or MultiProcessor. The downside - is its a very long process, full of frightening caveats from Microsoft and could undo a lot of the system information our P2V was meant to "capture" in the first place.

 

I have found a method using Microsoft DevCon to force upgrades/downgrades of WinXP/2K/3 to any HAL to support any number of processors.

 

In my case I wanted upgrade W2K3 from 1-CPU to 2-CPU on non-ACPI compliant motherboard.

 

I wrote a whitepaper about my experiences here:

 

http://www.rtfm-ed.co.uk/docs/vmwdocs/whitepaper-upgrading-cpus-on-non-acpi-p2v.pdf

 

Perhaps you might find reading this useful... it outlines the DevCon method I meantioned earlier - and includes some useful MS KB Links as well...

 

Regards

Mike Laverick

url=http://www.rtfm-ed.co.ukRTFM Education[/url]

url=http://www.rtfm-ed.co.uk/?page_id=7Have you RTFM'd today?[/url]

Regards Mike Laverick RTFM Education http://www.rtfm-ed.co.uk
nsmallcomb Novice 19 posts since
Dec 7, 2005
Currently Being Moderated
12. Feb 28, 2006 9:43 AM in response to: Mike_Laverick
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocesso

Thank you Mike for your comments.

 

I think I found VMware's difinitive answer on page 29 of the P2V manual. (http://www.vmware.com/pdf/p2v21_manual.pdf) It says that the upgrade from Windows 2003 uniprocessor to smp is not supported:

 

Unsupported. No SMP upgrade path available through Device Manager.

 

I'll have a look at your "unsupported" solution.

Mike_Laverick Virtuoso vExpert 4,279 posts since
Jan 5, 2004
Currently Being Moderated
13. Feb 28, 2006 9:48 AM in response to: nsmallcomb
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocesso

Yup...

 

It's the exact same problem. I wish I'd realised sooner that it was! So it goes, as Kurt Vonnegut says...

 

You basically have two choices... an "in place (re)install" which could be quite dangerous - or this unsupported method. Using DevCon you can go in any direction with respect to CPU upgrades and downgrades & differences in motherboard support. Like any unsupported work around don't expect VMware or Microsoft to touch this with a barge pole.

 

I looked into this issue because I was curious - and always bugs me when MS remove options because I'm considered to stupid to let loose on something (I'm sure this isn't why they do it - it just feels like I am being treated a like a teenager who can't be trusted with Dad's gadgets!)

 

I think the biggest worry with processor DOWNgrades is what the performance will be like... especially CPU times and if the VM "idles" as expect when it is not busy processing threads...

 

Let us know how you get on...

 

 

Kind Regards

Mike

Regards Mike Laverick RTFM Education http://www.rtfm-ed.co.uk
nsmallcomb Novice 19 posts since
Dec 7, 2005
Currently Being Moderated
14. Mar 22, 2006 5:42 PM in response to: Mike_Laverick
Re: How to repeatedly upgrade Windows 2003 to SMP and revert to uniprocesso

My machine is ACPI. I mod'd the last three lines of your script to read:

 

devcon sethwid @ROOT\PCI_HAL\0000 := +ACPIAPIC_MP   > nul

devcon sethwid @ROOT\ACPI_HAL\0000 := + ACPIAPIC_MP  > nul

devcon update %windir%\inf\hal.inf ACPIAPIC_MP    > nul

 

Here is the output from your script:

 

====================================================

==Upgrading Standard PC to Multiprocessor PC ======================

====================================================

 

Please Wait

No hardware ID's modified.

'!MPS_UP' is not recognized as an internal or external command,

operable program or batch file.

ROOT\ACPI_HAL\0000                                          :

Modified 1 hardware ID(s).

'!MPS_UP' is not recognized as an internal or external command,

operable program or batch file.

devcon: Invalid use of sethwid.

For more information type: devcon help sethwid

devcon failed.

Done!

 

====================================================

==Script Completed=======================================

====================================================

 

====================================================

==Press any key to reboot the Virtual Machine=======================

====================================================

Bookmarked By (0)

Share This Page

Communities