bmarkus:
I'm sure I need a 64-bit system since processes will definitely chew up more than 4GB of memory
in total at one time. Upon further investigation/learning it seems I don't need 64-bit applications, though... as long as each process doesn't need to access more than 3GB of memory (which seems to be the userland default for linux... need to check core64, though).
For python, this means splitting tasks up with multiprocessing (or os.fork) vs threads to avoid total combined memory access > 3 GB (no single task will do it). I'll also be using postgresql, but it is be fork-based and each process there shouldn't need more than 3 GB either.
So... it appears that 32-bit apps on a 64-bit core should be fine from a memory perspective. Or at least so I understand so far
. If I want to look at the trade-off between use of 64bit instructions and dragging 64-bit pointers everywhere, I'll have to do some benchmarking at some point.
Rich:
Thanks for the comments. What you say makes perfect sense. I have no idea what % of the time would be spent using the new/faster instruction sets, but I could be quite high beneficial or there isn't a massive point in beefing up instruction sets past what is available for a 80486. eg: Why not drop down to i386? The
instruction set history shows that not much was added with the 486, at least from an integer instructions perspective. My guess is that the integrated FPU in the 80486 may have something to do with it, but this guess only makes sense if
-march=i486 includes the i487 instruction set where
-march=i386 doesn't include the i387 set... which may make sense since it wasn't integrated. But then again, not all 486 chips had the FPU either.
If I'm right about
-march=i486 being the "first" to provide FPU instructions, it is a clear minimum baseline to require, but has there been nothing beyond that that is of large enough benefit to bump the baseline?
In the end I'm sure I'll stick with the recommended/proven
-march=i486 and
-mtune=i686, but I figure the questions were worth asking.
At the very least, looking into this has made me have a better understanding of what the Gentoo crowd is about. It also makes me wonder what the heck the larger distros (Debian, RHEL, or even Windows) do regarding instruction set usage for performance+portability of libs, or how much is abstracted out by the OS-provided libraries.