Re: [Patch v4 1/2] freezer: check OOM kill while being frozen

From: Michal Hocko
Date: Thu Sep 11 2014 - 10:28:37 EST


On Thu 11-09-14 16:32:50, Rafael J. Wysocki wrote:
> On Thursday, September 11, 2014 04:10:51 PM Michal Hocko wrote:
> > On Thu 11-09-14 16:26:56, Rafael J. Wysocki wrote:
> > > On Thursday, September 11, 2014 04:04:48 PM Michal Hocko wrote:
> > > > On Thu 11-09-14 16:17:56, Rafael J. Wysocki wrote:
> > > > [...]
> > > > > And I'm still wondering if the OOM killer may be made avoid killing frozen
> > > > > tasks.
> > > >
> > > > This is really tricky. OOM killer aims at the biggest memory hog. We
> > > > shouldn't ignore it just because it hides into the fridge... So even
> > > > if we "fix" oom killer to ignore frozen tasks (which is inherently
> > > > racy btw.) then we have a potential problem of freezer abuse (e.g. in
> > > > container environments). So I strongly believe that the OOM killer has
> > > > to be able to kill a frozen tasks.
> > >
> > > OK
> > >
> > > Is the OOM killer the only place where TIF_MEMDIE is set?
> >
> > Yes. To be precise, lowmemorykiller (staging android thingy), global OOM
> > killer and memcg OOM killer. Any other users would be an abuse.
>
> OK
>
> So can we ensure that those things don't trigger during system suspend (or
> equivalent) and then simply use the TIF_MEMDIE check in __refrigerator()?

That would require that no memory allocation triggers OOM killer during
suspend. I don't think this will work out. OOM killer is the last resort
action. We cannot simply give access to memory reserves just because the
current context is in the middle of suspend.

What is the worst thing that might happen when a task is killed in the
middle of suspend? I thought that suspend would fail after several
attempts to suspend all existing tasks.

--
Michal Hocko
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/