From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751931AbdJENG5 (ORCPT ); Thu, 5 Oct 2017 09:06:57 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:34028 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751518AbdJENFs (ORCPT ); Thu, 5 Oct 2017 09:05:48 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Michal Hocko , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , , , , Subject: [v11 5/6] mm, oom: add cgroup v2 mount option for cgroup-aware OOM killer Date: Thu, 5 Oct 2017 14:04:53 +0100 Message-ID: <20171005130454.5590-6-guro@fb.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171005130454.5590-1-guro@fb.com> References: <20171005130454.5590-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:4726] X-ClientProxiedBy: AM3PR07CA0101.eurprd07.prod.outlook.com (2603:10a6:207:7::11) To DM3PR15MB1081.namprd15.prod.outlook.com (2603:10b6:0:12::7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4e504ffe-614c-4a0a-7807-08d50bf1c371 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:DM3PR15MB1081; X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;3:z+30rEy6+QJrKAP5fLFgnNZVCBbtgC+hEM3zTFPdi2950NA6HAS4YZtNFInwu1J8ewsBixv6BTYBqZenc22ZF+ymr9o0EMEDBinlSDigcibJIe1y60ZzuEm3aa4GdCye04n1stQ9IQLLkpsOW3u+2wzzdGr5hENQErvrlHpnS1GotLCr/ZyFY054lVe9u9CbJV8aSxczf+5ADU73CJwG/Zg/yh8uei3zEVcc1Zmbbok35lJRE3tWsh79ll7P2Jtr;25:PfpAMFsrqQQi/mJMweRNJrsuQTX+G2MUlZ/P4yls4gyJQRhtqbFKFLL+caKV3ZqkiN+Cj/SYtuKymgWnUOkcvC3hvy027cf+pBbK+vWMCWLzGp9EcmCo+8I6aTmTHfeMFgtiqXbe7lr4K37aKPBHy7lqV4QhmSjCrHcSzLAhOA3C2DAhmlZ4HETfnu901zgyLZ79oHtGtPq2TkWweFSoMYwzQluFct4vpxmvUsrjbLzQ72ieUqYL9eiesJUWpxXpiVgELGUV/ooG4RAj4pj5hsdc9AhowEz9GCD8JREGX1mDgEZtgHkQTpfXl2fPB4uZwDDKXJ8JOqczLluocSPNfA==;31:XPgUh1s2Vt8YAw1zCNRpEOOaoIaFXFcZkuveuuV7p2XF/8XZ7+GJ8/mVgBKXOP2udTBOv0zxWaLJw/qjSPaGXnLU3ihwsjniWxVftjspz3OFWqr84wb0huh1hIpg3mGUjNrJy3wQTUWZ/g87S10Zo5MRyWdrvMgl7puPRipgSuJMjBkbnqvVokRoBsJZjOd0M07MP+2jeqHciJKgA902RbvzxDkUyDJno4uiZz8y7ig= X-MS-TrafficTypeDiagnostic: DM3PR15MB1081: X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:EAZhcD2KZKYte2iCne4BTjODQPCtj0yRWTN573zIVqbL0x8QzC2vtMMLrUOdJUbkOy9ao+Jqb1Sjgeiv5mxEnrpuDsHGAAA5ttsHcvN372cNNT9u8DHPoozJc92DcawlccoPY9feXOZCQUZHM6nkW+ToyXJkfwJ+1celAN/kQUEPj1mvNufAb9XD6jnoUf5RRISE8/clq5OoPMVSjvznt2c16BNTByTeMQdfIZ0kXG2TDymEv2+qxW58weVzLWZB6vrjbtV2mVHPQ5urIh74ih9Bm07I8AW8NqKHPFC4AEy4DupJNYWCMhgZN7rGDxsAcKpVrBUmJ+LunjoCPMUr4uGkzB9/gNBcaenhLk/eBErAW9s6Eq2NZ7dvKQORXN+e8VhREO84rTmooxW/OdisBemIvc+oW3rXD9/XvKJIM8GG6z8S96OE+COsx7yFbsjO2HaDdDMOalXULrtXBpqCLL8KgJaibo/rg43NF49XKKxc4xOgHCUnAxFQl3D/hzLE;4:9QQXroYaEeaGbvuLgA+oJsjl2Ha9R8ttCmYQbYYIL5ovphnJv38lYlQVIFaPrXIC5Tetp56GEvaMs5JD0LkoG7x/mCwlwWvnYJitOI9MfqCZDyHfFCvNgjIbA2kThPgL5vcXxUt8IylFoUn9ROnF2B0NN9KtykpVRjHkHWwhcxhut0E2VKps7Yh/vgWg/9yIkbvdQv1v402t1Rq7trn1UtSiNvP5UXFIRduaMX46qrEGJUATRugAepjZ3Mp/90LruB1P2W7JOgDAMumx7XyENyDSZh8zv8KkUm6QcniMoV1DIp0TY7fIcspzvdtykBib1iGcDTBp18FW6SFJUR5ALVuu7Xb+vdxcyZf+EJuDetHBOYbxs3vUzFHOugdB44+j0eho1MQ7OPD03gbF+Urh7A== X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(67672495146484)(211936372134217)(153496737603132); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(920507026)(6041248)(20161123555025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DM3PR15MB1081;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DM3PR15MB1081; X-Forefront-PRVS: 04519BA941 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(376002)(346002)(199003)(189002)(2351001)(53416004)(6666003)(2361001)(478600001)(2950100002)(4326008)(39060400002)(36756003)(76176999)(50986999)(68736007)(8676002)(50226002)(33646002)(105586002)(189998001)(106356001)(305945005)(81156014)(6486002)(101416001)(81166006)(8936002)(7736002)(6916009)(6512007)(1076002)(69596002)(47776003)(50466002)(5003940100001)(48376002)(6506006)(34040400001)(86362001)(16586007)(575784001)(5660300001)(6116002)(97736004)(316002)(54906003)(53936002)(7416002)(25786009)(2906002)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM3PR15MB1081;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM3PR15MB1081;23:ToahwxFWosLtUoRBa+EcGpBd3PI26/cr4u04AQn/Q?= =?us-ascii?Q?1dHKslvLReTPiYdLBVvQAxcnRPLOHH3qhcJZVgxVYJ/Y5Jl3p2GPmeLkbwIH?= =?us-ascii?Q?5L5U1fkCeE66tmY8yH5ZH+I+qT0GzToTO+zik6JmvZ350D0LaK/V/JBu/e4V?= =?us-ascii?Q?cEs+iKR+Xt872ih7Lmesxe8ifUoJwWcyLNf+ku4S0R0jW2wu/vF5NkY6V0cF?= =?us-ascii?Q?Ht9aUnY5lbM7YFRATpoDqBdEFSL4qlJ/jCMTtDaJmgEe6WZij2raZ3/uRoZe?= =?us-ascii?Q?crwrzS+6vM9OgA1DexXPd5ZGHeyRKzRi9iGzNak8N9W42YY3jilkXCE4Q7oY?= =?us-ascii?Q?vpNhV0wP6745bIkRQryE2VxIf8vriJ27KNbcyOcRaMliiO97wLb0RR9G3YzG?= =?us-ascii?Q?N9vGnW5YEtWB0A+vUNf3R7gHjxdjho+B3BqjorfB9TXAGOw7B7UyxV7GVTSl?= =?us-ascii?Q?/s8nJQTBoh1/PJ+FCBP++5/P64WPOE65wue2RdgZgIL8GT9MyfpvduAPj7gi?= =?us-ascii?Q?paB7GjCWhcI2o/1yOTNRerK2mzlGxP81S08cAl7nYy9VlvmNW6seELiKuykz?= =?us-ascii?Q?txcOlHWRIkJ8jk3rmHKjnWrnvKg3PUa6mV2l70DKMJohq8DU5XVHfOLxRcgs?= =?us-ascii?Q?4MjzxtT7xPop5uza5R9V6Bq0JRLeWCWMcSCV7/yu0ghP1KloJOPVKYeFio2V?= =?us-ascii?Q?ilK0Alxun+OXtKFTtiEQOKR+t5ZbNwfmjxjaAkyhnFyivuHA5SiSafIpmrS8?= =?us-ascii?Q?OMf5myV72uAHyOwNbB57uI+rrL/TNPFnUOv3gQ8skUVjn9D9uaaERwh7qvbF?= =?us-ascii?Q?bpcGtnhJptrld3u1ahcLi97GLLrF5y2V6CQTeV0wgTZKoSgCKv3P3byL6kaY?= =?us-ascii?Q?WEcslpHawFxXQjhQoQqcoHIRw6SbbGhWPgyqLstghlSM58XWYghGbHVLlP8a?= =?us-ascii?Q?9nA1blZJ/N5b7NsPE0itM6Ze5no5EJSDY2OAge5ut/GjaIM/TDKvPdMIX5db?= =?us-ascii?Q?vKZK8IPgMyDnakQMHm9yO7rn++z3hoFGvot6Mf/mPotrbrRbLTydIj6F77X4?= =?us-ascii?Q?DssjtkhL81ISw56XkENuyp35gHMqcFwwfKZBrvZ/SPHgMjjmZHEADDAR4y4/?= =?us-ascii?Q?rwQr//ufuE8rpj9tTKkL3bxscLvxoRJVns8fAOgMR+EZfMylf6gdqHOxSkKf?= =?us-ascii?Q?gzMLlgQyiVy5ZtVAvFwJP2wtwcarQyuiuOy0dBm+QtT2NXxU6c70mVR3sQv1?= =?us-ascii?Q?mwJhUx7BAk27iNYuQI=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;6:8RJ3CYSegP4w2KF1n7p1ovZ1Nw7jw4036XtS0s35eL9boDzza21GZFw6sgXkpTNI1bKtF6oA8ePT9vUr1VIEXowSbthF8fOPrirgQ7+qOd1yhF7CQPGGLJfN/tXJT4jLJ6jwVV933oXcI9OFeWEcHTziuJAmpIlOQOFMPVUmHkQG+faPFFAw33ZbLy9PJILE6TU95jIuconGdyBbSwrHetL24+hNmbjovFaxuhxEI1aRHrCWGfkhoHlxaL/mnwpyU4wQYMLN4pTa9TKNJ1xyQlRzZTIJzlJN8pK/b2SPhKyccz9ojhNnVW8KsCCy8EXlJE16Uvq7uvrCTY7xe2fHzQ==;5:KyV21i94U/AC2od+C3uVSdoQxQ982AOyq+ZMjYofWANohP+iIRis7wmDKeKa4bmTujTJhkhgKyDty7T4+c9ZrqTVIIDWTvi1o3Fh9uesn1a/NqV53KxB5Kzx10eU4a/ZkK5wTBqjIhAFatUO5FtqQQ==;24:nIL504+cArFnK4WYFzdjvY3Z2WHlRhAazfioB1RXogQ0gvlhW4Eb3MB/28SR6dFrEqXqHy8Bh30Uai8rwmxv5ynlC1etzTVewJvRsAz8dro=;7:5NEN1dQTVE96pw25YoKBJIlobhXi8T2tyFHJGIyGg3yQsGH9zVu/kV2dfw80ycShcIq2sx1EjvR1pBSAIsCcOC7qvudtIH7eBunIpXzoy6TN/HYSgH1x0zSA1mC3/znkIy7GBDKsaD07ecvgcuICsSpCJ4P/jkdQY57kglmAW00oRJ2O4Ji+4RsCKnQuKZ9W7Uqo0z54YzbxsvyhfRx2W1FpwDNUA8KnUgvrVABm+4o= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:Vd08k4EheHeErJ3BK5tRK+fHRkmaOSWv8+7/qp6BePU69mONK26NnySaakfeNBd0ieBnrCeX6vujr+FY52BPn58vzLHWgqra3ucwJSXpODuqXxWaK7xr6nLgpyNWubDaJPMpBr8z9Xv5HSw42UG1lYFjv7lamJxC0JwrmJ2CIW8= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2017 13:05:31.5091 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR15MB1081 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-10-05_07:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a "groupoom" cgroup v2 mount option to enable the cgroup-aware OOM killer. If not set, the OOM selection is performed in a "traditional" per-process way. The behavior can be changed dynamically by remounting the cgroupfs. Signed-off-by: Roman Gushchin Cc: Michal Hocko Cc: Vladimir Davydov Cc: Johannes Weiner Cc: Tetsuo Handa Cc: David Rientjes Cc: Andrew Morton Cc: Tejun Heo 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 --- include/linux/cgroup-defs.h | 5 +++++ kernel/cgroup/cgroup.c | 10 ++++++++++ mm/memcontrol.c | 3 +++ 3 files changed, 18 insertions(+) diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index 3e55bbd31ad1..cae5343a8b21 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -80,6 +80,11 @@ enum { * Enable cpuset controller in v1 cgroup to use v2 behavior. */ CGRP_ROOT_CPUSET_V2_MODE = (1 << 4), + + /* + * Enable cgroup-aware OOM killer. + */ + CGRP_GROUP_OOM = (1 << 5), }; /* cftype->flags */ diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index c3421ee0d230..8d8aa46ff930 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -1709,6 +1709,9 @@ static int parse_cgroup_root_flags(char *data, unsigned int *root_flags) if (!strcmp(token, "nsdelegate")) { *root_flags |= CGRP_ROOT_NS_DELEGATE; continue; + } else if (!strcmp(token, "groupoom")) { + *root_flags |= CGRP_GROUP_OOM; + continue; } pr_err("cgroup2: unknown option \"%s\"\n", token); @@ -1725,6 +1728,11 @@ static void apply_cgroup_root_flags(unsigned int root_flags) cgrp_dfl_root.flags |= CGRP_ROOT_NS_DELEGATE; else cgrp_dfl_root.flags &= ~CGRP_ROOT_NS_DELEGATE; + + if (root_flags & CGRP_GROUP_OOM) + cgrp_dfl_root.flags |= CGRP_GROUP_OOM; + else + cgrp_dfl_root.flags &= ~CGRP_GROUP_OOM; } } @@ -1732,6 +1740,8 @@ static int cgroup_show_options(struct seq_file *seq, struct kernfs_root *kf_root { if (cgrp_dfl_root.flags & CGRP_ROOT_NS_DELEGATE) seq_puts(seq, ",nsdelegate"); + if (cgrp_dfl_root.flags & CGRP_GROUP_OOM) + seq_puts(seq, ",groupoom"); return 0; } diff --git a/mm/memcontrol.c b/mm/memcontrol.c index d5acb278b11a..fe6155d827c1 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2866,6 +2866,9 @@ bool mem_cgroup_select_oom_victim(struct oom_control *oc) if (!cgroup_subsys_on_dfl(memory_cgrp_subsys)) return false; + if (!(cgrp_dfl_root.flags & CGRP_GROUP_OOM)) + return false; + if (oc->memcg) root = oc->memcg; else -- 2.13.6