I recently migrated the IIS Aid website to a new Windows 2008 server, and as a part of that migration I had to evaluate if it made sense to upgrade from the trusty old 32-bit operating environment to the newer 64-bit version. It was tempting, if for nothing else to future proof myself as much as possible as 64-bit is were we are headed (Windows 2008 Server is actually the last 32-bit Server operating system to be released by Microsoft). At the time I was working for one of the bigger world banks, and even there a good proportion of new servers I was building were not 64-bit. In the end I decided to stick with the 32-bit platform for the following reasons.
Available 64-bit binaries
Probably the biggest single point which discouraged me from moving to a 64-bit operating system was the fact that most of the applications and services I use on my server are not available in 64-bit binaries. Although not strictly a problem, it did negate the major advantage of moving to a 64-bit platform as the majority of my operating environment was still reliant on 32-bit code.
Wow added layer of complexity
Using 32-bit code on a 64-bit operating system has been possible with Windows all along by using Windows on Windows (WoW). This functionality is vital to Windows for the cross over to 64-bit as unlike Linux, Windows applications are almost always only available as compiled binaries with no access to the source code to compile your own. Until the majority of these applications are available in 64-bit, Windows will need to keep this WoW functionality. As I see it WoW was an added layer of complexity, and while using WoW in all probability would not cause any issues, it was the possibility that it might in addition to the fact it brought no real advantage to the table that helped me decide to stay with a 32-bit operating system.
Modest memory requirements
Probably the biggest limitation of using a 32-bit operating system is the fact that it can only address 4GB of physical memory. While there are ways around this, it is probably generally better to consider moving to a 64-bit platform if your memory requirements are above this. In my case I have very modest memory requirements, and still had significant room for growth before the 4GB limit became an issue. So in my case there was no reason to factor in the 4GB RAM limitation of the 32-bit operating system into my decision.
64-bit binaries larger than 32-bit
Although not a great issue in the scheme of things, the fact is that 64-bit binaries are larger than 32-bit binaries. This means they consume more hard disk and physical memory space than their 32-bit cousins. Server rental is not cheap, and the price quickly escalates as soon as you need more hardware resources. As using 64-bit was not going to really bring any advantage to my environment, the prospect of paying extra rental for using 64-bit did not make a lot of sense.
Conclusion
There a probably several other factors I could have taken into account when making my decision on whether or not to use 64-bit Windows, however the ones discussed above were enough to convince me that at this stage it was not worth investigating further. At this stage I would say that using 64-bit Windows only really makes sense for larger environments were you have dedicated servers for specific tasks, i.e database servers, application server, etc). If your memory requirements are safely inside 4GB and you are using your server to host multiple services and applications as I am, then there is a very good chance that there is no real advantage in migrating to a 64-bit operating system (especially if you only have access to 32-bit binaries for your applications and services). In the end though, it really is a decision that should be weighed up carefully for your specific environment. If you have any comments or feedback on this article, please post a comment below. If you have any questions about your specific environment please post them in the forums.