[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: perspectives on 32 bit vs 64 bit



Faheem Mitha wrote:


Dear People,

I have an Opteron server, on which I am running the AMD64 Debian port. For various reasons, I'm contemplating going back to 32 bit.

The major reason is that aside from the packages in the AMD64 Debian archive, it is not always easy to find Debian packages for AMD64, since i386 is still very much the default. Also, not all software compiles with AMD64.

There should be no need to go "back to 32-bit" for this reason.
Please note that the opteron, in 64-bit mode with a 64-bit kernel
running and all the 64-bit software you can get, is still capable of
running the odd 32-bit program just fine.



I am aware that 64 bit computing has considerable advantages as well.

Indeed, so get the best of both worlds:
* 64-bit performance for all software that _is_ ported, which is most
 of it,
* and 32-bit software for those few programs who either are proprietary
 or proved surprisingly hard to port.


I'm looking for perspectives from people who have experience with both, and what their feelings about this are.

I run both kinds of software on my home machine.  Almost everything
64-bit, but a 32-bit chroot so I can run a 32-bit webbrowser in order
to use 32-bit java/flash plugins.   (There is as yet no good 64-bit
java webbrowser plugin, although there is a 64-bit java.)


Specifically, I was looking for clarifications about memory issues. I have looked at stuff on the web, but am still confused.

What is the 4 Gig limit for 32 bit processors that people talk about? Does this mean that each process/thread can only get a limit of 4 Gig? Is there any workaround for this?

32-bit programs cannot address more than 4GB, because that's
all you can address in a 32-bit pointer.  Various trickery exists that
lets 32-bit intel machines access more than 4GB _in total_ (but still
limited to 4GB per process), but these tricks robs you of some performance!

There are no such problems with 64 bit. Of course there is a limit,
but it is at 17179869184 GB. Nothing to worry about today. :-)

What are the other limits? I read elsewhere that a 32 bit Linux system has an effective limit of 16 Gig usable memory total.

The limit is 4GB.  Intel has various tricks to up this limit a bit, all with
some performance impact and limitations. The main limitation of course,
is that one _single_ process won't get more than 4GB anyway. (Well,
you can theoretically address more, but you definitely don't want
to do the work necessary to do that.  (First, make a compiler to make
such code, then port the kernel to use 48-bit segmented pointers,
by the time you're finished all 32-bit hw is obsolete and people will
be worrying more about the Y10K problem. :-)

It is so much easier to just go 64-bit, and then
"2GB" or "4GB" isn't special numbers at all any more. A single process
can use billions of GB, if you can afford a machine that big. A single
data structure can be bigger than 4GB . . .

Helge Hafting



Reply to: