From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751644AbdJDPsm (ORCPT ); Wed, 4 Oct 2017 11:48:42 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:41856 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752655AbdJDPsX (ORCPT ); Wed, 4 Oct 2017 11:48:23 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Michal Hocko , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , , , , Subject: [v10 5/6] mm, oom: add cgroup v2 mount option for cgroup-aware OOM killer Date: Wed, 4 Oct 2017 16:46:37 +0100 Message-ID: <20171004154638.710-6-guro@fb.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171004154638.710-1-guro@fb.com> References: <20171004154638.710-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:180::1:891b] X-ClientProxiedBy: AM4P190CA0005.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::15) To BL2PR15MB1073.namprd15.prod.outlook.com (2603:10b6:201:17::7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ed97fe6b-6c74-4777-c722-08d50b3f4ce3 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:BL2PR15MB1073; X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1073;3:4g1jHbYZDBx8ORD6uh6MYPpHuppXoi2P57ruFqaQHJCRHNZH0ZlRUaTutA2wv/RDYgFcMRXnkWO68ruGs0ETZtgmwKs91xPOezpKIlpj+D0IWyhznn3wVOaJ3N/y/EbhFPWX9Ybdw1ij7FLFfQfOcxmjCdCc4O8jnPdTGYGNd9AXm6Adj40kNkDVnhfh5OWBCTpmH1Fu7rBVyZYo8MJGHB0cNOvEiiZEXvTR7o3Qtx8UoXrKjf9oI5a3UQ8dnHeZ;25:VOOX0EdiDEZ6SuhY8gWLb8RBXvTO11lvS+zyr5kY4DDraMjmcigBCjd7a1/qKHSgIw1cS9gcReMA0Zkcv9YAjnpFoaJq/EuHwEiVvgkumYXn1LUy6nFUNbBjfcHOIgsZY62Nq0gJ5DhdKpkekYZuvSSWmXMVx7G86qtQ05xKs+Ztzh7P4qjyuTpDGd2a2KGdh46Dgwz+tHiDsKt4dO7vZKTpHt0TPObj9NAMbWxEyLlqNnGhMiv9X3z4mdG+WI2LrCG7BbN4AK1O+RuRlcHWTgfddshFpmRvnUNjyoFIt/UYcjGKkpS+xFQRCYyuzY+JQH7G4ImkQ7HQbNLQ7YFp+A==;31:6GhYtuHgl0chRAuKvBkZ68w5+nWJ4OXxBy7VwQyp3V2G96ffTSH0cdv3HMPt5SE+VrIAelKa2/xBYJp2Syabal/El8GO4AJXTZjYUFOyKaB9RXtsYicYtkgzRUPqKJwzgv7e1lOhC1DXvxpx6aB17rN/B97JUb4Wbp28u++uSzSqwadyUtuTUWAfUzdfSw7W9y7o8Ld8G7yh6G1FZAw9mr0dvRRntYwjV/4a0FBeZGQ= X-MS-TrafficTypeDiagnostic: BL2PR15MB1073: X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1073;20:tdFpW7wDnX05pjfYxuCUe9LZsjAxcdVGfYneEAgbftYS4coeWW3MyMAcfYRW6050pFyypiqd+Ql2TyOumCyyadDBNsL5hyQYiMd8u+hmyGmLPbtrv+ZJqWnpBQL+XD/Yaqky4HVLhg7a2S+7RAyScXAHBHVSQ9+zi73mRD+CUdf3y1bqUe94SHBLxL8NAj4D/pTdPxNhkORtXgjWk0M24H131BHAbiCqyj0pcwN9IFqHfqtwXl3T6AF69ghpftG512x7hqw1aCtubF3rzCvBKp19ryyhfS2ya3HH/acsEfnxZ8+xiwPXjakVMXvnerkQjl0Xn8c6ueyo8LPbwKb1wkQSKr+G2c1RlRIiQ6SR6jVJUwWMf+GAv1Axt8DcmBGqnuIGD+9qMj89+ERpcWB6uClZRC5t3jsYOHAHCISof+fHO1ewrWZV+51P0e096kZszkwoNWYPkHmYScSRVM3s1F4WbyzjaJHLCMbsNMqrmYV6T4nomRENZsRabb8CWKBS;4:2GUFac4LIPkA9iOHQbVYDbi/hb0HnxOJDAMXzzqcPATLu2Qy41YABveLdH3rKXi9yonkr0CCwWPN7GeG5HkRU2xJ9/W28Cy3mPADDyR2nWClo6Amsv69QeYdd9ayTxxBA8syn7u3/GkugrloYs5X/HNA+r40wlH4zLaSbcMEs43Ef9gSH/xhXEEPIUdZbh/vshvyKvaLhwgLUuS2ysVJ7XuNV4J8ekGaC4w210bVFMA3TO69dNojET9MnbFupGISNHUSA8VkcMjcCN8uc1b//YaLSA8QoAOsrDaxl96AiMBKazajcmGVXNttiOE8LNe3tPq7MXzmreyCbYdN+LvZY1lTYgYDuu7/Kk+8HwyLKNO47Y4zVf0FQ1ou1BKJiK/eDJWbf8pnjCLQqXq+IjM3pA== 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)(100000703101)(100105400095)(93006095)(93001095)(3002001)(920507026)(6041248)(20161123558100)(20161123562025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BL2PR15MB1073;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BL2PR15MB1073; X-Forefront-PRVS: 0450A714CB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(376002)(346002)(199003)(189002)(8676002)(48376002)(106356001)(6666003)(76176999)(50226002)(50466002)(33646002)(50986999)(6506006)(2906002)(36756003)(6486002)(97736004)(2351001)(101416001)(8936002)(189998001)(4326008)(2361001)(68736007)(53416004)(478600001)(305945005)(105586002)(53936002)(34040400001)(69596002)(39060400002)(2950100002)(6916009)(1076002)(7736002)(54906003)(5003940100001)(16586007)(7416002)(25786009)(81156014)(6512007)(81166006)(6116002)(86362001)(575784001)(5660300001)(316002)(47776003)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:BL2PR15MB1073;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR15MB1073;23:PVUPMk+IpyUZou4LUZDO+3/7g6JRhegNfFdnLg/cV?= =?us-ascii?Q?YVbBvGXc6vbDEBSTLDW7jYZ6xPm7MViAK8HxCkFAtJJQ4d2c44VQM/EV35m6?= =?us-ascii?Q?9rN7UJ9sWyWri6HDTqaLlQRmRaeZ/FrVKnGseLHSYSwZBj23VqdZvYxwIqrB?= =?us-ascii?Q?tZlPGBekhz0SIx7WpGffdFhxZZhoI10Ck5dr6cZ3BkmDGWzU9e2n3RZieEyq?= =?us-ascii?Q?P4J75S0hE8cmOiYW08Y4RCEjS1wyc+FBnDNew3L5nTBO55kAFAI2PPoVHV93?= =?us-ascii?Q?fL0r41WLG3zGxl5ArVqZtTxOuwHeL7UJp3TPxLUOZ1DWH36ktUhRU54skS0F?= =?us-ascii?Q?UAqOtbBr8SLSo1nVZn6oYnaUTfFlHlcgpWyMv217cENA7M6VRpxXJCN9t//Y?= =?us-ascii?Q?rYxdCPS+bcipj2i5c6XSyXYCMoBKqgxSDy8gnwTMp7kcTvODK8py/acCv1C2?= =?us-ascii?Q?eesQPOoOM//M99RU6ihJeJdE01ZeHyZcVYoaQHI21DTaKLyWHKCj3/velLSf?= =?us-ascii?Q?yePmxAn+nDjADcAFaxZFVbCA/AbkmM3Oua5PiFv13wDfVIe9h5cUkc+pCWXr?= =?us-ascii?Q?hw9+MMW465S4BSw1N6tnhr3vLadz0hdWbsoPRgLDiDaec3MeamF9ewku85uN?= =?us-ascii?Q?FuYm16INcnsnujeZ3ipyTie480jO82X74p2dXs03WBlnjRqOW0z5ePzZrm2J?= =?us-ascii?Q?NHy1cHO5J9O32KWxd0AhLv2+yKRYqjCIBB9Fu0jBodLrb5ALUGQ7tnImbm2C?= =?us-ascii?Q?3IFYT+1zEV2GJbbUNWRCVWacaIh2HXRP2uPhq1LDRU37B+PeVVBXCBLGqRK7?= =?us-ascii?Q?dTsT45wQ1CpZuuVScGS/yE47kXBIRpjCsUAdetTN66+uPbnm9j7F9ui+4VvR?= =?us-ascii?Q?3dL16QwJMbptSxmR5FFZN8G+zPAQ6F5mfhziYyvvApKJelYWthfYokDw/rBC?= =?us-ascii?Q?HyYbate9XVyv88IZVv90WgMrvM8eUKWdYQtW3hEhqTd4H+Lta0+h/O4NtViU?= =?us-ascii?Q?y1pOGt5T8xoYKsxQAWi37THFgxnJnISCbqFKmlpfmiJQO2kAeI0fjpe15m/V?= =?us-ascii?Q?cUwbTHUtoM8z050eyp+EyAd/kqAFoB3Dd0iG57LT/pqN0NCdrg+0lbOX9n4x?= =?us-ascii?Q?LBZwyjxK6QBC+qKuvGt0xVDqhokMv61Oet+uwX555GkmgYqT6T48pYvW8YY6?= =?us-ascii?Q?37uZ0UFYwl+bFkL15+M2ZW17oOuAgRlZBGFK3jMNYMl4R4EKbO0PWeUSGZj8?= =?us-ascii?Q?oqEinrlKoZsPo2a290=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1073;6:98BgEOXIUV0ggandrqU55OjIt/cXyUTAFR/H22NtKSleA2ZMoqjGy5qsE/XLWejUEYyytnPZRK9vHMdkgRFCVrsLGXt+kdpDCiH+gncTxF+6tD3zP9Nyb+ys5iPIp1LlaofA7kN+pfVudujSzfyFPcTbYJvBWwjRFvtDL5aqlIRCYQ/Qu6kKwAISoPzUDt6hhHPcnh/R+HYtFPBfXCyeDnnMhHPnvu/SUD8EJu4+T3NlrgebG74/T1TppCZOR5m/swX+wyMa3t1aOUr97W9KqB2jAuY4ybn1q4Nphaf4qt3vsD61u390aeBOGpau0zDVJsk2Yiay+ndb0HRO6MCaeA==;5:m4DeSiLvYtzlXma6VDjtiSME9o963pNjX+qr+7iED5EAUvUnHBTuff+6lUzLP/NsTEQXokJngtn8HSjQDqimpKagYofVvCiJgrzsnWneSkeIN7v8YM5btstJwO4LgPz99jJayawYojX57HIicMxvXg==;24:FYh9CO+UIQmbeStHyRfINTTw4WWRVxWendVWtmVPqQ/hXmrk3fzEqq9hHRxJd22/GZbfPL9Z1oLzb7kvmWPq7g91wbGvw63D4Lf/7qWb3Bk=;7:H7XmwkCHAvifNI0M47IOUH5pMX4sS6pR2POCWA0w+dtV4QIUbY0K3cQXhM01pdwqF1gmhDGjPm+JsXyfRMp3IyeZ9q9kznMjFu8yIQU9v5vTQCK6wYquhHYMYMwCSNFpvpoR18eDRvK1VEBFerFKtK65w1Mqhbmao8HXydGi5RgUJO7csIPjdflTe6mKxYj7RWHG+ecDPgNRrQ68iP8RFNbOCHlTKy5Nicbj+84esKo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1073;20:5O8R9S7JAo+Cc2QowCEpdOqyEdIFECGNDqLUrMvjC8w1LTqw6WeTr+3ehvCxJrQ1m8SbCMyeWkvmLoN47BQ32D5Uz/8DP5v7QZR9ICsHe7JPDhE93c1OXvbHC9kCZP+pM9MTobmn+sO2RAnSs/UaykdM5TpJrhxtgtmv1Gc7+/4= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2017 15:48:02.4883 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR15MB1073 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-04_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 1fcd6cc353d5..2e82625bd354 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2865,6 +2865,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