Messages in this thread | | | Date | Fri, 31 Jul 2009 12:18:42 -0700 (PDT) | From | David Rientjes <> | Subject | Re: [patch -mm v2] mm: introduce oom_adj_child |
| |
On Fri, 31 Jul 2009, KAMEZAWA Hiroyuki wrote:
> > Can you help think of any names that start with oom_adj_* and are > > relatively short? I'd happily ack it. > > > There have been traditional name "effective" as uid and euid. > > then, per thread oom_adj as oom_adj > per proc oom_adj as effective_oom_adj > > is an natural way as Unix, I think. >
I don't think effective_oom_adj is a suitable name replacement for oom_adj_child since it doesn't imply that the value is a no-op for the thread itself and only serves a purpose when an mm is initialized for a child.
> > It livelocks if a thread is chosen and passed to oom_kill_task() while > > another per-thread oom_adj value is OOM_DISABLE for a thread sharing the > > same memory. > > > I say "why don't modify buggy selection logic?" > > Why we have to scan all threads ? > As fs/proc/readdir does, you can scan only "process group leader". > > per-thread scan itself is buggy because now we have per-process > effective-oom-adj. >
Without my patches to change oom_adj from task_struct to mm_struct, you'd need to scan all tasks and not just the tgids because their oom_adj values can differ amongst threads in the same thread group. So while it may now be possible to shorten the scan as a result of my approach, it isn't a solution itself to the problem.
> > How else do you propose the oom killer use oom_adj values on a per-thread > > basis without considering other threads sharing the same memory? > As I wrote. > per-process(signal struct) or per-thread oom_adj and add > mm->effecitve_oom_adj > > task scanning isn't necessary to do per-thread scan and you can scan > only process-group-leader. What's bad ? > If oom_score is problem, plz fix it to show effective_oom_score. >
When only using (and showing) mm->effective_oom_adj for a task, userspace will not be able to adjust /proc/pid/oom_score with /proc/pid/oom_adj as Documentation/filesystems/proc.txt says you can for a thread unless it exceeds effective_oom_adj.
| |