OOM And Swappiness

Home » CentOS » OOM And Swappiness
CentOS 5 Comments

Hi All,

I have a server that has its swappiness set to 0. It is running a little tight on memory and so there have been a couple of events where the OOM_killer has been invoked and killed off MySQL, which you would expect.

Now if you have your swappiness at 0 then “A value of 0 instructs the kernel not to initiate swap until the amount of free and file-backed pages is less than the high water mark in a zone.”[1]

So even in this event should I expect to start swapping instead of invoking the oom_killer?

Is the logic Memory request -> OOM – > Can I swap? Y-> swap N-> OOM-Killer

Or as the OOM-Killer there to prevent an OOM Condition, that as the OOM
Condition is prevented by killing mysql and therefore we will never swap?

Any clarification on how this all works in this situation would be most helpful.

[1]
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/sysctl/vm.txt

Kind Regads

5 thoughts on - OOM And Swappiness

  • One thing that should be noted is that regardless of swappiness, overcommit might be an issue. If a single process is using most of the memory in a system, and attempts to fork(), as it will if it calls system(), then the system may require that there is enough memory for a second instance of that huge process.

    This is one of the reasons why swap should be as large or larger than system RAM.

    If you have very little swap, you should consider allocating more, or reviewing the overcommit options in addition to the swappiness settings.

  • Gordon Messmer wrote:

    Excerpt on heavy-duty servers. We’re certainly not going to allocate hundreds of gigs, or a terabyte or so, for swap. (Yes, we do have servers with that kind of RAM, and that’s not counting the small SGI
    supercomputer….)

    mark