From: Bela Lubkin <email@example.com> Subject: Re: Maximum memory... Date: 21 Oct 2005 01:38:29 -0400 Message-ID: <firstname.lastname@example.org> References: <email@example.com>
<Iop0I6.3D2@stevedunn.ca> Stephen M. Dunn wrote: > In article <firstname.lastname@example.org> Jon Lapp <email@example.com> writes: > $What is the maximum amount of RAM supported by Openserver 5.0.4, 5.0.5 > $and 5.0.6? > > According to the FAQ, 5.0.4 supported 4 GB. The documentation for > 5.0.5 and 5.0.7 also says 4 GB max, so it's reasonable to assume > the same applies to 5.0.6. All of those releases will operate with and use 4GB of RAM. However, the number, severity and creativity of 4GB-related bugs decreases steadily with each successive release. All releases before 507 have a set of behaviors which, while not strictly related to 4GB, tends to cramp the system's style whenever you really _use_ a lot of RAM. The kernel distinguishes between several classes of memory usable for different purposes. There's "DMAABLE" memory, below 16MB, which is usable for ancient ISA direct memory access (DMA); "direct mapped", below 768MB, which is more convenient for certain kinds of device drivers; and "unmapped", which can only be used for user process memory and driver buffers operated by newer drivers that know how to use it. Notice that the "DMAABLE" area is tiny compared to the rest of the system. It comes out of a 16MB space, but certain parts of the kernel are firmly nailed down there to start with. It's under 10MB in a typical system. That's 1/400th of the memory in a 4GB system... Meanwhile, the kernel memory allocation functions _assume_ you require DMAABLE memory unless you tell them otherwise. This is for the benefit of ancient drivers which did in fact require DMAABLE, and had no idea that any other sort of memory existed. (The first release of the SCO Unix kernel supported a _maximum_ of 16MB RAM. Drivers which date back that far assume they can use any memory at all for ISA DMA.) Before OSR507, many many parts of the kernel were allocating DMAABLE memory "by mistake", that is, they called memory allocation functions without explicitly noting that they didn't need DMAABLE memory. As a result, the kernel could easily end up struggling to scrape together DMAABLE memory for purposes which really didn't need it. Between 506 and 507, the kernel was audited for such misuses of memory. 507 is much cleaner about only using DMAABLE for the few purposes that need it (in modern systems, this is essentially only the legacy floppy driver!) There's no reverse bottleneck because a request that doesn't require DMAABLE memory can be satisfied with DMAABLE, if that's all the kernel has available. As I remember it, NFS was one of the worst culprits in this area. You're more likely to be OK with 4GB pre-507 if you don't use NFS. These problems only happen if you're really using the memory. If you have 4GB but your active memory footprint is only 600MB, you're fine. >Bela<
Got something to add? Send me email.