All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
To: Vasily Averin <vvs@virtuozzo.com>, Michal Hocko <mhocko@kernel.org>
Cc: Roman Gushchin <guro@fb.com>, Uladzislau Rezki <urezki@gmail.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	Shakeel Butt <shakeelb@google.com>,
	Mel Gorman <mgorman@techsingularity.net>,
	cgroups@vger.kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, kernel@openvz.org,
	Johannes Weiner <hannes@cmpxchg.org>,
	Vladimir Davydov <vdavydov.dev@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH memcg v3 2/3] mm, oom: do not trigger out_of_memory from the #PF
Date: Sun, 24 Oct 2021 00:01:07 +0900	[thread overview]
Message-ID: <e2a847a2-a414-2535-e3d1-b100a023b9d1@i-love.sakura.ne.jp> (raw)
In-Reply-To: <f5fd8dd8-0ad4-c524-5f65-920b01972a42@virtuozzo.com>

On 2021/10/23 22:20, Vasily Averin wrote:
>  /*
> - * The pagefault handler calls here because it is out of memory, so kill a
> - * memory-hogging task. If oom_lock is held by somebody else, a parallel oom
> - * killing is already in progress so do nothing.
> + * The pagefault handler calls here because some allocation has failed. We have
> + * to take care of the memcg OOM here because this is the only safe context without
> + * any locks held but let the oom killer triggered from the allocation context care
> + * about the global OOM.
>   */

Excuse me for a stupid question. I consider

  if (!mutex_trylock(&oom_lock))
    return;
  out_of_memory(&oc);
  mutex_unlock(&oom_lock);

here as the last resort (safeguard) when neither __alloc_pages_may_oom()
nor mem_cgroup_out_of_memory() can make progress. This patch says

  let the oom killer triggered from the allocation context care
  about the global OOM.

but what if the OOM killer cannot be invoked from the allocation context?
Is there a guarantee that all memory allocations which might result in
VM_FAULT_OOM can invoke the OOM killer?

WARNING: multiple messages have this Message-ID (diff)
From: Tetsuo Handa <penguin-kernel-1yMVhJb1mP/7nzcFbJAaVXf5DAMn2ifp@public.gmane.org>
To: Vasily Averin <vvs-5HdwGun5lf+gSpxsJD1C4w@public.gmane.org>,
	Michal Hocko <mhocko-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Roman Gushchin <guro-b10kYP2dOMg@public.gmane.org>,
	Uladzislau Rezki <urezki-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Vlastimil Babka <vbabka-AlSwsSmVLrQ@public.gmane.org>,
	Shakeel Butt <shakeelb-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	Mel Gorman
	<mgorman-3eNAlZScCAx27rWaFMvyedHuzzzSOjJt@public.gmane.org>,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	kernel-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org,
	Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>,
	Vladimir Davydov
	<vdavydov.dev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Andrew Morton
	<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Subject: Re: [PATCH memcg v3 2/3] mm, oom: do not trigger out_of_memory from the #PF
Date: Sun, 24 Oct 2021 00:01:07 +0900	[thread overview]
Message-ID: <e2a847a2-a414-2535-e3d1-b100a023b9d1@i-love.sakura.ne.jp> (raw)
In-Reply-To: <f5fd8dd8-0ad4-c524-5f65-920b01972a42-5HdwGun5lf+gSpxsJD1C4w@public.gmane.org>

On 2021/10/23 22:20, Vasily Averin wrote:
>  /*
> - * The pagefault handler calls here because it is out of memory, so kill a
> - * memory-hogging task. If oom_lock is held by somebody else, a parallel oom
> - * killing is already in progress so do nothing.
> + * The pagefault handler calls here because some allocation has failed. We have
> + * to take care of the memcg OOM here because this is the only safe context without
> + * any locks held but let the oom killer triggered from the allocation context care
> + * about the global OOM.
>   */

Excuse me for a stupid question. I consider

  if (!mutex_trylock(&oom_lock))
    return;
  out_of_memory(&oc);
  mutex_unlock(&oom_lock);

here as the last resort (safeguard) when neither __alloc_pages_may_oom()
nor mem_cgroup_out_of_memory() can make progress. This patch says

  let the oom killer triggered from the allocation context care
  about the global OOM.

