The problem (bug) is that block device IO has to go through buffers that are below 1GB. The memory manager doesn't know this, so what happens is that the IO layer requests a block of memory below 1GB, and the swapout daemon (kswapd) then runs around like a madman trying to free pages, instead of shuffling pages that don't need to be below 1GB to higher memory addresses. Since many of the pages below 1GB can't be freed (they belong to active programs), the IO starves. With 1GB of memory, both the IO layer and the swapout daemon are working with the same view of memory, so the bug is concealed, and performance is good. I have heard of people trying 2GB, and having it work, but it didn't for me.
Right, I have seen a 2GB success story. Do you know if this is fixed in kernel 2.6.x? -- Benjamin Sherman Software Developer Iowa Interactive, Inc 515-323-3468 x14 firstname.lastname@example.org
Description: S/MIME Cryptographic Signature