From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754025AbdJSSx2 (ORCPT ); Thu, 19 Oct 2017 14:53:28 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:45984 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753830AbdJSSxT (ORCPT ); Thu, 19 Oct 2017 14:53:19 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Michal Hocko , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , , , , Subject: [RESEND v12 5/6] mm, oom: add cgroup v2 mount option for cgroup-aware OOM killer Date: Thu, 19 Oct 2017 19:52:17 +0100 Message-ID: <20171019185218.12663-6-guro@fb.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171019185218.12663-1-guro@fb.com> References: <20171019185218.12663-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:8cb4] X-ClientProxiedBy: VI1PR0102CA0074.eurprd01.prod.exchangelabs.com (2603:10a6:803:15::15) To DM3PR15MB1081.namprd15.prod.outlook.com (2603:10b6:0:12::7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a83b2cbd-54c2-4be0-70c0-08d51722a07a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254172)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199)(201703131423095);SRVR:DM3PR15MB1081; X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;3:V4SR9wLy1J/6nNi8rLDVxtdq5pH96T+n6ol8hVUuziNCk+oYYyBqgdne65lq+3brxjrP42+Mb6enCx2mRrXICab7T4lke+fu0wU0SreM3vLaBCyyD+YxX2KD9kayqOMr5+Wbysir0bWxO1EjQKyDM0n/xYtMWuxSdECLXzTnADl5dPeNc75cywPt0Tuf9JVd94RnDdbmSOcyStCUy3YszCXdFIn/X7tSDftsotwD8fZVYbz+mLDO0eETQsxvo3H+;25:Ihb06ckZ1srmyFDYPWO4QvjTGRTDKkTPWfUf2hBvzRGzR4dEchWqSKzdXi3texn9qQnxERWrSZVoyd8VKo2MFnONOT/tWaAFrE95WRPnPdw+n5pL3609UhnKNh+lnDMXDTnQredAYZG0ZzAtq6qFUv6aEx9T6RD4/BIHKgPzdTKEDTgaZHH40IYPNWUXuwn0i4RFQuwSXFYjY5XD0kzUMaDl3FgwYi65hIJBi3gwQGFLecKeP1iAphT69i2i8v49ltiv5fNs0RxM8WnTBc/SqSTtxxqEtQpMAXOxS7va+wS+WP5AkLQQ5sTt/pkF2ssHkfy0dvThfOabM4t3uUw+/g==;31:y7vxmKxmQSH+v+NlWmHy/WJZAl30jz9qHzwcjOQxSleBfAldunF0x5VwAw81Cmrj+ensZZGcbelbqiDDznWiBKYUNtZABKiBk5jp9+ehakvFpAIIpxc5j/A0LgGxDWNTNMYU6wSPdueN6fMO6DpIkt7a66WD4jsTdMunM/DzLiBsPIoTDbHlKmQmt3TH4DFeg1OuPtEhQsG3Q5AsboGUu1C7Ys0eqonYFDm+8nOCX7A= X-MS-TrafficTypeDiagnostic: DM3PR15MB1081: X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:4x5iOint88/315duUFtbSXI2QIw3CP+DtYiPFcz6Kg82naE97JxvCb65EONZZF8TFofFeHZsoeJCtX5BWXOQ6N7UO9E2gsfDDQu/jzfQs2zTcFTdPzuEwZIWAwduCiWnsHB9y59lZcSxeddZvkqRKcJUS9lGV8RGr4c1sFxJfH2fwGDu2Knjl0kedxfFrqAXkTFPXxbiNIlbnyd1SImASDfa2nu978jVpX5eMMxuns9LJlYItUJRIR4ySKNVxuoGTXvZraLTuV6YZXlKyXkXDiTaqKp84Md2KMCMpPtPou9VEYbb/emWKgL1+4sHPWwI1VEU+1GaKvDgm0YjW/2T76hqpWdCBC+RlYm/dzXU6WwXYxRpGy/mSHWm5tdEz/lRzfw/0lFkCJ7tMOiOqfWrAGieY/zH2sAQhtGH7fHH3Fe5nd3KcWFflwWvZFTyPhEvPZs5W2BE3qd/IURZ3zO06g9gqMiOCYamLudB+VCL+px1Scw6ScaBrZprRxQByTnJ;4:QS2rBZxtdjzBaLAixQUpQQTk4GLCCdKHU1FGgj9WgBx5DV32gp/RSh1Ak/y0ldHiB6EbABd4x3lT33rLVqkrm+8BEA3Pdz8isutLpQJVtVJ9/cHJH9cQRtA0Xfs9Upd6A9t6ZsXG4bCesn5Ue1x5kpFHRYHdxEq51i9UCcZDDMBinbsdqq1A2UVG7hhUvM7S9muRrtVuUVvsOu0+g/gvzyn4KaDOjJaa+pV1wtFHfiyYN9vZd0qfJpRC0tDYS67MbwWFedBpqezoKqGVqT+EkKhGhrH06BHfouYmHjPBHCYOGM2GM2ABelEVguWUhc8E9wyLFoxVffTJ3s4+6AnRJQRvuG+Ju9sVkqwiGr2aHVeb0kI4pTV8zvp7+vZIn7TJVbUeT0sy0ccOH2DS9+JTQA== 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)(11241501159)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(100000703101)(100105400095)(10201501046)(920507026)(6041248)(20161123560025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(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: 0465429B7F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(346002)(376002)(189002)(199003)(53936002)(54906003)(48376002)(101416001)(6506006)(6486002)(316002)(4326008)(69596002)(50466002)(5003940100001)(2906002)(25786009)(6916009)(6512007)(6666003)(39060400002)(97736004)(2950100002)(189998001)(86362001)(50226002)(6116002)(305945005)(7416002)(81156014)(53416004)(478600001)(34040400001)(50986999)(16586007)(7736002)(68736007)(33646002)(36756003)(47776003)(5660300001)(105586002)(76176999)(2351001)(1076002)(106356001)(81166006)(8676002)(2361001)(8936002)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM3PR15MB1081;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM3PR15MB1081;23:i1TjKpVtOSpfjmQqceNrjDVnUIoyIVxCVK+TVxFoL?= =?us-ascii?Q?pSBKnveSvFYlgv4C4DN7stSMcnORk1MKXJA6ZpIDVPZvI2XoitZtK+1Ll3sy?= =?us-ascii?Q?2VxhsJkWkba1l5GOLRaBx2W5xi10aRAgNAAgeDLdxxGOArjw6DF+aNDFI4xY?= =?us-ascii?Q?vaFPQIQJh2FmKqHpiJeVQ5UoWgsTSfQTYwOGyQw3OaaSG2bouIvKcL/ONIXm?= =?us-ascii?Q?WURJdfQ1+/LbHj5jM3F/CJV6DzMcJCmDg4qvrAdSjzzVfLiQKRVMubNtP/tW?= =?us-ascii?Q?EkuCHZMNtrhh6kcNiJxa3u5B1WNsPybFdO9vhUnPVcMtkNVTx/KztyZfCVTH?= =?us-ascii?Q?PjGiNrhmAxYdJcseNdVacgJLgZWbvB2BTN3B0+FW3Xnc+LuZqIfg4UDZxkq1?= =?us-ascii?Q?rbgYR3b+nFpJ8ezpUwJyje2turmAyjDItHkJMY702rSs8EFt2AWYunYQBR2i?= =?us-ascii?Q?rIvm3B2PRibH6UjlLrizdnztADDo2i5mhQhVY503r0YogfUneEn16Tn7c2Ab?= =?us-ascii?Q?9JOtWFQE43zrpADHE/2b81zlGwAm+Cy28XeSaxjTIYDlJg2MW1petryRhWJt?= =?us-ascii?Q?8Ognlqcl1ql63VVQ5wOzn0YuaI76dkNmlrI4al5hzAt1T7O7DO6vd7ZTNaPq?= =?us-ascii?Q?7kLPxdWWgFtdcX6wbOV1ifACOCToeV3tHhVALMhOTbonzOCHMqBIK1tCX7FS?= =?us-ascii?Q?1pYu5EMEfy7mfOpjem3bS2FbGo/XDn/feWsygTZcME8dKo0xpeEeaG5HBadl?= =?us-ascii?Q?SuAcnZNuBt/HtqIsHB9osPqew+HhpKjLPN2PSbHcVxjwnzrXrVbBA+17f0KJ?= =?us-ascii?Q?ugAzgz7M5x2x8axJDefvMlqjOCZH5Hxjx82e9SjBcduyvogCoZgUuZQ1rjRg?= =?us-ascii?Q?QjxyHJJcjqCnXeLjd3bkLpAes9xYbTeY8LVj4FEX3buanrsTdu+Xgty61bqf?= =?us-ascii?Q?QS9dDA0CKxa5IryBK1Qb5/HUUzce3W+4VzC/miYc8+7T9cZcRvteYLf+UINB?= =?us-ascii?Q?jhdDiSpCA4HPEjqVA8BOUWcmYjmhy2q8EukRcKddGwUPmPYCr3KoeKxP2Bjc?= =?us-ascii?Q?UGys296T/s08gwWD5EfbcYoh0BMaW3cWbzkz5SlAmWf1ha+TE13H/68UNTmu?= =?us-ascii?Q?tB3Cws6DDRa3pwmcPI5r4CK6L+1USW9RN6tRaUctfN4QxkvnyAmwaPCJLWQy?= =?us-ascii?Q?v60b67y+VWf0wpSFWH3YV/gVvHlJfj3E41wRWca4AMSsRWAPMR5SQBlIw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;6:g9QcZPqG3RoUTXBdtKe9Wk4xV+UuquErCXKM0Q7kGv5E3z2VEEhuHxgw/w5euXliJlR2IKmDQsgPhkLbH2yiQR7ri17HukKkupNtzBaoVJsEhBz3qgF9exwj+ExeLBnPP6vVUsyoSM63iEAfKWQy/GeZutSp4gtSN6i0j5n3uwH041rwuckcwCWdwMvvnasNFaGYmPzWEtAds2Jf3oPHtVijbK4Nf0KQ9EccwPJd1GV4em8ZBWqCIIMjhbESTuzwH8oSFC4EvHF3AhUEUqC7d0sDEyllPalAwi5IfBiFDL/Pu0vLBjacEOXNIA45l2FUHS0uC8gI6QfJ+kfZA8z2eQ==;5:Wnw5ngy/qQ+fsRNiAeKPPA86Sd8VTmqSLfiAzZlZvBwuAnxthEvNl2hOfT0UIL6lT+hEk77TL2hon4/RsDmpezVTjeHLYfapralHqPHg/rDypfW3XGVXzvZCzJSWjQbqlzCgeC/hahfGpzmHphIdGA==;24:geLQ3TJP/OQBtty6ZEfcmqT0mYSdFIlXi2eDMKHMY1KWCzNm6nBpwDmqC0rzrjH1YgC9m/Z1RlR7G8LQT4kB3tuk6Ro6RWVlL3Q7c0oXXQs=;7:M+i/IIrORHQkyLt2Vor0syQT4I42uqQJhxlxSmY20ii2sMJz9zyoGPVzH5XFn05g+c4Vk5ugY7ve/1WA+58GedKfc+hkVdw0AB/itoNjmscjZwLwxzeA86ajnuYg0Er/aP8KwycDUQvzTwEHTegI6lOqC5T+uXIXc7io6I0Go7lKmMpG1YWX9ptEfc3idmgszLCKrMLiA3W3vYlGmtFlJQFgm5ufNCydNwGZSR2yoAQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:SEkDo8kEPOLA1LLDiCYCIuVzYOOCFb/ff5IoXaD9Tq5gHBa+8CCrUWQpEYnPJGrBmKggdpKYkji4EEAwC/doeyatlEoxdjmIEwPsygzUeh5N8c+CJ+O0wl7w5Q/Tv/5N4vkaMWX/CrXQw9f0/aEuhauM0AtOUv/S9cyFgL8GdmA= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2017 18:53:00.1498 (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-19_09:,, 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 c7086c8835da..0e1685ca1d7b 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 ad10dbdf723b..eb1e15385782 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2875,6 +2875,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