From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753174AbdK3P3d (ORCPT ); Thu, 30 Nov 2017 10:29:33 -0500 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:59098 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753055AbdK3P3Z (ORCPT ); Thu, 30 Nov 2017 10:29:25 -0500 From: Roman Gushchin To: CC: Roman Gushchin , Michal Hocko , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , , , , , Subject: [PATCH v13 5/7] mm, oom: add cgroup v2 mount option for cgroup-aware OOM killer Date: Thu, 30 Nov 2017 15:28:22 +0000 Message-ID: <20171130152824.1591-6-guro@fb.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171130152824.1591-1-guro@fb.com> References: <20171130152824.1591-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:447a] X-ClientProxiedBy: VI1PR0602CA0002.eurprd06.prod.outlook.com (2603:10a6:800:bc::12) To SN2PR15MB1086.namprd15.prod.outlook.com (2603:10b6:804:22::8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6b8e1640-0b76-4330-a2b2-08d5380718a4 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286);SRVR:SN2PR15MB1086; X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;3:zDdFyLee/G5Yee9lKC2MfccXvLVPP/860i1t58/D7HBaf+TVHXQlSgYZyqnhW6zmkK86a3csqCuzQp3WJEacJT3gq+WJBij6sair2PsT0r5FroJ9gQ317SkOPIX6Xd1PV+o3y9tU5OEf37sBi0hNDnTU37vkiCIo8RJZ6c+33UT8FXU+wxwC0Ulb5v9vczmG4KyO5ZKK9g8sIGOswz7OuSiUcORO8SDa+049+wTaxJxgfrbD2m21VYVsLr5sWvWF;25:YQs2c6YGfpTbH3qe8BMCxqZznfxn9K+DMOSn5DVK9ZZ5kCRD54C/bB1HCnkxErLUyu4CKE2s7hoQHS5ZfRiwAADy6CTOthg/OG9jG0p5APoXr3A6C7GXe7Ztis1URl/3D+Q4U/924/h1G7aYBtAu1xFaJPEw2ruCeBDRoGQs4Kuv9OEGibO8eD+Tr1FyUlK7z0o1TY3MrPa09WRfz32GspSG2pzcTx6CGsDC8oWcosExsF/GQmlzl3oYxQUQs/PSyUZMmyAfq4nMT6EKh5B+j+twGqKEkNLWiP5PrLyW+ogzCavhKfIOTXlUugOfhU9iDbZGq05btK+JhHm0wJrG3A==;31:lBu4xLSCEy6LQ+BiRoEiyQIhkBVBdJNCRnkpqRA/WWlH91W1lTZ8I4gyLJc6af34BtYPSb8LoAjYw1tvQqrpSKZNh9RdgbYQlcWhGX0dxvv11jesurmeaDvLQVidIiVB4zEPhg3XDcoAAdXAG3yUJEm3K3TlFS03LL0MwdEi7XKj1JE3GH9rIJy0+oYJxmAZ+Wvawn4j9wafycdwOshb6C+p970Xyg10pxySttUJaD0= X-MS-TrafficTypeDiagnostic: SN2PR15MB1086: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:jQ1BzBVJhSEDHDWbcKAZQ7Lj+KHhMIreFODEj5a36sImY9duDrL6VafR6y2zYHI2HcNnuio/N1CGUJG3IMwsYRhxvt9PGCZz4c/NApOrLwAaNBkKLFE6lz5W76gi8jqIheBwhMIBS9EJ/Z65P2mj+oj0y2E7wcbikj4QrdT2LvjRqmrpa74OGjmX0jZSluse1yTfXX0xwbzoA+S7dKHKilxJiO3dgIPZ+THEjo8cWDLl01DNKfCf9u28mD9IXkbq0mA/KsY5imJIA8GrQZeDVCpGXug1U8ri7Cpa6JWgRWbc3Vm5E4NkaHyaMeETnYkxe7vSKfWq4hLDMMrnoOMM7bL0T2E2ZQPy37F+SHSDhnMUikcyj3dgfBr4xGFEgqYN51GWXgLUQOAtMkfWM9beQwNBQx3rcqwLK5QXb1aNKYi+sJedDUTFtT8+YTKb1l6s3cTxZVzEdFQPxf7K7mNJbSCFCYFXx0jwnxEoTMGVByHB0HJfsVeYDGIERWkkehVB X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(274141268393343)(9452136761055)(67672495146484)(211936372134217)(153496737603132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(11241501159)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(3231022)(920507027)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(20161123555025)(20161123562025)(20161123564025)(6072148)(201708071742011);SRVR:SN2PR15MB1086;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:SN2PR15MB1086; X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;4:oCX6/ZIZmMFeDhbfyD8194FpyQrz8Osy2WvUtU53w0axrp2vw7EUVTiUn9IHKnHJ9NnrFiTGGfRo5mwa+uz7CsxFcx317zNwIc4msUM2lxgxRbzYinnf8opP1Wfl9RLslz9w1DONwiq9HSw+y6399jWl/fqbtjcPMbLvNaK9PTCPWOrdq7Khu3FPvRnNNL3C3Z5IsxWczlBi3n7pDDuZmpu8hVKQliQUb9nhODUhAYJ4WKPkezoadEjcOhiIpeB+3P2ScOPlpPUwX5WxPcXqvqqe15Tha0Umm9IF2aHapdEorCswyNywgfAwDC2Pk4+J33/WNb7dpaUYlwOf71UU1c2fgJILtr4envP0kJ901wvovif9NUoc8S8xr3n177hXnckOXSwz1jReOJK5RM0llWiObNdVMDfzTaYTL2vR06rdiTCts65ghjvpgz+zoq8/ X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(346002)(376002)(366004)(199003)(189002)(105586002)(33646002)(48376002)(6512007)(1076002)(34040400001)(8676002)(7736002)(81156014)(81166006)(305945005)(36756003)(5660300001)(6916009)(2950100002)(6666003)(97736004)(50466002)(7416002)(52116002)(53416004)(6116002)(68736007)(316002)(69596002)(16586007)(51416003)(2906002)(6486002)(76176010)(101416001)(6506006)(50986010)(54906003)(8936002)(50226002)(39060400002)(4326008)(106356001)(53936002)(25786009)(2351001)(2361001)(189998001)(86362001)(47776003)(478600001)(52396003)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN2PR15MB1086;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1086;23:4huAM9eNk5R3xW9AK7POEMFKSIwhTE/ZECE8HdVQI?= =?us-ascii?Q?oom86aTSlmK+kCwnpQZHqt49+RiQ6ZwdAvn2KRm9gtfP4ZeN01Z84JS3ybks?= =?us-ascii?Q?Kdg58GAedAPFpKbbE6HfPmWtx0ayJpb1h1xbwFVibsAnkWrlNV97d03lbND5?= =?us-ascii?Q?nD+QZwS8yAsOZzDnuCsdV1W2KwApGIlHMs+QWD08lw4hGcZEPxZqQ4yyOp9L?= =?us-ascii?Q?7Xgg03wFLewZ/c2WafJCF1Z5mrrk5ZRR2F6WnWtVunlwjGCYYuPAap3zbS28?= =?us-ascii?Q?hRmtK/ioMngElTsjnodsN7kM8VQu6wH+k/Wu1yYk9jRREDdvvITtIsW+kHFo?= =?us-ascii?Q?h8qRet2L6Yv8hkhg+VeAlXMqb/4ryDcDzkiz9Upw3oMesatXHzNlzLyJr3ow?= =?us-ascii?Q?+kWw6orcEbC+yoFWg49RiH/U8tQK7K0qMAGR6gxODJam6X3WHCt3dkDOn/7X?= =?us-ascii?Q?DnfsfAeQdZmXIPeN5EPDHxsyd7zP/AVlF0+8oIdwIHZq5Vmp8C7+fcy+11Ca?= =?us-ascii?Q?tTNX2LNAL7ZEUYIuq3milUptweQqrHS/eY/V/wJN3Yb3whSzzagybJMlnODo?= =?us-ascii?Q?bfPhEag/5p4GiEmzS490rL5ky3npAJ1xD1IPrBBhJDPOGqYuLUC8L3ODk0v6?= =?us-ascii?Q?yV/DWcp0eo8OV3cfGzjFS/YWlLZYfwkJ9CHR1ZZzKNe50f5BLIIvS6e/ooWh?= =?us-ascii?Q?O0maB0tvnHvNd46gLTTitbpo4mykqEOsSoHsancq2neCjujiLofWICrI3jr1?= =?us-ascii?Q?1Ax/rWOOSHmTMx1YZ3zkj9JUoyFJB1OY0FVoG/pWRyfmGRHDnMu9rRyRv0iC?= =?us-ascii?Q?chAJ3sUb6jERXusc/cy+z7jjmfXS3lTbvhlHrcKIReRLebliW1rwQJI9pUrZ?= =?us-ascii?Q?30e/peP3daMkUb2i2H7BF5KB9Ohh8ReNb4OAnvj+6R/qAPaMDN8YDm6+cm4+?= =?us-ascii?Q?uZCW3CETleM/UWStwhIpTm132HJ3DKCucS+V2FIjoSnylYEqa6sv89O8EWnm?= =?us-ascii?Q?Bmu4rd/yYdKapk3zTbC5V4mMqKk5qubaUElvCuISv5CI9l2QrTcr48mIubVr?= =?us-ascii?Q?J+S9lBXi5eE+kmhN1nZzyNcsbel/54MZVg2rCvAYkES0H7K/NBa8j1HRPoSi?= =?us-ascii?Q?amGZtiQkezSv1Z8SunLqzhOjmrrtLhs55TRYDVggE1tFOOxY+PjTqqLESi97?= =?us-ascii?Q?//wMasEdFvsRi2f+w23pVQ3QZH3GQXNzwJo6eujOJ3QZwJJr8VcRSc7ci2rT?= =?us-ascii?Q?Ez+w6JoI8RD+F6RJscSK2VNTxq1FkXVRh0p1uvo?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;6:Z86HLaABHl/q5iIPEAbfeTY0ML5iJV30wtZ1oHj0hoN+fbyFYfNhmZhLSfqedWhv7KMlrNQ6f02JtTUgNKP37ksm92ECZeRjccdkv9yknT8CnjywAW2bc4X1WfYz2Vvluw+GzsXWnXzOBFeHzf+gUgota07oHnhwrycDavc1a4oBRe5TTPJfiYyWI6ODWSZTI1fdE9SVnlc0WyaK5ke/moV91oi36CqBUA5kSqvPY3LwB5dNNmmz3QI40By2vZhiJrl3EM8nqpzX8Q+SE8h9dKfY+nJpKWJCHIWnpZY/JYi+tRjOHKOV+/86gjZ++Gu3n40siaiL7Yq8s/if6D1zYuZpU2bRP/ZddGLfNhAOiy4=;5:/VrjBDgmBzL1JXrHnW5670pmjNPLPZS1KrgotIg204OZTBfN9DL1DNFPA7pldZ2QYqI2+gCLnmKCnUd2RFPN0nwLs9sQElSj/f9JCBqdlgNCYbSwQ6dK8+PEzF87F+W80p35hFr6izNCxdubCJ8igK9dpTdfnKNYrtWO69M80gc=;24:7Ssm/KDgHAadRku1cczaBU2wjvfJ/qUMUsOmDmog7dDiIVjI0Pwy9PdQgIn/ydzpG/xRh7FjwipZ+7VoxtqWi6heUwjTkTlKBO8AEamDa1k=;7:YrvAYEfy7BDwTRLc1RF3mEVuWBKtMl9KJb2VXclWsrKkRZPXVB0BIIWgEJvA64rq4uzfeU04Qw+J10tiPpwBsWZl2H5rZanrzxC+XiHFx2A2ehxYedfTEnv704RQ9C8EHyf8oYYOl3SJEjsln7F1irpF2GjeTeFwV306dR6dXN3fpfVe+CGEhAUvTVefE4zvbmJpoQoel45XKS92wejCONX3mw9HIJcQJmC/G0qtvxkZqKZfV3r+QRrdvPJkSH4Y SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:RTk2BN7XgzbBK+bQUVXfioyj06Jn8Cr/354OQnpE0g5Drtkh8rsjIm6B9gTPOh/bjLp4oYQH9k/2BeGc0c8o/20o+MGYIrJpEdJGk3Jb6zUrW5gBYbxkGhQ2FVXEW6PTw8H6wvjNQAY8aQpeAiwZ2GVVO/6exK0pbiU+BOlA/vI= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 15:29:04.6535 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6b8e1640-0b76-4330-a2b2-08d5380718a4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR15MB1086 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-11-30_04:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe 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 8b7fd8eeccee..9fb99e25d654 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -81,6 +81,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 0b1ffe147f24..7338e12979e1 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -1731,6 +1731,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); @@ -1747,6 +1750,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; } } @@ -1754,6 +1762,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 5d27a4bbd478..c76d5fb55c5c 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2869,6 +2869,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.14.3