Thoughts from the EPS Windows Server Performance Team
On the Windows Performance team we often run into issues with Windows Server 2003 32-bit scaling to support Enterprise workloads. There are a variety of low memory and performance issues that can occur due to the limitations of the 32-bit memory space. While we work to resolve those issues we also like to discuss the many advantages of making the switch to 64-bit Windows sooner rather than later. Today I would like to go over some of those advantages.
The most important advantage is that 64-bit Windows can address much more memory, both virtual as well as physical. As the chart below shows, some of the differences between 32-bit and 64-bit are very large.
Limit on x86
Limit on x64
Note – Chart assumes Windows Server 2003 32-bit without custom HAL in Datacenter, and Windows 2008 64-bit.
Some of the common issues you may see due to 32-bit kernel address limits are:
• Multi-user systems such as Windows Terminal Servers can only run a limited number of users before memory errors may occur. The goal on any Terminal Server is to run as many users as possible, with 70 or more users per server being a common goal. This is often not possible as kernel memory resources become exhausted long before all physical memory is consumed by users. This results in errors when additional users try to log onto the server. While it may be possible to tune some memory resources, the options are limited and the practical limit for users may be far lower than the goal. The only solution for 32-bit Windows is to add additional servers or reduce the load and/or number of applications run by each user. • Copying large files or doing large backups fail due to memory errors. As files have gotten much larger and total number of files on systems have grown sharply, the ability to address them becomes more difficult. Large file operations use a lot of system cache or non-paged pool memory. The only solution in 32-bit Windows is often to use unbuffered I/O or to break up a backup operation into multiple parts. • Systems that require the /3G (4GT tuning) switch in the boot.ini (to support Large_Address_Aware applications) may run out of Non-Paged pool memory or PTE’s. This is caused by Non-Paged pool memory being reduced from 256 MB normally to 128 MB with /3G and PTE’s also being significantly reduced. A common Microsoft application that requires /3GB is Exchange Server. While it is possible to tune this memory, it can be a complex and time consuming process. It often requires multiple changes with load testing, and as load and configurations change, additional tuning is required resulting in additional downtime on production systems.
Advantages of the flat memory model with 64-bit applications.
• Applications can manipulate large amounts of data more efficiently. Video editing and large financial applications are examples of programs that benefit from this the most. • Each application has better performance. Increased physical memory allows more applications to run simultaneously and remain completely resident in the system's main memory. • Applications can support more users. All or part of each application must be replicated for each user, which requires additional memory. • Each application has more memory for data storage and manipulation. Databases can store more of their data in the physical memory of the system. Data access is faster because disk reads are not necessary.
Security advantages of 64-bit Windows
· Buffer overflow protection - A buffer overflow occurs when a data buffer is populated with more data than it is designed to handle. In 64-bit editions of Windows Server, the first parameters of a procedure call are passed in registers. As a result, it is less likely that the buffer will overflow, because the correct values have to be set up in registers and the variables and addresses have to be aligned on the stack.
· Data execution protection - The 64-bit processors made by AMD and Intel include hardware support for data execution prevention (DEP). Windows Server uses DEP to prevent malicious code from being able to execute, even when a buffer overrun occurs. Even without a processor that supports DEP, Windows Server can detect code that is running in memory locations where it should not be.
· Patch Guard - Microsoft Patch Guard technology prevents non-Microsoft programs from patching the Windows kernel. This technology prevents kernel mode drivers from extending or replacing kernel services, including system service dispatch tables, the interrupt descriptor table (IDT), and the global descriptor table (GDT). Third-party software is also prevented from allocating kernel stacks or patching any part of the kernel.
All of these taken together result in a lower total cost of ownership of Windows 64-bit. Hardware is better utilized, uptime is increased and support cost is lower. At some point 32-bit systems will need to be retired. Better to do this ASAP and reap the benefits instead of being forced to do so when systems and software are no longer supported and still incurring the cost.
What is required to move to 64-bit Windows
• Hardware that supports 64-bit – Most systems manufactured in the last 5 or 6 years will support 64-bit Windows. Check with your hardware vendor and see if Windows 2008 X64 is supported on your server. Check that 64-bit drivers are available for all of the hardware in the system. • Verify application compatibility with 64-bit – Most 32-bit applications will run well or even better on 64-bit Windows. 64-bit Windows provides a subsystem called WOW64 that provides emulation for 32-bit applications. In addition, the Microsoft Application Compatibility Toolkit provides a framework for testing compatibility and implementing application shims for resolving common application compatibility issues when moving applications to a newer version of Windows. Note: 16-bit applications are not supported on 64-bit Windows as there is no 16-bit WOW subsystem. Therefore 16-bit applications will need to be replaced with 32-bit or preferably 64-bit compatible versions.
I hope this information will show you the advantages of moving to 64-bit Windows 2008 or Windows Server 2008 R2 as soon as possible.
Thanks for you time,
Great post. While some of these restrictions also apply to workstations, are you planning on writing a similar post regarding client systems?
the text applies to Client Windows, too. Only remove the text about Windows Terminal Servers and multi users. The rest is the same.
For Client Windows with 4GB I recommend the 32Bit version with a hacked PAE kernel, because the 750MB you can use more with the 64Bit version are used by Windows itself. So you have no (real) benefit from using the 64Bit version except the higher space usage, the need to install several software in 32Bit and 64Bit.
Passing parameters in registers does not reduce the odds of buffer overflows. Also note that that 'advantage' applies to 64-bit processes on 64-bit Windows -- that is an important distinction to make.
The DEP advantage is also fictional. Hardware DEP exists on 32-bit Windows as well. If your processor can support 64-bit Windows then it can support hardware DEP on 32-bit Windows.
The advantage of 64-bit Windows is having access to more memory, period, and most serious users have moved already.
While the advantages of 64-bit are obvious, Microsoft hasn't handled the migration of shell extensions from 32-bit to 64-bit smoothly. 32-bit shell extensions should somehow work with 64-bit Explorer through some intermediate process.
install this Program:
It does what you look for:
"WOW64Menu allows using shell context menu of 32-bit applications on x64 editions of Windows. It adds "Show WOW64 Menu" command to context menu of objects on Desktop and in Windows Explorer. When choosing this command a new context menu including 32-bit applications will be shown."
@Andre.Ziegler, I am already using it and boy was I overjoyed when I came across it last year! It definitely allows me to use and access 32-bit context menu and 32-bit property sheet shell extensions. But something like this should be done by MS and built-in. Plus there are other shell extension types for which MS needs to build an interoperability bridge.
I am using autocad 2008 on a windows 7, 32 bit system with i7 processor with 4 gb ram and 600 gb hard disc. can i shift to 64 bit system and get better speed ?