From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753284AbdK3PaV (ORCPT ); Thu, 30 Nov 2017 10:30:21 -0500 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:33466 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752481AbdK3PaQ (ORCPT ); Thu, 30 Nov 2017 10:30:16 -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 0/7] cgroup-aware OOM killer Date: Thu, 30 Nov 2017 15:28:17 +0000 Message-ID: <20171130152824.1591-1-guro@fb.com> X-Mailer: git-send-email 2.14.3 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: cccd8a4e-5f3f-4234-c658-08d538071074 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:7Hfb2X+YhWvYAghLBx/ZIlEKe+DpVFgt8AeACL5VWSRvsXboFA+C3r+6sX8uByOuhFpl+ru+XewsxeW9fWegMtMBzHmtc+4QLwJwWONcfGwPufSDOSEHQOFAgCW19WMDsEhu0o+CGMtDiOuUbwVK6eie8fHYZZugoXyw2PO6j7BJS6vqueYvvF/tM/estYjUiB07vJKx6XKvlwEHXMIAC8glJ7Ofw8OrlLyegqpUIxR+VW01JxN1gsrV+t9LS3RZ;25:VDRp49zeoMAaxw9dUa/PkL8IVgHlXV96qDK64PyqV4CtlsgQ5mToP66QxkQ7z8kdAzmj10QJ7Dz6kkCa37pHggA3FhBafHtJTjh5eX8OJtuGAE27rafOoaMZhkjdXPHvvhmkAeL7S2WKKy67JxyFuE984UDC1+enzvIuQFHA5SvwKT3LAJeNzJV2fhGs6EVzQKHNK1SnQrKFuK7c7c0qBbIo8p5lFp5dWvgD57iO+IwBNmzed0lfxMTrt7oubLOBRepFgnd3MY5rPi8Xuqa1JFOfcZAK3OA64YsVsNjldBVjhHvn2psLrsgZAHlJAm9e3cs9hsQRlOwiQa4ttkqBFg==;31:hIwLLEChCCQeognNKZp2gn4uVFK3L74Kxc0phphtuXjJc4R6+jaJQK2uT6oPmQwyKVubVhOmDpZ5QT2QmOsOBKmwRdrnhzVRMmK+qmMczFARsg6jkkUhzRccS9gRiJ8+FGaurQw255HL4DTH16xOn1sVCnzaIYgDUT5paR0B5MsnMS0fo3MIUkNI9nJB8gj572yPq87TeRtfhxbPS531Zo3nxYqy1jL6t+530oz9meE= X-MS-TrafficTypeDiagnostic: SN2PR15MB1086: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:lWH4jzSOUukHGJ0SpGS8igjD1tHfSvnsQb21RQtv/qzAy3wqLeu7rGrb0E1ISSqbEix25Ve/ZwzBTVmkTbOxhiZugDJNkjYfpNv24Ysm6yAI/30i+M2D2VWTk/UU7P/1GuNB+wn8OFyFxm4jAg2eLj9AMv3T891X4AE1B5rAZnoP3xUf9WxNHk2bVU19RfjFRsEZuRsx9mPO+5/RPNeTpb1aw5VRyt7mmx7brxMcsv6a3jFEdaHuRkNyxKNHYa5jGhm/rHaSdIIZdPNUNlrN/PDANWq6FJG1+m4CJlGWiQkWNueW9lG7G7R78dkeK5Audl9/s/btdrUMTry0uc07rPhbl2Sh5jmQa0DltYqFMNTXMf8EHAdGbedtOcP50O3CvgBZ/B69tW9mhQ5AVuSXtu8I3sTasxzW7tGSq89dCYDGvUd8SyBDHoVXkYKdr7eNY1YU34HbSeVjixOMvYMrgnC7gm6mFBECFguHDmEk18Zo4fTyXReJFS9OCuimzMCy 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:/8FPo2OTw5/FrpjjkRxJF/Q8DpqQVh6K/yNp5xdAvGUOyhHWcQg3dnt5Jd9EAyj30P2GiYdUTq9jTMm/DIE5rU3gUipnT83t1DRlU3oyaPCPTtM2nH+d0Ict0WRAOY/AZu/Slbp4ma/VHMMKCP2J2bSCDo5aYM9wtZuUmz2yRnV9xqib79JYdj9agrItLhYlpzC5H/ym2CygiU6/So6qP5qxwIsDxBvlcx0MYeBrpBulTPqxGrhOdHKZSuN/86mvw3qMrPkV/V3HzV9MBQVzx+bDkDqZOohiDde9SbWXFy46v+YwxZ9VbY7h1MZNCDQ1ehtmXCgqhK32rau5/7fIO5NfyW3QIRf5Q4Cre/PFUFVQXt6bqUdj34tFNlE0a5N3iq9rm4NVkGZunH3Qj7bXGnN8hayzwj32VzABcKozEzllkMmkj6wObk62uC4kLgli X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(346002)(376002)(366004)(199003)(189002)(105586002)(33646002)(48376002)(6306002)(6512007)(1076002)(34040400001)(8676002)(7736002)(81156014)(81166006)(305945005)(36756003)(5660300001)(6916009)(6666003)(97736004)(50466002)(7416002)(52116002)(53416004)(6116002)(68736007)(316002)(69596002)(16586007)(51416003)(2906002)(6486002)(101416001)(6506006)(50986010)(966005)(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:i4EcTFOl+zVrFX0NfRuSAmmsCnyP9+KvsF6b7Gs46?= =?us-ascii?Q?BZdW8EMjVkL5W+CONe1tl2m/Ha4xgSk5QG5oIW9PItT6zbhRxfZ6lHc+WPkU?= =?us-ascii?Q?cLvMQP6CFrU26kvypg7db8R1FJ7o78wvwR9ry6MdZGFlnK5U8IVljpK0qVKK?= =?us-ascii?Q?loYAmup4yM7a1ycLKffsoClflmt+PCQdeY+Jrpcr/G/Kl62aE5kunuIB+AQd?= =?us-ascii?Q?F94/HS35XT1Oo4UemZcbAX+X0NXioNYEyvNW8aLMtZvr6Ts58MCbtZhulNlw?= =?us-ascii?Q?GJ98iUP51xp4qs1S0vxn9zXTz76uMjz4YWXM8aAX6YYYzd2TYCdkEbVagwwT?= =?us-ascii?Q?ckmzVNA5cCk8fe3oocUyWCxQayNkmPlJ9QJUm24wjqw71Agn7Lj+EVmWh/2M?= =?us-ascii?Q?MmgR7SIjO2Q70qH/qfKBv5St5ANcI2Adrdc+Mor0NXL8cww1BEUVZ4y4r7gK?= =?us-ascii?Q?mC18GAvZ00BGW8GOrepPuVAp5LMFWrt5TElmWDvWvRlgf/O+nwqtxkP0FXYv?= =?us-ascii?Q?Pb0xaeJDdfFFwIJ0O4snQhLcq64hsNIPSKY7i158L2AevQ0sEwBdrVqn76Ak?= =?us-ascii?Q?tV7ZZ9Qx4eBynztX2DmuJ6IL0qRHrtJ4E1l5VZ6dhUu7bcrvhAodswUj5ple?= =?us-ascii?Q?kc630yN4UlVbgxwgUNuCR3yCnAUdaNSP3vZvNg94k8SAsRm5o5hj8ydH+IlE?= =?us-ascii?Q?xnLhyaMpVeXhjo1diV8droSiqyCaGI70FlA0/NqPvaCUqUlxdXLJc91s+u1Q?= =?us-ascii?Q?fM1AjYL6eVS2+DGtHKG26UBDOACx20OQYghEc3Gvgic71v93tz/YlRK7mMZV?= =?us-ascii?Q?OCe6IAlHZVyhasfJMTCK4aiXfuXC4tOpaS4/axN8ZqOYX60if9xaYhjaguFC?= =?us-ascii?Q?3F6WUADfzm9I9Y0IO6nfMlFWxzyDhEQYkUdep3MP+uN6bYvRJqYW3w9of9e8?= =?us-ascii?Q?K5HE+vlGeuY/pZaDie5X8Jywtob2OZ7yvcxualZ1pu5hB8X6lUJ82t9oXv8b?= =?us-ascii?Q?iyJ/LkfMQ5Ub0Gg/ZWYviQUG2TcLX1XplzL5YisnlGdhOEQ7T3TDX/sf323s?= =?us-ascii?Q?2FCEEQgraK0kXRIMTBoYvRgdX1Pr8p6vUtJRMopXVTqcMITZOJuoYs6lzHvJ?= =?us-ascii?Q?jrorChJwoNsSG0cMZy8phYP6hYDsxDTDkc/2oepWXzgBxJNwXAewZRUpptAP?= =?us-ascii?Q?ynKb6b/LofliVABNKiczHbH7dKFZ2U0iA/hdy0HqSp3lqTcNNDup+At0fzeV?= =?us-ascii?Q?B+A0BualSnpm9EkrY8=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;6:PEXej72ywG9km6fkqgTjMOEZd43Z5VRLAmrJFNfNZ1p4oSznRhQhf0TKlGv/pQlkMma1nWfHyIZEWxx0r1NRhyBzwarSLl4aZ4mp+oD16nTYvsnMWTLRVPiQxPSJx51mmcJGybGro6ZqH7h6XJH2eJ8Yv22D5E29VYQwgUte9xEn0SNiG00uR782PUdLGReojzdbJRopx5X0FRO7hbQ+6Mz6IRgxM3I4GLK6OnuLoGt/vvrbmc1KJ6M9+7SXOrsZ2dptsbDQ23YlVt6dwy8Nr8Bb9g5vTYY7nVtIBszKDv6Pps2pN1NVvGy3XWl/VDhbPbXkbfdVQ26yrMDH6M3mR56FpikltNCDxVJALYaDjU4=;5:IgEXc7uV/zXwxpSqOGB1QCjJi+858NZqvv+rXGPx8DB+Fl/wiiBwhja5fgZKJbT6BSGsiLnihfOovYA1W/r+BWq+GyjW6Y4OspaIMqEqq4I6QlE0MpM8xDvho9O4xRbNQMcvUSZNonVCCzEKSfSGgC5A5lcRhllpsGCUqljX9MI=;24:Ezf8SMlck6ITNXjkuvvGnidOEc/Y+78pgnKch9AfHobmBEslQ84g9dSqjDeIJUZnAEoYUlmBFTxk+omvlf6i/Ji2yjL5y3EtunW+JRR7avg=;7:qi8yvN5UvfVj62vR8DmLUOB9kwRDfdg6/nzH0u4QZ/3WrCFUwY9ck6dQc2LpoilgI11c7IDB/fOvqLfCOUjaWdHrmXoRR6kUqneLcHQO8O6PbIKrJ3k7h70xQUgBAgee35s7NzzAKH3eNpzA+d1lGdsDyvStEzXwpj2+v3pxrMiLpoFF1qFeVTEgiHuim28WjQMqnAnDoyRe5jsmPs/vQxBYXko1BV91NqYLHLyg9dGctEzOztD+SJrPk7EyX5IS SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:rtNKv/e8LgnlsVepeLhnCwBfKE2zHHlKLWc3qTY9HSKtn0Cdhc0aV4Yo/v64qpi86fEbGJx18WtCDmCHxAnP9xGtX3PuCOmR24envJJJmyJK5PPVu9rVbmzZQl2GE/QPXWrQfheIkBj6Z5Q3VjeB95cwSrFymYR2ZLfgr6SfDbM= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 15:28:50.9181 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cccd8a4e-5f3f-4234-c658-08d538071074 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 This patchset makes the OOM killer cgroup-aware. v13: - Reverted fallback to per-process OOM as in v11 (asked by Michal) - Added entry in cgroup features list - Added a note about charge migration - Rebase v12: - Root memory cgroup is evaluated based on sum of the oom scores of belonging tasks - Do not fallback to the per-process behavior if there if it wasn't possbile to kill a memcg victim - Rebase on top of mm tree 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: cgroups@vger.kernel.org Cc: linux-mm@kvack.org Roman Gushchin (7): 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 cgroup: list groupoom in cgroup features Documentation/cgroup-v2.txt | 58 ++++++++++ include/linux/cgroup-defs.h | 5 + include/linux/memcontrol.h | 34 ++++++ include/linux/oom.h | 12 ++- kernel/cgroup/cgroup.c | 13 ++- mm/memcontrol.c | 258 +++++++++++++++++++++++++++++++++++++++++++- mm/oom_kill.c | 224 +++++++++++++++++++++++++------------- 7 files changed, 525 insertions(+), 79 deletions(-) -- 2.14.3