On Tue, Sep 07, 2004 at 09:24:31PM +0200, Dirk H. Schulz wrote: > Hi folks, > > I hope this is the right place for this kind of question: > > I want to run a server with more than 4 GB of RAM. I do not need > applications/processes to address more than 4 GB each. Let's say I want to > have 2 instances of apache on the machine, and each instance should address > a max of 4 GB. > > Do I need a 64Bit Linux then? Or can I install a 32Bit Linux on a Server > with 8 GB RAM, set up my 2 instances of apache, and that`s it? > > Sorry for that kind of basic question but I did not find any docs on that > googling around.
Ok, here are your options: 32bit kernel, 32bit user space: Each process gets 3GB of virtual address space. The kernel can divvy that up however it wants. You'll need to enable highmem support for that. If CPU performance isn't your bottleneck, it won't matter that you don't get to use the extra registers. You lose maybe 15% CPU performance, depending on what you're doing. (Compare SPEC scores breakdowns for AMD's submission, if you're curious.) This will be the most stable configuration, because you can just install i386 Sarge, and forget all about 64bit. (Yes, Opterons support PAE and all that's needed for a 32bit kernel to use lots of RAM.) The kernel has to use bounce buffers to move data around, because it can't map all the memory. The kernel uses the remaining 1GB of virtual address space for itself, and maps all the RAM it can. What's left is highmem. 64bit kernel, 32bit userspace: Each process gets 4GB of virtual address space. Disadvantage: you need a module-init-tools, iptables, and so on that can talk to the kernel. All the normal system calls by 32bit programs go through a translation layer (not much overhead, don't worry) so you can boot a 64bit kernel with root=/dev/path-to-i386-Sarge. You can install some 64bit libraries, or make some statically linked binaries, so you can run a few things 64bit. statically linked AMD64 iptables might be the best way to go. (you can debootstrap a 64bit chroot so you can apt-get install the stuff you need... Use dchroot to make your chroot convenient). The ia32->amd64 kernel translation layer works well, so while it might not be as stable as a fully i386 system, and you have to worry about special kernel interfaces that don't get 32bit translated, you don't have to worry about bugs in userspace programs like storing a pointer in an int variable. On an SMP system, the kernel will know about NUMA and be able to allocate memory that's attached to the CPU the requesting process is running on. 64bit kernel, 64bit userspace: Each process gets 64bit virtual address space. Same as above, but you have to worry about user-space too. Not all packages are available, and some of them have bugs because they truncate pointers to 32bits in some places. Just all around less stable still, not to mention that AMD64 Debian might not release with sarge, so security updates won't come from security.debian.org. You can install libraries so that you can run i386 binaries if you have any binary-only programs. (32bit code can't link to 64bit code at all, ever, on amd64. (not counting special translation layers like the kernel-userspace boundary).) 3D acceleration is only possible with 64/64 kernel/user, or 32/32, if that matters to you. 32bit kernel, 64bit userspace: not possible. -- #define X(x,y) x##y Peter Cordes ; e-mail: X([EMAIL PROTECTED] , des.ca) "The gods confound the man who first found out how to distinguish the hours! Confound him, too, who in this place set up a sundial, to cut and hack my day so wretchedly into small pieces!" -- Plautus, 200 BC