Benjamin Sherman said on Wed, Jan 28, 2004 at 03:16:56PM -0600: > >I've got some machines in nearly the same configuration. What I ended up > >doing was to put an `append="mem=1G"' in the lilo.conf boot stanza for the > >kernel I was using, and rebooted the machine in question. > > > >This does reduce the available memory in the machine to 1GB, but solves the > >IO problem. In my case, it was much faster, even though MySQL couldn't > >buffer nearly as much as with 4GB. > Thanks, Mark. I will probably try this with 3GB instead of 1GB. Did you try > that?
Yes; it didn't work. 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. M
pgpoDfLP7KTv2.pgp
Description: PGP signature