Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Other than memory size limits of 4GB, what is the penalty for running 32 bit applications on an OS running in 64 bit? For example. does a 32 bit application require that it's address space be allocated within the first 4 GB or does the OS and processor abstract this away from the application?

There has been a lot of push for 64 bit applications in the software community where I don't always foresee the applications requiring such a large amount of memory (e.g, Firefox), so I'm just curious of the benefits and pitfalls of running 32 bit applications on a 64 bit platform.

share|improve this question
add comment

4 Answers 4

up vote 4 down vote accepted

Do a google for "russinovich pushing limits" and you'll find a series of articles penned by the author of the sysinternals suite of tools for Windows on various aspects of memory usage by Windows.

I'm not sure there really are a lot of significant drawbacks to running 32 bit applications on a 64 bit OS. The biggest bonuses to running 64 on 64 are memory addressing and...that's a big one.

Even the latest version of OS X defaults to 32 bit (you hit 6 and 4 at bootup to start the 64 bit kernel, but you won't get all the kernel extensions to work properly as I recall). OS X has been a "mixed" OS for quite awhile.

The only drawbacks I've heard that impact people with 64 bit OS's involves drivers (some 32 bit drivers not working properly) and older machines not liking a 64 bit OS if the processor doesn't support it, and there's still a lot of older machines out there.

share|improve this answer
    
I'll elaborate a bit about 32 bit apps on 64 bit OS's. I remember seeing benchmarks showing there is some overhead to 64 bit programs being more bloated or slower in some circumstances, BUT in the real world I really haven't seen any significant impact from it. When that gets to be an issue no your server, chances are you needed to take steps to expand your performance beforehand because you're already pushing the limits of what the server can perform at. That's why I said "really are a lot of significant drawbacks". –  Bart Silverstrim Sep 5 '09 at 14:33
add comment

It's up to the developer to ensure that it works correctly since some things that need hooks to the 64-bit OS need to be accounted for. However, many applications work great on a 64-bit OS.

As a general principle, if your server's memory is 4GB or greater, going with 64-bit is the way to go. Even IIS is recommended by Microsoft to run 64-bit OS with 32-bit app pools (or IIS as a whole in 32-bit mode on WS03).

64-bit apps have more memory overhead which is one of the main things preventing a full move to 64-bit. Also, some applications don't perform as well on 64-bit. For example, ASP.NET does better in 32-bit app pools on a web server.

As far as any limits on the memory it can use, that's not a concern. The 64-bit OS breaks those boundaries and the 32-bit apps benefit.

share|improve this answer
    
If the server has more than 4 gig of memory, 64 bit is the only way to go so you can see all the memory :-) –  Bart Silverstrim Sep 5 '09 at 14:30
    
Not really. 32-bit OSes can access a lot of memory too (much more than 4GB) but it takes some extra changes to the OS like the /PAE and /3GB settings in boot.ini. That said, x64 removes other limitations, making it much better for high memory servers. –  Scott Forsyth - MVP Sep 6 '09 at 23:55
add comment

If your application will never use over 4GB of memory, there's no real advantage to having a 64 bit version. That said, most people with 64 bit O/S's want a 64 bit version of everything ... even if they don't need it.

share|improve this answer
add comment

The OS abstracts away where the memory comes from, it doesn't need to be the physically first 4Gbs.

One other penalty of running 32 bit app on a 64 bit OS is that app now needs to load a bunch of 32 bit dlls, and increase the memory usage on your machine.

dlls - atleast the code section - are shared among all applications that uses that dll in most cases. Your running 64 bit apps as well as the windows components itself will load and share the standard 64 dlls. When you start the first 32 bit app it'll need to load the 32 bit version of those dlls.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.