but what if the OOM killer cannot be invoked from the allocation context?
Is there a guarantee that all memory allocations which might result in
VM_FAULT_OOM can invoke the OOM killer?

  reply	other threads:[~2021-10-23 15:01 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-18  8:13 [PATCH memcg 0/1] false global OOM triggered by memcg-limited task Vasily Averin
2021-10-18  8:13 ` Vasily Averin
2021-10-18  9:04 ` Michal Hocko
2021-10-18  9:04   ` Michal Hocko
2021-10-18 10:05   ` Vasily Averin
2021-10-18 10:05     ` Vasily Averin
2021-10-18 10:12     ` Vasily Averin
2021-10-18 10:12       ` Vasily Averin
2021-10-18 11:53     ` Michal Hocko
2021-10-18 11:53       ` Michal Hocko
     [not found]       ` <27dc0c49-a0d6-875b-49c6-0ef5c0cc3ac8@virtuozzo.com>
2021-10-18 12:27         ` Michal Hocko
2021-10-18 12:27           ` Michal Hocko
2021-10-18 15:07           ` Shakeel Butt
2021-10-18 15:07             ` Shakeel Butt
2021-10-18 16:51             ` Michal Hocko
2021-10-18 16:51               ` Michal Hocko
2021-10-18 17:13               ` Shakeel Butt
2021-10-18 18:52             ` Vasily Averin
2021-10-18 18:52               ` Vasily Averin
2021-10-18 19:18               ` Vasily Averin
2021-10-18 19:18                 ` Vasily Averin
2021-10-19  5:34                 ` Shakeel Butt
2021-10-19  5:34                   ` Shakeel Butt
2021-10-19  5:33               ` Shakeel Butt
2021-10-19  5:33                 ` Shakeel Butt
2021-10-19  6:42                 ` Vasily Averin
2021-10-19  6:42                   ` Vasily Averin
2021-10-19  8:47                   ` Michal Hocko
2021-10-19  8:47                     ` Michal Hocko
2021-10-19  6:30       ` Vasily Averin
2021-10-19  6:30         ` Vasily Averin
2021-10-19  8:49         ` Michal Hocko
2021-10-19  8:49           ` Michal Hocko
2021-10-19 10:30           ` Vasily Averin
2021-10-19 10:30             ` Vasily Averin
2021-10-19 11:54             ` Michal Hocko
2021-10-19 11:54               ` Michal Hocko
2021-10-19 12:04               ` Michal Hocko
2021-10-19 12:04                 ` Michal Hocko
2021-10-19 13:26                 ` Vasily Averin
2021-10-19 13:26                   ` Vasily Averin
2021-10-19 14:13                   ` Michal Hocko
2021-10-19 14:13                     ` Michal Hocko
2021-10-19 14:19                     ` Michal Hocko
2021-10-19 14:19                       ` Michal Hocko
2021-10-19 19:09                     ` Vasily Averin
2021-10-19 19:09                       ` Vasily Averin
2021-10-20  8:07                       ` [PATCH memcg v4] memcg: prohibit unconditional exceeding the limit of dying tasks Vasily Averin
2021-10-20  8:07                         ` Vasily Averin
2021-10-20  8:43                         ` Michal Hocko
2021-10-20  8:43                           ` Michal Hocko
2021-10-20 12:11                           ` [PATCH memcg RFC 0/3] " Vasily Averin
2021-10-20 12:11                             ` Vasily Averin
     [not found]                           ` <cover.1634730787.git.vvs@virtuozzo.com>
2021-10-20 12:12                             ` [PATCH memcg 1/3] mm: do not firce global OOM from inside " Vasily Averin
2021-10-20 12:12                               ` Vasily Averin
2021-10-20 12:33                               ` Michal Hocko
2021-10-20 12:33                                 ` Michal Hocko
2021-10-20 13:52                                 ` Vasily Averin
2021-10-20 13:52                                   ` Vasily Averin
2021-10-20 12:13                             ` [PATCH memcg 2/3] memcg: remove charge forcinig for " Vasily Averin
2021-10-20 12:13                               ` Vasily Averin
2021-10-20 12:41                               ` Michal Hocko
2021-10-20 12:41                                 ` Michal Hocko
2021-10-20 14:21                                 ` Vasily Averin
2021-10-20 14:21                                   ` Vasily Averin
2021-10-20 14:57                                   ` Michal Hocko
2021-10-20 14:57                                     ` Michal Hocko
2021-10-20 15:20                                     ` Tetsuo Handa
2021-10-20 15:20                                       ` Tetsuo Handa
2021-10-21 10:03                                       ` Michal Hocko
2021-10-21 10:03                                         ` Michal Hocko
2021-10-20 12:14                             ` [PATCH memcg 3/3] memcg: handle memcg oom failures Vasily Averin
2021-10-20 12:14                               ` Vasily Averin
2021-10-20 13:02                               ` Michal Hocko
2021-10-20 15:46                                 ` Vasily Averin
2021-10-20 15:46                                   ` Vasily Averin
2021-10-21 11:49                                   ` Michal Hocko
2021-10-21 11:49                                     ` Michal Hocko
2021-10-21 15:05                                     ` Vasily Averin
2021-10-21 15:05                                       ` Vasily Averin
2021-10-21 16:47                                       ` Michal Hocko
2021-10-21 16:47                                         ` Michal Hocko
2021-10-22  8:10                                         ` [PATCH memcg v2 0/2] memcg: prohibit unconditional exceeding the limit of dying tasks Vasily Averin
2021-10-22  8:10                                           ` Vasily Averin
     [not found]                                         ` <cover.1634889066.git.vvs@virtuozzo.com>
2021-10-22  8:11                                           ` [PATCH memcg v2 1/2] mm, oom: do not trigger out_of_memory from the #PF Vasily Averin
2021-10-22  8:11                                             ` Vasily Averin
2021-10-22  8:55                                             ` Michal Hocko
2021-10-22  8:55                                               ` Michal Hocko
2021-10-22  8:11                                           ` [PATCH memcg v2 2/2] memcg: prohibit unconditional exceeding the limit of dying tasks Vasily Averin
2021-10-22  8:11                                             ` Vasily Averin
2021-10-22  9:10                                             ` Michal Hocko
2021-10-22  9:10                                               ` Michal Hocko
2021-10-23 13:18                                               ` [PATCH memcg v3 0/3] " Vasily Averin
2021-10-23 13:18                                                 ` Vasily Averin
     [not found]                                               ` <cover.1634994605.git.vvs@virtuozzo.com>
2021-10-23 13:19                                                 ` [PATCH memcg v3 1/3] mm, oom: pagefault_out_of_memory: don't force global OOM for " Vasily Averin
2021-10-23 13:19                                                   ` Vasily Averin
2021-10-25  9:27                                                   ` Michal Hocko
2021-10-25  9:27                                                     ` Michal Hocko
2021-10-23 13:20                                                 ` [PATCH memcg v3 2/3] mm, oom: do not trigger out_of_memory from the #PF Vasily Averin
2021-10-23 13:20                                                   ` Vasily Averin
2021-10-23 15:01                                                   ` Tetsuo Handa [this message]
2021-10-23 15:01                                                     ` Tetsuo Handa
2021-10-23 19:15                                                     ` Vasily Averin
2021-10-25  8:04                                                     ` Michal Hocko
2021-10-25  8:04                                                       ` Michal Hocko
2021-10-26 13:56                                                       ` Tetsuo Handa
2021-10-26 13:56                                                         ` Tetsuo Handa
2021-10-26 14:07                                                         ` Michal Hocko
2021-10-26 14:07                                                           ` Michal Hocko
2021-10-25  9:34                                                   ` Michal Hocko
2021-10-25  9:34                                                     ` Michal Hocko
2021-10-23 13:20                                                 ` [PATCH memcg v3 3/3] memcg: prohibit unconditional exceeding the limit of dying tasks Vasily Averin
2021-10-23 13:20                                                   ` Vasily Averin
2021-10-25  9:36                                                   ` Michal Hocko
2021-10-25  9:36                                                     ` Michal Hocko
2021-10-27 22:36                                                     ` Andrew Morton
2021-10-27 22:36                                                       ` Andrew Morton
2021-10-28  7:22                                                       ` Vasily Averin
2021-10-28  7:22                                                         ` Vasily Averin
2021-10-29  7:46                                                         ` Greg Kroah-Hartman
2021-10-29  7:46                                                           ` Greg Kroah-Hartman
2021-10-29  7:58                                                       ` Michal Hocko
2021-10-29  7:58                                                         ` Michal Hocko
2021-11-12 23:48                         ` [PATCH memcg v4] " kernel test robot
2021-11-26  4:32                         ` kernel test robot
2021-10-21  8:03   ` [PATCH memcg 0/1] false global OOM triggered by memcg-limited task Vasily Averin
2021-10-21  8:03     ` Vasily Averin
2021-10-21 11:49     ` Michal Hocko
2021-10-21 11:49       ` Michal Hocko
2021-10-21 13:24       ` Vasily Averin
2021-10-21 13:24         ` Vasily Averin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e2a847a2-a414-2535-e3d1-b100a023b9d1@i-love.sakura.ne.jp \
    --to=penguin-kernel@i-love.sakura.ne.jp \
    --cc=akpm@linux-foundation.org \
    --cc=cgroups@vger.kernel.org \
    --cc=guro@fb.com \
    --cc=hannes@cmpxchg.org \
    --cc=kernel@openvz.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@techsingularity.net \
    --cc=mhocko@kernel.org \
    --cc=shakeelb@google.com \
    --cc=urezki@gmail.com \
    --cc=vbabka@suse.cz \
    --cc=vdavydov.dev@gmail.com \
    --cc=vvs@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.