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/