From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752049AbdHAP0Y (ORCPT ); Tue, 1 Aug 2017 11:26:24 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:60204 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751680AbdHAP0R (ORCPT ); Tue, 1 Aug 2017 11:26:17 -0400 Date: Tue, 1 Aug 2017 16:25:48 +0100 From: Roman Gushchin To: Michal Hocko CC: , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Tejun Heo , , , , Subject: Re: [v4 2/4] mm, oom: cgroup-aware OOM killer Message-ID: <20170801152548.GA29502@castle.dhcp.TheFacebook.com> References: <20170726132718.14806-1-guro@fb.com> <20170726132718.14806-3-guro@fb.com> <20170801145435.GN15774@dhcp22.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20170801145435.GN15774@dhcp22.suse.cz> User-Agent: Mutt/1.8.3 (2017-05-23) X-Originating-IP: [2620:10d:c092:200::1:e398] X-ClientProxiedBy: VI1PR08CA0152.eurprd08.prod.outlook.com (10.175.229.30) To SN2PR15MB1086.namprd15.prod.outlook.com (10.169.192.136) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 640d4c01-f1b9-464a-f0b7-08d4d8f19eb2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:SN2PR15MB1086; X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;3:w8HwATC15z8TzWVXIIehH7suNhQpXUocRehEdQJyhX2AoqCG5IvgGHGdgrVokG790cd/orCO73ufE/k2nzRYEVTSwIz68Ng+d5gPDGsRCNKdDDEVe59na1CAtvsWj9YE6YdjOr8b49ZHBw4U7NJJotVMDMj3pofhYcXmbQtzt9PTTOcu57ytEDGai5L92R+ngEOJdZW/lhP1J/3+B8IQc/v/CnDJlxCcAcZtf1zheOc3pzyB0j7yhYhU4ijBOGimcHqtF0RbrlOtf6qvPWk09oNVVigX9MWF+BvjCfe/j6p/BfdYwdwOo4SYZrNIhOQJZCHCEYJxq3S5U1ixQsIiLodiexBYDSleYBCWcw4e7oKBeT9dKjnR2/DDJCB2ApBlaPNsdXKTy8rWeUAmBhb2hsxNGsTR4vubDQnE3zjNJJjBmWfDSK31am96/Hb/5/m4IvDYv6rKwFJX1rEzMkOqNDQ7MA4zXZdFDd5DauLQY6f/q7HY7z4hFn8rVGG3LbBO5IrpNB1rrLw1nUTsLYc+Iu2Q1AKfQuz5vzUB4Uk5bVBUCFAqRWmgL87D897738dkanWh8nrYsR4mkQ2MAYKthceAlIIQjgRUu46xK1sR2iZkYTR79numDFc7AsrjNnoPL+Kkigyhxy7uQayJs2GD4X6ey6adOpYD+tgTSk8y4sfVLxZvbucVefRW/Irr3/N2gPpT6tiv85Rp9l8GRhJ4QzEVWgiB0IFrndcpWuUBZvZCLcwuuR2Y0ldkDCixw39e0tembq4galEZx5FHdwmVLfQ0I5mmjULCEPJkEg4XR28= X-MS-TrafficTypeDiagnostic: SN2PR15MB1086: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;25:JcKNBbkLMw6LHpiPlFQkvNpalCqUP4TLd9Vo4Zg2cJjIcnbeIqBa/j/kw5/c8tAk9BAQJyRSiEB58++gfcmk+L+jPkLJZHE/C5vI8LFI8qQo9JOrERU2l5qAh2PbP418FWHCaatdOelJw/rliBGOjCZbLJZR7bNUZhD/xKgZ15bKoGGW0pY54qI6wGtN35euKRIrWvEsi+R85pVYW1OrAEUxWnCpwjYV/BXUruCzyS5jH9fnSKXVFZkNbpef0k5vSV6/Ec4/abGpjj9CqfkVt/ynZmigZ9E8DA9eolqJ9wGZ/c42/GKkMzOjabR098rJgcvv40VSiJEkEIuS1zH4pqoAtoUKGsVIs+Gtdp1m8+Rozy58g/5VG9xEHHAxE3tR8aPQRy38XxdWQfHaDPuccte2+AfEuqkiOf37i9nQgAz4K9lErzBDiNs96V8Us56BosYkHIhPn4rw2v6Ixv73wKmCEqA2cAupnBRQv88cxmU/+54N+NgzKmTuPwssRotDRv5qUuG++365zwbxVLHJVB7T3W8ZiN/RhZ7ZFgvRKq7vzj+LqoKxKuYmIw0lE6Dxn5Ckt2+vvfaNloUT6QDPzRJ7CgI8f+qwMsjab/G+TgycWwPuvD9ShmRqGjK/R1BJsCyFJjr4PBELdzG5KWeasMZN9aW1UyjUDwL8ouEGmNZuRbzsINQ2qd/fF7K+RHaLP1myrMri4CDuhKo2JJBA6MjsiM4yPICYVwJXOXuetlgEYQqqta5UjqvsUoJmMjfgWC5x8XeUVd/iuUVpVYBD/CkmfZr9lfbFqJCD34Jt02xMOLlSqcJzeRdWWiqFZqUvlQ8EVAyz3LlO9tUYVcP3+5fXY/7z3ty8D6BPDqq+9nmntWF/2m66aiPrl1MkTNrtX0jtW+HvNy0tdeTGTRlgnKEFvd7dmpMynmU2Lb7zW9g= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;31:RDSFcTmheF6+uK9DB8kSvHKTSe8imiCYuZhfkdnQ6quY0gsas8NKFlrElJ01ewAUI5DcM+9dDm0X6Kh9zSd3Q6kzDKE++MIuS5eTKZkOUGUhJP8MVX2jamgbqwDDxAN35Xnukh2incdzNigM38Eu/NzPPiG6x5GDDi+JP3rl0hEvHKlONCYWg5kjdhbGi53M2kq65uaadASPfZ5KH+DrePy9GI+5Q64wuZXYDROfM7Z2C3G/qNR8mrx3FvfQGEEWKgJtJVYOIalNrmDhP/ufkeSsaHwLJdNCdVNJBgTr4GPrRObcx3FEHOof5y/d6x2u0p2ev/8nyqbJ+XyetJBTuexyWkhereYQHNWTAJ5qIYJHAFwM9r+0CDxHBh7wQ6GIuPAlyoyEzUnJ+SWayoQPMdrqTYyqirwNQohYACO6fr9DaWaX4A8oSOIDfmagF10nMxV/nUTm7nKwos9EJNaPRZ1rfZIg5KBkG3qH86Tj6FkJBFK4IxeLbOmLEuMsZi4r8/tDZ6mPsFjjnXjGPZRgAz0U6sQTtr1NJiwNlxluJzHcMil4usLfepkAxYi2BGxgt5gvLc30+fNfTLB3PNIUsGHxZ/YcqlUcc1/uC5olbEGkR4+x7vd9+fpQS4cZDoMfs0NJvTo3V3F4mV/zXX/d7TL4AYtjUj4yWLEris7fgqs= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:6g93cj4up4qYD3t/Z+v8jkngtc811lRgv2agmkM+t/fTqXWTqf1EGxRDg/oUJONYO8y7Yo3v0yQOKK+jjKt5Mj+PCKtOYtr3vQkrZHoOPB4t4EvyZMOYj/scsNamMuxaNHbTJrxLJHcjRRdFE7uw0hOTSpAzsQRTsIC9ieaLCfmy9UPLG+ABtjbxoqIoLFZ9Djon+iYKl2klZ1wRgesrqjgEszXCgViAlk/Mcw4Jlqf2fDZzrGmR81ka2BtdP85dFk0r9ar5iJe8O0bF6G7swjVjPKJEpvzOxerRK9lKpAIeVDzkUgTo04r9Can3mDpYBke2KXTzUpcWZA98vNat9qtEgyZNmJuiKP9O5d8ozQtgnhc4u0XEiLa2IBFKhcPB68vrsGGyTN67QwB+DUqMFSrKoPkd2hKafcDZcsqB7HffieSZj1ey4/HNtbFZSxNY6NIcF6R1sq/hfBxEx0t2jmHF5beBmZ9M6mZywgD8GsnBwltsDSPnsiPiHyBGIiWW 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)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123562025)(20161123564025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN2PR15MB1086;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN2PR15MB1086; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1086;4:1wI86ZKsQCnON7aOsNTy11FxadvGmPI3DjDf84jCnw?= =?us-ascii?Q?9q3WQKECs1Fe3SrXcANkdjs8W7nVltW0IfuHSv5fAPDT071GIhDSiEUBHU+h?= =?us-ascii?Q?PDRI0dp3z/Snw8d6srthphPv+jK+l0xGF5P3krgeUV56YY2Ux4HibY/9PMx1?= =?us-ascii?Q?2aUz0SRLtFJ1EvPTRQJbbsxh3OBi6GNfPraOtbh8P/wLi1gGTnPn3dbd+jgz?= =?us-ascii?Q?SPnZXtijkRwA/z/zQDuEmJLJECHsSFHjIsUShuVCPylUAmQFp2I7BxYiDr3q?= =?us-ascii?Q?PzGQG5cxwFy80ozZFAtRlIkzIWDf/8wHoPuJG+/fu1Y/ebUKmKpr0Vs2taht?= =?us-ascii?Q?4wvxURYUCDOYG0UmWqBLMOy4Yg5OFq7jApcfni8gEtwBZydV8sYDNOl06jxF?= =?us-ascii?Q?DuZou3s6GO4yzkpG4BEIDkdU29kF98n0cdBb3/K7cJZuTU3N/MQEWRqYHo39?= =?us-ascii?Q?+YOfY3iHy+Kiaq3KLt22B2rOkPxZC3xaFblO5+RoIwgi20MC7DtkpsVnPE+a?= =?us-ascii?Q?xvDVELYMGPtEX9VulurmaD16bg2VbQRuBXM6Sc9VuAIuRt1aG+WRepCHvo3M?= =?us-ascii?Q?Ci/xRsACoiN6EJRoKJdgevGxo6muboN/OeSHgEvY8T5Fx8I4U85WkUTIAbxJ?= =?us-ascii?Q?CxeiFh0cYM0hmwMzhXnLNFJ7WWim1S5HRTTY61QP8CE2JOGpJiHFVe0E1QWE?= =?us-ascii?Q?Td0XeP2tbxuU3pEl1oEx0KAROSpStPHKCXtMMBpMNThzSS8QL9ioYpg029F3?= =?us-ascii?Q?6030p2IXs7Q7OzKecsoo4sDqytN/XlG6mIUxdGnHzqMKrPQwUODzL5U0rqMo?= =?us-ascii?Q?v99wJcNN+rDwnNV8TR8Khe9n6dbsPqydEfvCbxyvWVzmPzn2kfoBWqcTgUtD?= =?us-ascii?Q?VVY7eSg3Pxsi3s/+uoKZQ2OZaL0k22Ur8w3NtswP35AlAYAp9SpSiSEC2XNs?= =?us-ascii?Q?3f1jkY/Umr27u3BPPQ+SPL7FMmRXk0H1AKe0GS50UZAZmemhxRStpnhHwKFd?= =?us-ascii?Q?/c27Kt2sfDBD4leeAhuizWGdLUC/dVar+l28T+LalERwb/DiB+uO9diMfgu0?= =?us-ascii?Q?fQUoJzaIZA2ER9hy50535mVLUSBWKWtHQC2pgVaZz0G8JdPWTncM/24VL3bw?= =?us-ascii?Q?MXC5+8vpnIdLCnVqfg8ogRwFbciG2i?= X-Forefront-PRVS: 0386B406AA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(7370300001)(6009001)(39450400003)(39410400002)(39840400002)(39850400002)(39400400002)(24454002)(377424004)(199003)(189002)(9686003)(33656002)(478600001)(6246003)(50466002)(54906002)(38730400002)(110136004)(55016002)(47776003)(81166006)(1076002)(86362001)(6116002)(7350300001)(81156014)(2906002)(4001350100001)(4326008)(83506001)(23726003)(106356001)(105586002)(54356999)(6506006)(76176999)(6916009)(50986999)(8676002)(42186005)(53936002)(97736004)(7736002)(5660300001)(101416001)(6666003)(2950100002)(25786009)(189998001)(229853002)(7416002)(305945005)(68736007)(18370500001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN2PR15MB1086;H:castle.dhcp.TheFacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1086;23:OQBZ6/XShaUTYvDeCo1CKjSeGtJNYf2UHi/FF+UVO?= =?us-ascii?Q?qOaobYCpr67bKqUxyneZxAPZeVgZZteod6GugmpGihwuj56g072lb7dIDLzH?= =?us-ascii?Q?AvAaWzp3GxDqf5ABc2lHXJ8t8+PYOO9ZyeJbxdJFcxm6Zln3p6n3iY2W2M2/?= =?us-ascii?Q?GPc91hch7DQMJc/e3Wnlk7byw0eKIxwOxnayurcra2QuGDRbVHvQ0+n4nF3j?= =?us-ascii?Q?W4K+CJ3kDrfZqhtjNl/A2HYs0nlik8H4nIicPPNurMn201p6yQZLRYyWGbAV?= =?us-ascii?Q?MvD0S5bWfluZSgIutzngvzQ71QDBlvkzeb//kyV2soVRO9C0m6Xv4B1eGlX1?= =?us-ascii?Q?7Bs48d38k5TNpkoWVMJf3xpBQeqy2QIYZfhsM+KG6IR+C3k7MyUqUJT1ETMs?= =?us-ascii?Q?YRHj7yQhi8StLI6AI3CaH2CdMYgR7BViPJB01tKawWpFKDlivqpx8MUhCtWE?= =?us-ascii?Q?C5LkbQdeak3TFjVW8u9FkprI8HUxl2VxUSHthBQbjfpnggROfpmx1KpTtvXZ?= =?us-ascii?Q?PKkqd+71WdC9A9//pL4enWMyVlDd1aglCSLk8EHBP8zKqncj5MwuBzntkNgX?= =?us-ascii?Q?C+6pKZAy4gTLny3WXMjYpfVy7to5SXYIY7VbhMw7eD4uVpZuD/E4RJYwDA/c?= =?us-ascii?Q?H7in5UcPTn1Crlsu0hOf6sE77AMwZhmd/7c2YPud84Nesht00BnrSOvpisHg?= =?us-ascii?Q?p057IaPAYNuJDxyeMVaJ8jV3WmIJfBHlcIfOaKuLUBe6in3b53DMQYIO9qLo?= =?us-ascii?Q?/AvjoolLarqXyRepsmxgfPfYJoTXhNNrJSx0wIZJy3LAKyRypfYYhdni2yNJ?= =?us-ascii?Q?LmauUxU8qlyDnINrsz5f9CeRxnLQg/bQbAYNNjB1kNQFP08+P77g/cuUg58+?= =?us-ascii?Q?4oUOvAnNzDq6uznh/TUeEmhW95MOWDOeZLOhWxVSpTBEI/EPJIJBjUAqKj7G?= =?us-ascii?Q?88jrGq1EzgqbayccUhXNvtYwJuuhPtwP2E6c9ImGCh8buTiIxUtfF01lxew0?= =?us-ascii?Q?QpixX8znmNooJq0ADT/5c0CepSeDbSnA6f3IdrB+AcFdHyPWx+kAFqWCxoW2?= =?us-ascii?Q?m/8CShQ2LNr1q7z2x1yniess245Zz6lPetAC4P5gYLN115ERwHr//RfGBLKe?= =?us-ascii?Q?80M/i+pfCaJXgDb0M5JARylAYNrIZYZ19byF335I6g/TASzUvUarq8/lH4qX?= =?us-ascii?Q?GH9JOxUSj9NPGtpJ9m6ofJ4E/ooK+FcKODzJswrtuxDHc0IthHILX9C9mLoD?= =?us-ascii?Q?PhTMA70urwvC/zvIetH23gO5OuQxEZiBBLbNcW4wmB/JIElyF/oV0xFtW/fN?= =?us-ascii?Q?moo6d+xUeOmGbNfSYUj8sNi1qscIXGhhfIPrmgrmzewK4/x8K2XvV1N6bh7V?= =?us-ascii?Q?Nu0ZdXI/c9riLVg8B20SoV+jGKBcgde2WBqYr/ZKg1FMTOg?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1086;6:iA//nE2sUsPGoRmd86OWz18LOFz1JhfSOKOOSqazBZ?= =?us-ascii?Q?sQJMGkk5Xgd+dYT2h1y/kjtgZUFFScbAaTyjK9US432W8e73S3OSgOfWPDsC?= =?us-ascii?Q?RyVXKIJ9Fc4MyfqqIZJqKnxJ/4ZroCCat2tW0YbicFjXYbxxQDa+Iva9gEKT?= =?us-ascii?Q?XAxMZ5GUrtDNsSw3cMR6I9c590eAXXPGnObj3lgPFGEAIHmmKhyWzSr1ihS4?= =?us-ascii?Q?5/k07mQEtTEzWxF20F36fTZep8BI4+MycqXCuD++Tyn/YRe/fi75adD1Z9jM?= =?us-ascii?Q?BtyCUt5j9pgRGg827EBgJ8qJXI4YrcsX3xhfO2dOyQFs6sfM+ephqRlvmePb?= =?us-ascii?Q?+yXNTSW++TE+EFlJN5rO+UYOuMwtkTf/NFVexnHz/K0gBmVCAWXM5eg6B7Ph?= =?us-ascii?Q?KEOmK5TA1JJiV/lDl5MCK3XPverePFnJBk44d55TzROiYnp5zkO+xxsYRxKL?= =?us-ascii?Q?K3KBPoyt5bfG9yHjds9xXH/ny6qetJu243yOzG8hDa2HMGx6kkTDOql3/wB+?= =?us-ascii?Q?SMGWNCsVX+BXgn+rkVaUMXv65EK3TsaHkjFTNTmLFSGPZpYiQwd70quDf4WR?= =?us-ascii?Q?1gXIu7aaOA4hKk2sc78Ske8hXVl+9tZKrp+JlzV1J4jV9dJbAeJqd5TKnwj7?= =?us-ascii?Q?+X8Lcg53fr1jcDJ45LLothPiAOAMt+860zYEivvpdTWsNHzmdPvX17x+/ItQ?= =?us-ascii?Q?2i4fLyF8/OddbgXBNVVvrrMHaZOVqKQDTN343z3kx53DCTm0NyCyQRRKNyfX?= =?us-ascii?Q?SnW91JRFwRGdWSxMGtBcWCKRJ88LRctz44z7Wi30QcsALh8Op4oPWPZDu9zh?= =?us-ascii?Q?3t7xqKcB5wgN9iAtvPimY5p/dhDGLmoI4Mpwi6BJFWvwykgTTcCi+wBYBcUD?= =?us-ascii?Q?mkBGAWVyZGxzIlRN1AjW4YXT8OJY1csxWp1mxVlO80v2akIu+tfDywnjkGjo?= =?us-ascii?Q?lgC1TDZBV7liYaQ18m0kiN4kzMHZ9huCToRyWAUp0GhX7Z/EW7iwpvTg8R0Q?= =?us-ascii?Q?E=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;5:w8Vin2t61DDXMhn0tQVhni7es86Uyy6pU0iSq7Txd5UdNouha35CJHoUdIKEvzm6Qv2afKD8uv3DJ4ipudIW+d+sHtwCMLYFFPLaZ4bMIKbDoxOF8x0DWRZJPsRthupWCQehmNCIwa1tgjZUOphDjQCCjr0tmsmFkQidRs1MR4Ybm2NNfjNTJjNSiYm40RH6HZ4Lu08WYLsIVo269Bsx0c8qTXqOuc3cOAbiLxVYCXjnxMXBGai9G6HKI/jaQEQw3yvw/dOrk1RNjqRuDySqo4Q8FH1yd3bloTCUuwx8Eo0ufkNl5bAzvg3pyYf3rlEFa2FutVpACu3xkQF3Ql8QpWosQSqaPzMFzFuT0Rlwg1W3hE+4J9HNPG79eF7i/hEPaEsK6UJS5/z4905LvvEPNPVmKRBIDsXqA1dFu11OLUtscLteGrsswVwTXhDG2wMM2qLajjAUICBHiMYFghvqlxfy3vcZZusQirb9OYmfnSlcYO/QlV/ZGcOdapiUl3gc;24:Z+Jenqew0KiubQlY18oNRBoV3RbKjsXc41r2Kvyq+0Cvgf+0rQdjnoCjrF3Ln/YlirB8YaHEhryDWLdCy26mTzY8L0inFCgIAiVu+/uBMqw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;7:IxtNf9L8E1d1vsTG6fk2+lWrlwdhpBPGLjho8E9ZbHH3yHg2eDLeZKjvkOedcYfb9f6zUNGrsCqvc6PuDzp6tqpdwpqEHnzTHEakhMpu4bNXJtfjLwCcb2wGroMMn3h0yQu70/SnLjQgNxE2r1CTJ3M+mMSj/StbjEpKykQPS/0eum007HW19WX7q133eKcyXJOay1wrfz9nUhykrimsDch9/Vcx84umrcqiIXWBkTVsflKBzjwgBGBZoMtox3cqZBNtI3htPIVEwAqETsdOSz/v9AheX49u/3e4Jeazg5jDg+c92oj9/xr78BIsThntPiqsKH5Z31hu2oBo5fDe7Qhd/Lb+1ZGWvjWGSJv0n+qSjlx/SPX7QcbU2gaSIO2DLi0hkISSJuYr++zsnKhBV41YbRCK9PGwIVEC04ibB5MmHVwi3j5HWi+6IuEjEugL6aWDNEYO8PwopzNvpYwzTf4xZKcI2RmO/XUAAW5MuxyJQ3FkPHtdIBRse1mB9GiI7z/xhtkn6f9+6GhQL6k+0Ua9DnYTJdsEI+wYbeR6bijhpkvRu+VdRh4aaYqEpFtwKPDdPJsP4fG7UMAxuIDoa9CAyixgDvQ1DFoZaOlmsRSy3407en+LHgGHtp487H/WxRZ9aHRllkM7DhyYmnjydc3z0PQD/QKsef6IhV6GzzQfIYFBBTp9sIrmzq20SmtMdcXl2DfGArK3Xo6X4tVcOzSs+yl3PD8/VJgoV7JeDUiEnKbkfgf4n/oi18oTCyNvIDW0pbk5GQnBldXpnaSHGAlH9Ac0E9pOlG6ZBQ+Wo00= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:ThnfKKr/dueXlr2QzijqMlRoBnGSWucol7zVYUX14PONO08hAYa/HPPiR8hx7Kz+EnQI8nb1P7wrUaBVXoump1oRHBWrYZNkHtOUkR8K0r1t0IO4DpOs5Gs7RNvM4/uKed6iG7NsmKmhGMjpQkPOdAH1gWeNEX9KjZisxizZfvE= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Aug 2017 15:26:00.6076 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR15MB1086 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-01_08:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Aug 01, 2017 at 04:54:35PM +0200, Michal Hocko wrote: > On Wed 26-07-17 14:27:16, Roman Gushchin wrote: > [...] > > +static long memcg_oom_badness(struct mem_cgroup *memcg, > > + const nodemask_t *nodemask) > > +{ > > + long points = 0; > > + int nid; > > + > > + for_each_node_state(nid, N_MEMORY) { > > + if (nodemask && !node_isset(nid, *nodemask)) > > + continue; > > + > > + points += mem_cgroup_node_nr_lru_pages(memcg, nid, > > + LRU_ALL_ANON | BIT(LRU_UNEVICTABLE)); > > + } > > + > > + points += memcg_page_state(memcg, MEMCG_KERNEL_STACK_KB) / > > + (PAGE_SIZE / 1024); > > + points += memcg_page_state(memcg, NR_SLAB_UNRECLAIMABLE); > > + points += memcg_page_state(memcg, MEMCG_SOCK); > > + points += memcg_page_state(memcg, MEMCG_SWAP); > > + > > + return points; > > I am wondering why are you diverging from the global oom_badness > behavior here. Although doing per NUMA accounting sounds like a better > idea but then you just end up mixing this with non NUMA numbers and the > whole thing is harder to understand without great advantages. Ok, makes sense. I can revert to the existing OOM behaviour here. > > +static void select_victim_memcg(struct mem_cgroup *root, struct oom_control *oc) > > +{ > > + struct mem_cgroup *iter, *parent; > > + > > + for_each_mem_cgroup_tree(iter, root) { > > + if (memcg_has_children(iter)) { > > + iter->oom_score = 0; > > + continue; > > + } > > + > > + iter->oom_score = oom_evaluate_memcg(iter, oc->nodemask); > > + if (iter->oom_score == -1) { > > + oc->chosen_memcg = (void *)-1UL; > > + mem_cgroup_iter_break(root, iter); > > + return; > > + } > > + > > + if (!iter->oom_score) > > + continue; > > + > > + for (parent = parent_mem_cgroup(iter); parent && parent != root; > > + parent = parent_mem_cgroup(parent)) > > + parent->oom_score += iter->oom_score; > > + } > > + > > + for (;;) { > > + struct cgroup_subsys_state *css; > > + struct mem_cgroup *memcg = NULL; > > + long score = LONG_MIN; > > + > > + css_for_each_child(css, &root->css) { > > + struct mem_cgroup *iter = mem_cgroup_from_css(css); > > + > > + if (iter->oom_score > score) { > > + memcg = iter; > > + score = iter->oom_score; > > + } > > + } > > + > > + if (!memcg) { > > + if (oc->memcg && root == oc->memcg) { > > + oc->chosen_memcg = oc->memcg; > > + css_get(&oc->chosen_memcg->css); > > + oc->chosen_points = oc->memcg->oom_score; > > + } > > + break; > > + } > > + > > + if (memcg->oom_kill_all_tasks || !memcg_has_children(memcg)) { > > + oc->chosen_memcg = memcg; > > + css_get(&oc->chosen_memcg->css); > > + oc->chosen_points = score; > > + break; > > + } > > + > > + root = memcg; > > + } > > +} > > This and the rest of the victim selection code is really hairy and hard > to follow. Will adding more comments help here? > > I would reap out the oom_kill_process into a separate patch. It was a separate patch, I've merged it based on Vladimir's feedback. No problems, I can divide it back. > > -static void oom_kill_process(struct oom_control *oc, const char *message) > > +static void __oom_kill_process(struct task_struct *victim) > > To the rest of the patch. I have to say I do not quite like how it is > implemented. I was hoping for something much simpler which would hook > into oom_evaluate_task. If a task belongs to a memcg with kill-all flag > then we would update the cumulative memcg badness (more specifically the > badness of the topmost parent with kill-all flag). Memcg will then > compete with existing self contained tasks (oom_badness will have to > tell whether points belong to a task or a memcg to allow the caller to > deal with it). But it shouldn't be much more complex than that. I'm not sure, it will be any simpler. Basically I'm doing the same: the difference is that you want to iterate over tasks and for each task traverse the memcg tree, update per-cgroup oom score and find the corresponding memcg(s) with the kill-all flag. I'm doing the opposite: traverse the cgroup tree, and for each leaf cgroup iterate over processes. Also, please note, that even without the kill-all flag the decision is made on per-cgroup level (except tasks in the root cgroup). Thank you! Roman