A few questions below. On 07/12/06, Chris Friesen <[EMAIL PROTECTED]> wrote:
The kernel currently has a way to adjust the oom-killer score via /proc/<pid>/oomadj. However, to adjust this effectively requires knowledge of the scores of all the other processes on the system. I'd like to float an idea (which we've implemented and been using for some time) where the semantics are slightly different: We add a new "oom_thresh" member to the task struct. We introduce a new proc entry "/proc/<pid>/oomthresh" to control it.
How does "oomthresh" and "oomadj" affect each other?
The "oom-thresh" value maps to the max expected memory consumption for that process. As long as a process uses less memory than the specified threshold, then it is immune to the oom-killer.
Default "oomthresh" value for a new process is 0 (zero) I assume - right? If not, then I'd suggest that it should be. What happens when a process fork()s? Does the child enherit the parents "oomthresh" value? Would it make sense to make "oomthresh" apply to process groups instead of processes?
On an embedded platform this allows the designer to engineer the system and protect critical apps based on their expected memory consumption. If one of those apps goes crazy and starts chewing additional memory then it becomes vulnerable to the oom killer while the other apps remain protected.
What happens in the case where the OOM killer really, really needs to kill one or more processes since there is not a single drop of memory available, but all processes are below their configured thresholds?
If a patch for the above feature was submitted, would there be any chance of getting it included? Maybe controlled by a config option?
Impossible to know without posting the patch for review :) -- Jesper Juhl <[EMAIL PROTECTED]> Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html Plain text mails only, please http://www.expita.com/nomime.html - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

