From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751514AbdJENFo (ORCPT ); Thu, 5 Oct 2017 09:05:44 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:33984 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751280AbdJENFi (ORCPT ); Thu, 5 Oct 2017 09:05:38 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Michal Hocko , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , , , , Subject: [v11 0/6] cgroup-aware OOM killer Date: Thu, 5 Oct 2017 14:04:48 +0100 Message-ID: <20171005130454.5590-1-guro@fb.com> X-Mailer: git-send-email 2.13.6 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: f7873a18-9a79-4a55-de53-08d50bf1bb48 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:DM3PR15MB1081; X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;3:gwQQ3PracTPzfp+ttQ92yClFHYtPZ1udLN0P3cgfc1gEoxDpMatjkLdMRQ7+Dmxg7i8ZygNwYbQoE99KwsZIC/TOHwna8/ihZsjheV0bANgaxQ8xFpJme9hK27Hp4QZ5mXHrgvNlZinWxwyw2y+hwpNMoErorYbMc//ZjDM65+zotSiuHc0hvQwscvxkAsFWRSLrMOVz8Vl3Fh5QRcssNhblVll+XK8iWF0yG/wbRtSxNx+kUaU5hwGg45g80yQR;25:zMtDzYRrCNXSpSJayvJQBRTBNxFrUGmtTPCWK0ZjNQmB2Aju+7ty1A5K2dCWpfnSpAlY3B4ERF6PS0G4WHv+KPLXDMKXGz5G7Kvwa2W0eBwYveepUOYlhlEInzvrIPhcExIADhcKzZANB7TT3QU+ucWqkQvNxKbCD0b3JkNUxlIodMXR7MvpeQE8NkdyBVd/CCX+WEnnghKpraOMH1OIJAyD8N5CUWhOyQxHuh5XZbUjX/rvn2j5dnGK42N6uG8ab3zQnFCLeUwyY7TGLyMCLTV+TQHUuSK4WUDhbznyiyWlwiLnPV6GuFQhPT7B8Va0cyiYu7oHKDjXe3SF4dEINw==;31:jMDOOaAqJsdcZjsFV59xDKwcYXil7dK/jxw+7iWzYOLGjVNYbcOROnWyA/GJMM8BtixW1mEv9Qrhk0Dew55nJArxLWo6k/xdjt0+/6KAmANmkIm85rdiOt1tHG1WsW6VKGW4ddcpFGt47E4IdPdJDV1rPrjNkDaugo4aJTBxELbqZdct++P/XMMWvTs7dx79InXhekQXcEJOXmlZ5L6WwqbzQptbHjA/8T12oxq+ztQ= X-MS-TrafficTypeDiagnostic: DM3PR15MB1081: X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:VFtQPEGXjJd5L+0OOsXZIK+MepYP7Hrq+vW/hHCjAuB6d+Nkq+ydtVLKRmBTQkVb6wstdaqHJ52w3VQCi6MqjrKe6pti7fy2p0dYUMRvTO97OIOdbmTvIWCAFgZuR4kTbxtS6SMj3+un1SqmACZ0sbzjya2nyDk2JNpnwmr32UpEIbMOx69Lvidjq2T1RNf+Nt+AGkPLCOQldb2AJ8qSY4SszVx23fkEWv6lxYEfXLQbaHNLsMUL//rjMFF7Dwobx0wUcH1NJyrKGcgAdJHmCsrGHa9hf5m6sAKaRSMTlDPubDTFd5Qds6urbbHnUucbtNAg2dJpuTntUdsgu8sstTrqHR881WN7p3UwisUEgl1c766/IcWGXXjwiHPNB6r1eOV+mZoftObt8W+MaNJXdwB9oVj+LolCKqoccWSXVniyq6dy4x1ucZVciCv+mT+hvnhGcYEfBf7Z/3UYWQszLo+7plIrShKSyK6bdc4krlJRSUrKJJKE8iLp7OkQ8mYZ;4:zcIb0viDlO8EysdnTzUjSurRqWy/hf4R0iPlpQ7fSmpZVcbm6kzkA6PYXY8oh+WMKLl9Nau9zJ9pPuHoLRUBJrM6xeZgPndUL2+Lu7AYGD1QPkZ3HvUYfg6Mo46KGyvBj5oQwg/6GoAQvl9bjM5rBu34Df6VrXfPQECf4QuAValLbUZfFyzUfD3S5Qr4b5Tu9+jVS//momp4SlKBQ5dDVEY0rjxv0ZK+m7i/JM2QmG/+bsxZT/lph93Shx81hfW2Pnv8H+EgemhcglO/q09a9EfmHUhgKCYqAtJajNnq08QGf0tDYc5sgydNq0nu4CsyaiIGzTJpySLIJ196XYmiFdpQo0rXyCs9x8eFpXzv0l2fvDcntov0mK6YNrXd+OyZ2l6Wns6R6npTMGGfyZnSxw== 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)(966005)(4326008)(39060400002)(36756003)(50986999)(68736007)(8676002)(50226002)(33646002)(105586002)(189998001)(106356001)(305945005)(81156014)(6486002)(101416001)(81166006)(8936002)(7736002)(6916009)(6512007)(1076002)(69596002)(47776003)(50466002)(5003940100001)(48376002)(6306002)(6506006)(34040400001)(86362001)(16586007)(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:QcRualt0UXSjklO6reF3jC80sqJIgkEnl+3jPmh9u?= =?us-ascii?Q?n6mzPQ7Qi64FvjWt0eQqO0XKYsOisq02J63UbzZyuPvhHTqPK8RnfgpamQv/?= =?us-ascii?Q?rS+AJmp7/v9KpUsVjHY2zyKEeoZ/UvEEhQqeiX7iKz9nxrTIQjZP1eQnZCi1?= =?us-ascii?Q?oUa2W+7oaT3HFEh2ap7Am5jkYDsxCyudzGP1gF5dnVgkWGW2M8vhaVy9uMXi?= =?us-ascii?Q?GeDknPhEgq6lt1V0GfeOm+eeLgOtCYEw8aiTmYFXwwRwEkUFJ0ka8j3rhkZ2?= =?us-ascii?Q?tvxWIROnG+j+eELnbkTI34AQQH29hjYh2NTLAPXNaqlNLDfkItZHtgIUKwaY?= =?us-ascii?Q?E/Ezz+tZKyXAiPs7iyDE/ZMeepE4PxfN1R1D37uyt3qi2sfqNl+bTJEkCGet?= =?us-ascii?Q?UtDCm/UA0gM7pAe7RZdYw5zjYwy1HpHDMySpy6wXzskpiX/L+oyZIKVdwyAs?= =?us-ascii?Q?h2/c6tz8ubKA599t9eteOgN7dJhJ9gL35gZUZLYzlSHnNVTek2SIIPAEW8Pd?= =?us-ascii?Q?i1WjXnntESZyD5y7250Xbi+Cswq13ZA74g3TT9HgSOV/4xSQsBm2kDqEtUnG?= =?us-ascii?Q?ONeGJMQaXMpvfO6++O7QRrwuL4fcikwbM3dRhnLY2FEFu+cbIDXkxwj1Pvqv?= =?us-ascii?Q?kCx8VBL6qq2TsaKs7HL8KlIWHkpZyEEGirNEL+GaqaHzSJOuZRD7YxqhcmNF?= =?us-ascii?Q?5MqLXGSy9we2Byvb1xdLVjbHpc9AaRTyYt8ssXeG3SsBtYRuJx5B2NDoF8vp?= =?us-ascii?Q?NI+K0/QY8V8qdxNx0W+eCK2UvtqzDERIWP+C1m7b/6XLBYyQJ7hpDDMyqWVA?= =?us-ascii?Q?sNct2GJiKFs2zyCQZXtI5i8Ed2sFAVTaCdpSryi2WOEG9T4f9E4ZJVajMd+m?= =?us-ascii?Q?sMcY7yuiso8M8/CnrBIrFia+dLT9LUsOI1bJRzrxZGzZWqBT4qg6LRnnUcZZ?= =?us-ascii?Q?vznRlz7LrJlkJA7K7LOh8p36DG64lyTx/65SUyQiBvnFVaBTPTq72ipBrP1R?= =?us-ascii?Q?BwIN8dfwlZGm1SZ/DeAhvKO23yBfrmn0/l7ebuI3p68epkJjQcEiUf+643P0?= =?us-ascii?Q?RSmuUD7hPesIOG9958A5+lClWD9oMptP2WVyoRUL2wIGUBfxqByotiCww4Sh?= =?us-ascii?Q?eOSCshoZXXX2/8EKwpCLXdgqORPZSlnJ2WXSWfELkodZ1j88R5W7Q8Yco9ve?= =?us-ascii?Q?PklGT0CkLW+FOYuzA3jkgf9uoZC4I2prwKG?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;6:VaFy758F0OgTCLJemgN/Mbmz+OCGjEe7FBkesKwysApGNaCSeL/9zslp4XdwvZn/8nqdziLnsJqdsXDTa8nkYJFSh36t0lqrjm3ZOruaksaPHPm7Mq2Z7LvR0SwCRP4Mhf5Q53YBTjSWlhVaW0a6D+b3srmO/4//LF6Q9VmtNLxrbw93SzvEm6AI3Cu0JJfsVEpXSlawn2cNvz1NmA8xkGiZE2AMXTBC+AcWtB+wephCjyNn0nP/5HEwBRXYbA2zW1EzsF5MqWAYh6xyLpAEQtYPTh6iG0AuYqhTQEZf3asEN877PJNT4zjdjxszvMbdsdOceur+Xb3NtTaxu/2V4Q==;5:gNeL4ZT8wvfBqq9sxRMeEXlPufBfrBhu6Jco09Za6q78xkGZjH/+jTcZsjKhOn8k8XRCOqeexD16mOZJ/EBti0R8vJQ4rx60MHiqWMrM8HmFLrMiEx7X1ad3Z7SpnK4h2+EgqhnLflWfsx4SCPFGrQ==;24:ICTym+TygoMocepNnJE6+ePj032qsZ/91sO2AUgu20fqaJvGHnchzRJ8xS2Yyiwa+H4ElHp/6pTOZK4sBFDAQmYdWGjMb3fS6Fuy+PyXT0c=;7:WSP8N/dX5iN0naecTVfDEi3DgOifOq4LAmEk+SqEDOwTTzEgVuq8OEw9LCImrKvlnblJSYeXkM5SpYjeyDPMrghrrfzkiaD+2NcO09tj4Q5U1B4CkzdqQe+dHbVYxdql/Yen3p7RH+Kt0sRfQlCfOaQw08qTpOhEYlvijATisAUJ5sAkbcXzdl2EBc2797iIVMFIqxhKdmEvzZe8rHUIU8T82hziMgTaJSP/tfd4oKU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:CyCZEa5t02Djn1RFt8QSTggHUCANn5tL1+GADhwzO0Oq6idyHk6xpeEjHv1MRi9f9OWPnEr+qRca2z7C4YelDirQpmdMayGtY11oim21AA9dWIhgAl51whPNExE19Slxq4GfEQGuP/PGxW9EiZzsrkBZJWghNBe599iJICuCNQQ= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2017 13:05:17.8212 (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 This patchset makes the OOM killer cgroup-aware. v11: - Fixed an issue with skipping the root mem cgroup (discovered by Shakeel Butt) - Moved a check in __oom_kill_process() to the memmory.oom_group patch, added corresponding comments - Added a note about ignoring tasks with oom_score_adj -1000 (proposed by Michal Hocko) - Rebase on top of mm tree 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 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 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 | 249 +++++++++++++++++++++++++++++++++++++++++++- mm/oom_kill.c | 210 ++++++++++++++++++++++++------------- 7 files changed, 495 insertions(+), 76 deletions(-) -- 2.13.6