On Wed, 15 Dec 2010, Jason Qualkenbush wrote:

I'm being asked to build a 32bit system.  There is no specific reason for
this to be 32bit except my boss likes that there are less libraries to
install.  This is a CentOS 5 install and they way things work, this will
remain a 32bit install for the next four years (until a hardware refresh).

It's hard for me to explain why, but that just feels dirty to me.  When in
performance tuning classes, it was understood that you want 64bit over
32bit.  I can't use "people told me 64bit is better", but I keep reading
"unless you have a specific reason for 32bit, choose 64".  I need something
that has details.

limitations of x86 32 bit vs x86 64 bit

1. reduced memory access

32 bit is limited to addressing 4G nativly, more can be addressed, but at lower speeds.

  32 bit linux limits a single app to 1G of ram

32 bit linux limits many things to using the first 1G of physical address space, if that space fills up the system stops, so linux goes to great lengths to limit what uses this address space (this is the 'lowmem' problem)

2. reduced processor capibilities

in 32 bit mode, the processor has 8 32 bit registers available, in 64 bit the processor has 16 64 bit registers available.

there are many processor commands (including SSE) that were introduced over time on 32 bit processors, but are standard on 64 bit processors. code compiled for 64 bit can always assume that these commands are available, code compiled for 32 bit must have these things explicitly enabled (by specifying what subset of 32 bit processors the compiled code will run on), this means that code not optimized for a specific family of 32 bit processors must assume that these commands are not available.



limitations of 64 bit code vs 32 bit code

1. pointer/int sizes are twice as large


If your code is only dealing with 32 bit values, not dealing with moving large amounts of data around, and only needs a small number of registers, it's better for your code to be 32 bit code.

However, unless you have a _very_ small amount of ram on your system, you are almost certinly better off with a 64 bit kernel (the extra registers and chip-level commands available make a big difference)


So if you really want to test things, test three conditions.

1. 32 bit kernel, 32 bit userspace

2. 64 bit kernel, 32 bit userspace

3. 64 bit kernel, 64 bit userspace

you need to test under load where you would use lots of memory.



I did testing several years ago, and even on very old code ('80s vintage) that knows nothing about 64 bit, I got better performance on pure 64 bit systems than on pure 32 bit systems. I didn't bother to test the mixed case, it may be slightly better for some cases, but since I can take advantage of 64 bit userspace on some systems, it's not worth the support hassle for whatever performance increase I may see.

David Lang
_______________________________________________
Discuss mailing list
[email protected]
https://lists.lopsa.org/cgi-bin/mailman/listinfo/discuss
This list provided by the League of Professional System Administrators
 http://lopsa.org/
_______________________________________________
Discuss mailing list
[email protected]
https://lists.lopsa.org/cgi-bin/mailman/listinfo/discuss
This list provided by the League of Professional System Administrators
 http://lopsa.org/

Reply via email to