From: Roman Gushchin <guro@fb.com>
To: linux-mm@kvack.org
Cc: Roman Gushchin <guro@fb.com>, Michal Hocko <mhocko@kernel.org>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
David Rientjes <rientjes@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Tejun Heo <tj@kernel.org>,
kernel-team@fb.com, cgroups@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [v10 0/6] cgroup-aware OOM killer
Date: Wed, 4 Oct 2017 16:46:32 +0100 [thread overview]
Message-ID: <20171004154638.710-1-guro@fb.com> (raw)
This patchset makes the OOM killer cgroup-aware.
v10:
- Separate oom_group introduction into a standalone patch
- Stop propagating oom_group
- Make oom_group delegatable
- Do not try to kill the biggest task in the first order,
if the whole cgroup is going to be killed
- Stop caching oom_score on struct memcg, optimize victim
memcg selection
- Drop dmesg printing (for further refining)
- Small refactorings and comments added here and there
- Rebase on top of mm tree
v9:
- Change siblings-to-siblings comparison to the tree-wide search,
make related refactorings
- Make oom_group implicitly propagated down by the tree
- Fix an issue with task selection in root cgroup
v8:
- Do not kill tasks with OOM_SCORE_ADJ -1000
- Make the whole thing opt-in with cgroup mount option control
- Drop oom_priority for further discussions
- Kill the whole cgroup if oom_group is set and it's
memory.max is reached
- Update docs and commit messages
v7:
- __oom_kill_process() drops reference to the victim task
- oom_score_adj -1000 is always respected
- Renamed oom_kill_all to oom_group
- Dropped oom_prio range, converted from short to int
- Added a cgroup v2 mount option to disable cgroup-aware OOM killer
- Docs updated
- Rebased on top of mmotm
v6:
- Renamed oom_control.chosen to oom_control.chosen_task
- Renamed oom_kill_all_tasks to oom_kill_all
- Per-node NR_SLAB_UNRECLAIMABLE accounting
- Several minor fixes and cleanups
- Docs updated
v5:
- Rebased on top of Michal Hocko's patches, which have changed the
way how OOM victims becoming an access to the memory
reserves. Dropped corresponding part of this patchset
- Separated the oom_kill_process() splitting into a standalone commit
- Added debug output (suggested by David Rientjes)
- Some minor fixes
v4:
- Reworked per-cgroup oom_score_adj into oom_priority
(based on ideas by David Rientjes)
- Tasks with oom_score_adj -1000 are never selected if
oom_kill_all_tasks is not set
- Memcg victim selection code is reworked, and
synchronization is based on finding tasks with OOM victim marker,
rather then on global counter
- Debug output is dropped
- Refactored TIF_MEMDIE usage
v3:
- Merged commits 1-4 into 6
- Separated oom_score_adj logic and debug output into separate commits
- Fixed swap accounting
v2:
- Reworked victim selection based on feedback
from Michal Hocko, Vladimir Davydov and Johannes Weiner
- "Kill all tasks" is now an opt-in option, by default
only one process will be killed
- Added per-cgroup oom_score_adj
- Refined oom score calculations, suggested by Vladimir Davydov
- Converted to a patchset
v1:
https://lkml.org/lkml/2017/5/18/969
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: David Rientjes <rientjes@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: kernel-team@fb.com
Cc: cgroups@vger.kernel.org
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org
Roman Gushchin (6):
mm, oom: refactor the oom_kill_process() function
mm: implement mem_cgroup_scan_tasks() for the root memory cgroup
mm, oom: cgroup-aware OOM killer
mm, oom: introduce memory.oom_group
mm, oom: add cgroup v2 mount option for cgroup-aware OOM killer
mm, oom, docs: describe the cgroup-aware OOM killer
Documentation/cgroup-v2.txt | 51 +++++++++
include/linux/cgroup-defs.h | 5 +
include/linux/memcontrol.h | 34 ++++++
include/linux/oom.h | 12 ++-
kernel/cgroup/cgroup.c | 10 ++
mm/memcontrol.c | 248 +++++++++++++++++++++++++++++++++++++++++++-
mm/oom_kill.c | 209 ++++++++++++++++++++++++-------------
7 files changed, 491 insertions(+), 78 deletions(-)
--
2.13.6
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Roman Gushchin <guro@fb.com>
To: <linux-mm@kvack.org>
Cc: Roman Gushchin <guro@fb.com>, Michal Hocko <mhocko@kernel.org>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
David Rientjes <rientjes@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Tejun Heo <tj@kernel.org>, <kernel-team@fb.com>,
<cgroups@vger.kernel.org>, <linux-doc@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: [v10 0/6] cgroup-aware OOM killer
Date: Wed, 4 Oct 2017 16:46:32 +0100 [thread overview]
Message-ID: <20171004154638.710-1-guro@fb.com> (raw)
This patchset makes the OOM killer cgroup-aware.
v10:
- Separate oom_group introduction into a standalone patch
- Stop propagating oom_group
- Make oom_group delegatable
- Do not try to kill the biggest task in the first order,
if the whole cgroup is going to be killed
- Stop caching oom_score on struct memcg, optimize victim
memcg selection
- Drop dmesg printing (for further refining)
- Small refactorings and comments added here and there
- Rebase on top of mm tree
v9:
- Change siblings-to-siblings comparison to the tree-wide search,
make related refactorings
- Make oom_group implicitly propagated down by the tree
- Fix an issue with task selection in root cgroup
v8:
- Do not kill tasks with OOM_SCORE_ADJ -1000
- Make the whole thing opt-in with cgroup mount option control
- Drop oom_priority for further discussions
- Kill the whole cgroup if oom_group is set and it's
memory.max is reached
- Update docs and commit messages
v7:
- __oom_kill_process() drops reference to the victim task
- oom_score_adj -1000 is always respected
- Renamed oom_kill_all to oom_group
- Dropped oom_prio range, converted from short to int
- Added a cgroup v2 mount option to disable cgroup-aware OOM killer
- Docs updated
- Rebased on top of mmotm
v6:
- Renamed oom_control.chosen to oom_control.chosen_task
- Renamed oom_kill_all_tasks to oom_kill_all
- Per-node NR_SLAB_UNRECLAIMABLE accounting
- Several minor fixes and cleanups
- Docs updated
v5:
- Rebased on top of Michal Hocko's patches, which have changed the
way how OOM victims becoming an access to the memory
reserves. Dropped corresponding part of this patchset
- Separated the oom_kill_process() splitting into a standalone commit
- Added debug output (suggested by David Rientjes)
- Some minor fixes
v4:
- Reworked per-cgroup oom_score_adj into oom_priority
(based on ideas by David Rientjes)
- Tasks with oom_score_adj -1000 are never selected if
oom_kill_all_tasks is not set
- Memcg victim selection code is reworked, and
synchronization is based on finding tasks with OOM victim marker,
rather then on global counter
- Debug output is dropped
- Refactored TIF_MEMDIE usage
v3:
- Merged commits 1-4 into 6
- Separated oom_score_adj logic and debug output into separate commits
- Fixed swap accounting
v2:
- Reworked victim selection based on feedback
from Michal Hocko, Vladimir Davydov and Johannes Weiner
- "Kill all tasks" is now an opt-in option, by default
only one process will be killed
- Added per-cgroup oom_score_adj
- Refined oom score calculations, suggested by Vladimir Davydov
- Converted to a patchset
v1:
https://lkml.org/lkml/2017/5/18/969
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: David Rientjes <rientjes@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: kernel-team@fb.com
Cc: cgroups@vger.kernel.org
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org
Roman Gushchin (6):
mm, oom: refactor the oom_kill_process() function
mm: implement mem_cgroup_scan_tasks() for the root memory cgroup
mm, oom: cgroup-aware OOM killer
mm, oom: introduce memory.oom_group
mm, oom: add cgroup v2 mount option for cgroup-aware OOM killer
mm, oom, docs: describe the cgroup-aware OOM killer
Documentation/cgroup-v2.txt | 51 +++++++++
include/linux/cgroup-defs.h | 5 +
include/linux/memcontrol.h | 34 ++++++
include/linux/oom.h | 12 ++-
kernel/cgroup/cgroup.c | 10 ++
mm/memcontrol.c | 248 +++++++++++++++++++++++++++++++++++++++++++-
mm/oom_kill.c | 209 ++++++++++++++++++++++++-------------
7 files changed, 491 insertions(+), 78 deletions(-)
--
2.13.6
next reply other threads:[~2017-10-04 15:46 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-04 15:46 Roman Gushchin [this message]
2017-10-04 15:46 ` [v10 0/6] cgroup-aware OOM killer Roman Gushchin
2017-10-04 15:46 ` [v10 1/6] mm, oom: refactor the oom_kill_process() function Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
[not found] ` <20171004154638.710-2-guro-b10kYP2dOMg@public.gmane.org>
2017-10-04 19:14 ` Johannes Weiner
2017-10-04 19:14 ` Johannes Weiner
2017-10-04 19:14 ` Johannes Weiner
2017-10-04 15:46 ` [v10 2/6] mm: implement mem_cgroup_scan_tasks() for the root memory cgroup Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 19:15 ` Johannes Weiner
2017-10-04 19:15 ` Johannes Weiner
2017-10-04 20:10 ` David Rientjes
2017-10-04 20:10 ` David Rientjes
2017-10-04 15:46 ` [v10 3/6] mm, oom: cgroup-aware OOM killer Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 19:27 ` Johannes Weiner
2017-10-04 19:27 ` Johannes Weiner
2017-10-04 19:51 ` Roman Gushchin
2017-10-04 19:51 ` Roman Gushchin
2017-10-04 19:51 ` Roman Gushchin
2017-10-04 20:17 ` David Rientjes
2017-10-04 20:17 ` David Rientjes
[not found] ` <alpine.DEB.2.10.1710041316120.67374-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
2017-10-04 20:22 ` Roman Gushchin
2017-10-04 20:22 ` Roman Gushchin
2017-10-04 20:22 ` Roman Gushchin
2017-10-04 20:31 ` Johannes Weiner
2017-10-04 20:31 ` Johannes Weiner
2017-10-05 11:14 ` Michal Hocko
2017-10-05 11:14 ` Michal Hocko
2017-10-04 19:48 ` Shakeel Butt
2017-10-04 19:48 ` Shakeel Butt
2017-10-04 20:15 ` Roman Gushchin
2017-10-04 20:15 ` Roman Gushchin
2017-10-04 21:24 ` Shakeel Butt
2017-10-04 21:24 ` Shakeel Butt
[not found] ` <CALvZod45ObeQwq-pKeqyLe2bNwfKAr0majCbNfqPOEJL+AeiNw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-10-05 10:27 ` Roman Gushchin
2017-10-05 10:27 ` Roman Gushchin
2017-10-05 10:27 ` Roman Gushchin
[not found] ` <20171005102707.GA12982-2xczL/1GIl5a1dPMsufgnw2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2017-10-05 11:12 ` Michal Hocko
2017-10-05 11:12 ` Michal Hocko
2017-10-05 11:12 ` Michal Hocko
2017-10-05 11:45 ` Roman Gushchin
2017-10-05 11:45 ` Roman Gushchin
[not found] ` <20171004154638.710-4-guro-b10kYP2dOMg@public.gmane.org>
2017-10-04 20:27 ` David Rientjes
2017-10-04 20:27 ` David Rientjes
2017-10-04 20:27 ` David Rientjes
2017-10-04 20:41 ` Johannes Weiner
2017-10-04 20:41 ` Johannes Weiner
2017-10-05 8:40 ` David Rientjes
2017-10-05 8:40 ` David Rientjes
2017-10-05 10:27 ` Johannes Weiner
2017-10-05 10:27 ` Johannes Weiner
2017-10-05 21:53 ` David Rientjes
2017-10-05 21:53 ` David Rientjes
2017-10-05 10:44 ` Roman Gushchin
2017-10-05 10:44 ` Roman Gushchin
2017-10-05 22:02 ` David Rientjes
2017-10-05 22:02 ` David Rientjes
2017-10-06 5:43 ` Michal Hocko
2017-10-06 5:43 ` Michal Hocko
2017-10-05 11:40 ` Michal Hocko
2017-10-05 11:40 ` Michal Hocko
2017-10-04 15:46 ` [v10 4/6] mm, oom: introduce memory.oom_group Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 19:37 ` Johannes Weiner
2017-10-04 19:37 ` Johannes Weiner
2017-10-05 12:06 ` Michal Hocko
2017-10-05 12:06 ` Michal Hocko
2017-10-05 12:32 ` Roman Gushchin
2017-10-05 12:32 ` Roman Gushchin
2017-10-05 12:32 ` Roman Gushchin
2017-10-05 12:58 ` Michal Hocko
2017-10-05 12:58 ` Michal Hocko
2017-10-04 15:46 ` [v10 5/6] mm, oom: add cgroup v2 mount option for cgroup-aware OOM killer Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
[not found] ` <20171004154638.710-6-guro-b10kYP2dOMg@public.gmane.org>
2017-10-04 20:04 ` Johannes Weiner
2017-10-04 20:04 ` Johannes Weiner
2017-10-04 20:04 ` Johannes Weiner
[not found] ` <20171004200453.GE1501-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2017-10-05 13:14 ` Michal Hocko
2017-10-05 13:14 ` Michal Hocko
2017-10-05 13:14 ` Michal Hocko
2017-10-05 13:41 ` Roman Gushchin
2017-10-05 13:41 ` Roman Gushchin
2017-10-05 13:41 ` Roman Gushchin
2017-10-05 14:10 ` Michal Hocko
2017-10-05 14:10 ` Michal Hocko
2017-10-05 14:54 ` Johannes Weiner
2017-10-05 14:54 ` Johannes Weiner
2017-10-05 16:40 ` Michal Hocko
2017-10-05 16:40 ` Michal Hocko
2017-10-05 15:51 ` Tejun Heo
2017-10-05 15:51 ` Tejun Heo
2017-10-04 15:46 ` [v10 6/6] mm, oom, docs: describe the " Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
[not found] ` <20171004154638.710-7-guro-b10kYP2dOMg@public.gmane.org>
2017-10-04 20:08 ` Johannes Weiner
2017-10-04 20:08 ` Johannes Weiner
2017-10-04 20:08 ` Johannes Weiner
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=20171004154638.710-1-guro@fb.com \
--to=guro@fb.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@fb.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=rientjes@google.com \
--cc=tj@kernel.org \
--cc=vdavydov.dev@gmail.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.