From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751519AbdHaNfB (ORCPT ); Thu, 31 Aug 2017 09:35:01 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:53940 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750883AbdHaNe6 (ORCPT ); Thu, 31 Aug 2017 09:34:58 -0400 Date: Thu, 31 Aug 2017 14:34:23 +0100 From: Roman Gushchin To: David Rientjes CC: Michal Hocko , , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , Tejun Heo , , , , Subject: Re: [v6 2/4] mm, oom: cgroup-aware OOM killer Message-ID: <20170831133423.GA30125@castle.DHCP.thefacebook.com> References: <20170823165201.24086-3-guro@fb.com> <20170824114706.GG5943@dhcp22.suse.cz> <20170824122846.GA15916@castle.DHCP.thefacebook.com> <20170824125811.GK5943@dhcp22.suse.cz> <20170824135842.GA21167@castle.DHCP.thefacebook.com> <20170824141336.GP5943@dhcp22.suse.cz> <20170824145801.GA23457@castle.DHCP.thefacebook.com> <20170825081402.GG25498@dhcp22.suse.cz> <20170830112240.GA4751@castle.dhcp.TheFacebook.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.8.3 (2017-05-23) X-Originating-IP: [2620:10d:c092:200::1:e6bf] X-ClientProxiedBy: AM5PR06CA0031.eurprd06.prod.outlook.com (2603:10a6:206:2::44) To SN2PR15MB1087.namprd15.prod.outlook.com (2603:10b6:804:22::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7338ecca-e47b-4a2e-1568-08d4f0750a34 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:SN2PR15MB1087; X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1087;3:kaDsIHgZbHzBeO8e0Rk9ufhjq6PrOWy0arb+3J2p4n53H3bFU8itzSzTTjwek0/tRB/pype0SKW5Jse98MNmefbnGLqMO5lDsOUX++yaJ9Nv1W8ZAVLaEKAuBzXkcUS64hn9KTgSZYP287p0af//FJ4ZImPmEIND+RoU0W1zlD8+Ar7t+bjzNcTw4tIAvKBLNuoyf4q4zgOmTKHJsA1tgN2ZEaTHeI+v92Ly9Qzf88NdCkNul+iedat8lz3ggP65;25:ga6NfkvwwUSHFgAoiAVgxM19OPN9Xdi05LbpBNeVHHJ7L7Gswlc1Rnbk55jk6Gibvwpl57q71a3rUiyhCjyyNHr9GW9PlHHNrf4jWXpTNg5jKupNDacnX/52lF7iQ4KeZsfTMWxPGM3oHg7PGXA1tR27rOYgRnj2dlc6CgfjLtt6KNLbg3ZtAvu6NbvjdDYzQLDpRVF1XY4NhgpmkWmNr931v69Mat97JWSG8pv3VtcEcGhGedijsVct/aYfbN3bildX4TpqGW1kLK2GZVtDeNv3fMraArcCUOdsOw1dgiUiU3B6fNDWd6uklM5UV5cZrUEkM/3+s0zIk0uVFyv3uQ==;31:bpeCWFuHUpveeYcqx2g0ILmo3RRdQjk4Ewxu5L1d1dh2jpl6qDc3zwTHUB0ByseDOf86k9v1JErfWvbSY/a6G3Gg4MiglSmoxQhqAvY5ntv7ktXCnzuwzHvwcnpJiZ+qqlPKd9pEufTQVUnrre0DTbYgepfIDijilVOo7WvbZ/Ip7IhcPGcqW6BwVtAR7la1zVthvKTkUVgOcVKPMfrrb3rudsEzmrKoO550VGdyHng= X-MS-TrafficTypeDiagnostic: SN2PR15MB1087: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1087;20:67qU5O6n0xD7g+1cAwtiYWbv/csv1OuPdvh3qJfnz/tEapmAZSH6Hb+Bdg6KQkPwMNjsiHZjrj0GC1o15lDU1oQuJKjS3/vlSEATawnByMtFe4uzITLRWJpWfMJA1o0JHT+ECO3ev351RDG3b62plS2/IJa+FcIDiiMAe8Ac8mMFed8S7T57uZjo043ow1l89pvzJAqCXelYWPJ8ybnba5sSkiwlxPtBKxT0NAf7M1YruzPFsiCQHJroPkwwEXrgPrinA6CWe54WiiQ5DqiH15TTTOkIknr832LqnXkTkZ5rHIbu4x4iM6ofDTQqdXg/WK+qZok4w40GPIrrfQHmmR4MEGzv6rCaWM7lR4Wqk29JnemkzYD25nuJwdN+o0yMMc4z3GMkYiRUN1XC/ba7DS5Y1gjpdpKrlYdHo5aUo17ce7WDXCPKo5rH5IqIi2taSqamzYxu3skejedzB6W5FZFUUkSbq5OHleSqUmElSGPrrmfLFaJsJj0MOfhQG4ou;4:m864724kS5x4ZK6xmWuAZEC7NUtN0AmHzcLxhB2/2Tajwi5AtOW/VtlTLA/D0md9DzX4MS8OVIKd7z/VR3jg7yYitLa87mTZL3yPcO9jAhS0FL5H03Cv4s+Im+uD3Ao0aBMR8lPK/v+1U4HEdNuyaHvug8qBT/52dXb53yk4O9+Rlx1DQEbyu+Uid6SEmX+Fs+v9XoHBOgRn2NCqy+hmZVcdoGexqdmoRfEf3/zFx8hAhuIUbXppvuyn5AdM1bkS X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123555025)(20161123560025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN2PR15MB1087;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN2PR15MB1087; X-Forefront-PRVS: 04163EF38A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(39860400002)(24454002)(199003)(189002)(6666003)(2950100002)(81166006)(76176999)(6506006)(55016002)(229853002)(9686003)(54906002)(2906002)(6116002)(101416001)(478600001)(1076002)(6916009)(83506001)(4001350100001)(86362001)(93886005)(54356999)(50986999)(23726003)(97736004)(189998001)(7416002)(4326008)(106356001)(25786009)(110136004)(33656002)(53936002)(5660300001)(39060400002)(6246003)(8676002)(8936002)(68736007)(81156014)(7736002)(305945005)(47776003)(50466002)(105586002)(42186005)(18370500001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN2PR15MB1087;H:castle.DHCP.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1087;23:IrlNSVCWQE/GOYSNhJ56lxgkmms2bUCRbo+EbRYNY?= =?us-ascii?Q?vccT3qkhDBzt9IOBax9HBQhoXmEiKBumYq2hmw6GzQajE3qrd+/qmQIk1KZT?= =?us-ascii?Q?H3hobhmOItynkGBAdyWoDF8KXv+ipYSIltJkSxJQVTK2RuzMowCfPDsPHYeL?= =?us-ascii?Q?hbRT3hLklQg8FWBZQqQaX3OTCVp75y5GifLEAAIGuVshbsOckcn6row0n+hs?= =?us-ascii?Q?wayByZISS4xV9/eVd6UuDSrmfyvpz/JCRXVsxQ8tYmUpalCWY/vD3LQETXp8?= =?us-ascii?Q?nE2RWuOtmFR0aY81KAdbLu6y0XHdg5wQnmXchBPuyBSpFUd2cy7kefg1n9Qh?= =?us-ascii?Q?YvG8MrGZGVZk4rIXrHhaRbINGo+eEloIpeHG5ozRo9JEjvpuyQxqVlBfkT6F?= =?us-ascii?Q?stIBzAWc7yjXLNJ/QA8fPOwUAp0rbEbBtC+HYXsLUeKbZxltuWUu9BPsM2lv?= =?us-ascii?Q?0ghHNY4vSCuIqjHkw4C0OhM+PlNCgDl8HYQzMBlqEFnp85D2b4bTQBvY/rQ4?= =?us-ascii?Q?txGv0Xubs/4AlkL0LB3xTcJATBd/XWwzhgY+8BQsFw1apLtLnrB0O9fqh3qZ?= =?us-ascii?Q?oiDdK+WXgSmnvxoQsGVhreMnijXviO/oUgX/NidiO2wDg02dYiybSOYb2KLz?= =?us-ascii?Q?FQSa1kjsSvQos1FL1l3kAWqaf9Atwwus1vqtYYxUMiljh6O7bytuhok3ceLB?= =?us-ascii?Q?XsLjNTxmnotXq8f4BuC8l9CpNyfytcTTbjccfbVk3QgEzTbkTmD41hUyoHHe?= =?us-ascii?Q?lD9dkaNMcpycp39Jw6Xe2E4Hc3nQ+qzSBJGGRK78R6UR85kRyrZ8hWE0fXVA?= =?us-ascii?Q?ou4BjIEqUmeygxqM1N8dXlS/TYidRjhJd0Rop03CdTIb4hJ/rL67NaYXm8Px?= =?us-ascii?Q?+dAUzUC7uBO0oGAcXLJyQAwJ24t1GvC17qA6CnAz70bJOftT85H76IShpbzm?= =?us-ascii?Q?wr8g3AMdsSX5vDaOji5DQiahCH7dCg0ZL5I6htLcH4Le1IT0/ptyZcKs724E?= =?us-ascii?Q?uh8q5PT9bOPN4ngQ/OerUSRQ9H7dIuegqz+Y5lcdTUIDQQ8XExk8JvDlQRcJ?= =?us-ascii?Q?g+QVYoi6ckYwt8LzzEzAfJJaEzNCG4UxP1M9+v8HZAjz2H+PrUAFpZpnJvoN?= =?us-ascii?Q?BzMcC7SJvHrn7bPIFh5o3iIdiylGsvxYSrePIOhAzy+egZ251UlKra0I1J0g?= =?us-ascii?Q?qSDEhN7VcFN4Qk4aaUJH2lMMYTTiIdrhBfFi0YC3UF/HM/mV5+OB60bHw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1087;6:Z1f/ffB1MzY4q/SvOyixdaGuZHm2hYiDH1yEQXh92xuDjTFsJa4C9EaJhcfU0FDQylY4oUMzba8vWW2kkXAnZhE+iQP7rxpK27ohHFLOD6FDxs8Zv+mK62NcY662v+dIf1CzrX3qTFwYbTtUP/+YNLOCbyPPtiASyMG4qmJMIxAXFzS9zorNXeCgxEKR42DKvSrn1VRUFR24KMNP87YSVWV/9jbwVXD+AmZgpwffEjjF15ZhvpRHYsjwud1U3tjnvUl0B4NCmRuqTOXmSV6zCr0UJrYXbwynPT+TJRKUl+3YJPeEd9y6gwTo3bwx7H4kailVVh9vjCQc0N3kfYXUkg==;5:6pzBU9lOYifDjKPbb/rZy1ySYM6iW926xOaOK364BJco0mwNPSljL0P1+OtaGClbZxsRhvXQhR0/fVL7wX2FG12lC12rCyBSoyZ7B3tvqTDZe7EXFxSG9DWa54fXj0A8uQP0xAijY3d3r9A5cptvDw==;24:d+ODkvM1hoC24iVKF8xHnv0zJ4OqGK5YGc3LR/37mHAyKxPQzA/FE9TvY18G4RLQL/p41429eQVW15iBuhpun+B0BD+9IRRgKKCXjBYwQJ8=;7:uKslXtGTrSEVIzoHswJqpf6L1Nu+o4E0ochz3ly3D81fRQXNu9H1biSNF9fiXQ38ZMkqCQbUfaVdEFOzxdfSFhDQbtHgXVMvlaaeLxbzPCYRed+aMBB3EtmCkxMykrRhc2vDtgAYtAH0LvlXzQozXelHusRkGanS1Rx2UiahYbZVskYsKpQTvE9MbHpqTdxygk3DdGawQeApMba1a4lnlWyhlVSZeomM0URUqrHS/G4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1087;20:li32g2L3O2++ikTcni8XVxqSRbhdj/8cmjcK51MhfmtRvF5OJNY+5BIRF+5xW6RODLXOaa5eaNg/QjgmSSgyzhbOC25qsgAjEtozZnzCVofjsql42Gk6ALbqNk0kBG+0IdM8oKM23dTVCSXiBRm3JIjJxQJkGZQWX8pb2ypojWc= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2017 13:34:42.0044 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR15MB1087 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-08-31_05:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Aug 30, 2017 at 01:56:22PM -0700, David Rientjes wrote: > On Wed, 30 Aug 2017, Roman Gushchin wrote: > > > I've spent some time to implement such a version. > > > > It really became shorter and more existing code were reused, > > howewer I've met a couple of serious issues: > > > > 1) Simple summing of per-task oom_score doesn't make sense. > > First, we calculate oom_score per-task, while should sum per-process values, > > or, better, per-mm struct. We can take only threa-group leader's score > > into account, but it's also not 100% accurate. > > And, again, we have a question what to do with per-task oom_score_adj, > > if we don't task the task's oom_score into account. > > > > Using memcg stats still looks to me as a more accurate and consistent > > way of estimating memcg memory footprint. > > > > The patchset is introducing a new methodology for selecting oom victims so > you can define how cgroups are compared vs other cgroups with your own > "badness" calculation. I think your implementation based heavily on anon > and unevictable lrus and unreclaimable slab is fine and you can describe > that detail in the documentation (along with the caveat that it is only > calculated for nodes in the allocation's mempolicy). With > memory.oom_priority, the user has full ability to change that selection. > Process selection heuristics have changed over time themselves, it's not > something that must be backwards compatibile and trying to sum the usage > from each of the cgroup's mm_struct's and respect oom_score_adj is > unnecessarily complex. I agree. So, it looks to me that we're close to an acceptable version, and the only remaining question is the default behavior (when oom_group is not set). Michal suggests to ignore non-oom_group memcgs, and compare tasks with memcgs with oom_group set. This makes the whole thing completely opt-in, but then we probably need another knob (or value) to select between "select memcg, kill biggest task" and "select memcg, kill all tasks". Also, as the whole thing is based on comparison between processes and memcgs, we probably need oom_priority for processes. I'm not necessary against this options, but I do worry about the complexity of resulting interface. In my implementation we always select a victim memcg first (or a task in root memcg), and then kill the biggest task inside. It actually changes the victim selection policy. By doing this we achieve per-memcg fairness, which makes sense in a containerized environment. I believe it's acceptable, but I can also add a cgroup v2 mount option to completely revert to the per-process OOM killer for those users, who for some reasons depend on the existing victim selection policy. Any thoughts/objections? Thanks! Roman