lkml.org 
[lkml]   [2009]   [Sep]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectAvoiding crash in out-of-memory situations
    Currently a number of simple while (1) malloc(n); processes can crash a 
    system even if resource limits are in place as one can only limit the
    memory usage of a process (not that of an user nor the total used by the
    userspace) and any otherwise reasonable nproc and memory limits can be
    circumvented by using more processes.

    The OOM killer is supposed to work as a fallback in these situations,
    but unfortunately the system still goes absolutely unresponsive for
    about 10 minutes whenever the OOM killer runs. It would seem that this
    happens because the kernel first gets rid of all buffers and caches,
    slowing things down to a halt, and the OOM killer activates only after
    nothing else can be done.

    In a more complex situation (e.g. the one that we just had on our server
    by accidentally running too many valgrind processes) this hang state can
    take very long, essentially requiring the server to be reseted the hard way.

    As there AFAIK is no existing remedy to this problem, I would suggest
    implementing either (a) per-user limits, (b) a memory reserve for the
    kernel (e.g. one could reserve 100 MB for the kernel/buffers/caches,
    giving less for the userspace to allocate even if that means having to
    kill processes) or (c) both of them.

    Or perhaps there is something that I missed?

    P.S. using or not using swap doesn't really affect the fundamental
    problem nor its symptoms, so please don't suggest that either way.


    \
     
     \ /
      Last update: 2009-09-01 15:27    [W:4.153 / U:1.544 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site