Yeah... I wanted to explain it in detail in a longer post. If
necessary I'll do that as well.
I have a database process that's using 3G of memory. Then I have a
secondary process that's using about 500MB of memory. This leaves
about 500MB free for anything else. The box has 4GB of memory total...
No swap is needed.
... swappiness is set to zero.
I've verified that overcommit or other issues aren't getting in the
way as I can run the box without swap. This isn't possible when in
production though.
What's happening is that the kernel is deciding to swap out some
memory to disk in the (false) belief that it can free some up for
cache.
The problem is my database is already using its own cache so these are
conflicting philosophies here which make Linux perform in a
pathological way..
We're using O_DIRECT for our database which helps reduce the problem a
bit...... O_DIRECT bypasses the page cache and does all IO directly.
This means there isn't much pressure on the page cache and pages
aren't swapped out to disk. However, MySQL still needs to do reads on
misc files which aren't O_DIRECT so I end up swapping but at a much
slower rate.
What I want to do is either disable the page cache entirely or just
tell the OS to cache at max 10% of the available memory.
Thoughts?
Kevin
On Mon, May 5, 2008 at 12:28 PM, FD Cami <francois.cami@free.fr> wrote: