From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751428AbdGZN2S (ORCPT ); Wed, 26 Jul 2017 09:28:18 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:60761 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750781AbdGZN2I (ORCPT ); Wed, 26 Jul 2017 09:28:08 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Michal Hocko , Vladimir Davydov , Johannes Weiner , David Rientjes , Tejun Heo , Tetsuo Handa , , , , Subject: [v4 3/4] mm, oom: introduce oom_priority for memory cgroups Date: Wed, 26 Jul 2017 14:27:17 +0100 Message-ID: <20170726132718.14806-4-guro@fb.com> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20170726132718.14806-1-guro@fb.com> References: <20170726132718.14806-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:865f] X-ClientProxiedBy: AM5PR0102CA0018.eurprd01.prod.exchangelabs.com (10.167.167.31) To SN2PR15MB1088.namprd15.prod.outlook.com (10.169.192.138) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f1cf6c8-82fd-4eae-b098-08d4d42a2159 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:SN2PR15MB1088; X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;3:clHzRH0iyCbhZKAmlDXJO8kFlxQK0DArCunGUdTx9LwF4Su3cBxDtm4/Ap+LPOH9rqYzzH0UdPhLb8bf+RmQdoGBZYaXrN1qZ5lBuPA5+/gjhXFYhS9nQhKD2foIZw/bH/wG5pMzgqQ7hQtgEE6H3gB7maDjESziLQsyqBbzMysznHd+9ftxWah30M7jBpv+IiQt2jSdgqaHSu1YArwkFDIRv+DsiX7GwO5czWsu1aLsZGO6gtcILZCVMe/kNyrp3nnOnJTO4+fNsI2y1uFOn1DSH6z/c8Z9tgoWeCIoy1vE/A+7Uv4xEQSXp565fwq89q1Ebi3X35HADQRDGJWdIPSjOFYmYA1pCP8vT7uYhPTt4qQJLbpKkkd461jONjGp9z1Wj5sNOhfKU/Ffy6llxUh8GzQquGkTmJbsn08ztKItDcWsFQsdTVpvGAS2vh0wre+iLnCEGzKITw2vaELH73dXyMPm0WQ0Rb4iQq5dHH7YNUW+akiEJ3nKa2iNXn1twq6T9QzqS2deDJyyTsxTmtrYTkfQuA/1LMvhMmhHfwlw1soslH8cX9SM2YT4BxlyLwEfV03C0PEOksl++4Xm5HcYb+ko1cecXCfbDPs7JiI3eKS3v3c10q4/tj5xItSCXUy2v1gLL4UI10VGx18xNepwDN3UiJpOeqgyqAxpVrbE0SXilw9OXvH7EHOqoSGtLjL+q+ETAhR+/INv1ipp5BgFuLVuf5gNw2hVx37dTDc= X-MS-TrafficTypeDiagnostic: SN2PR15MB1088: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;25:pSOOIy+5MHcKRMu6xx96sdXDO1/G+nuaHPnvcRisYov0p1WuX9q3tLu4YjEOBqzlfNb8Ifzj5bAA9I21qkQfMwA/7upLAsCZTOUmHDpozrU9eHfot7fW7WMpZjzEHrd6hEGYJFiBmDVp9VpRIVsXndamajKtN0AI0FP+Kmun1D+3XxshF3TOLAQryYSdgpdg1xc+/cX+/rfk+Dsg6rwN4NQXjwkC+Zj2MvlBRv+sPgNOfz4TqVFUQ3osPT+rmcwqsSg6eopyQQE7G686FNu98U7yaPJR4JD1GgMUu8+jFnKgY7DPyTTtpoTFOqc+EAerYalILnk/nylDMed/xW3o8+uNJljRW5e0rrMAP4aULBV8KBuWuQACC9GocJ5aR3jO3dmwfZs3Oq6QjWhOUZil1xl+Ldu5VONlQa8+avhN5NZmyG+bXlKnV9g8SNi0TYfikntgY5NXPvIySpeCGwPZ8hVGmCKrn290AYDhTtrSD4ifpavGBwq2on7MTQTEIl/KAqbKbmdJm35at0ooe7v0TWlNNYZLO+fz0Ch0PvTQsOAvJddvWtMFl0zooFmyFkSxzK1r7JTvC6FagQG2/wmzTZMQbzxcumWhTSzxMrWcYVSOG8DTLVtqrUJWut8qE4go3WHORt3VqMBHA9a+I7m3q0ylYM4XWxuSkoggauplG+S3yA+KSbu7jfePD5ubSyj1TvQ/9Hdp/ipaGWDZIyRCgsqqAr5c5IXJZ3RKYMNEEGbWpm6hRYdo0FfJnN037GWMshzNBOew0WX2gzzfv/oqgSJD7B5MnJvZ2gCZjBWYg+fADIHEUXEkz7AnBpwCQZ7f/tzWlyYNkrgyxZvY8rPyGN+4VHK0uxH1vE0H7dTrliMR/9o/Y5W6/VFjtdWA82zInCcGDzyLB/GvliBxoqRrvh838vLO+oqK/UixyHTbogE= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;31:IvDYWRNa1o1MHoccQW3A9nEqihuTG2X0DQtoFgiykjgWbQ88laxcMcVoRGbel3UBFYCR18JGp2SdXVmtXiR228Qe0oPzJlilsJXv39XXjuR+AWWkOjtPmFlqYFciE0s8bpWnPMNXhU9QZ6dCTImQ4+yn10CmJRmUn2/j5mRGR9Rr6YiRa0d8eCba0JKzarBdLLZj+PMZvz4YnPSFk4d3IfP5uo5Rt8DXMXpv79djVFPRR5UiHGSDoX8YF5oAc1uwpch9pbTNrMLIxyTSS4E7weQvTRs+MYryFIb5AFOKPOtrqOImrffk7rhMob2QWflCjFWOJO14i3OB9ysRP9p3t+BxW+Xb01HaCR10J3DZQLhvUUaSjnT6etVSZFMHhDq8Gm8jMonoy28k7mLny5VGVKyF2EfJIwWTw5uwJg3gpMVrZ9jrCcasqYQhdzNZWV4/uWYNiX1uiA8vUj0/+VO0JU8AG8SXo158x4l7+y8ahagF14Fk9s3S49oVH8WcIe4oQkb0FYzNtgzpqNvATmzZuJSEzEkpbAkLT2gJ3HyVo0YbHNyLX16zovuXw454fO9PS6iTN7fLKNWlQrnnzy3edrKGYbBRFumkVgENNUuXGo2ojVJugomtI9ro4mQJz5PmScQPbaa3QJmGlZT3Bl0WpJm02OPZRcsz2PsIRukSnug= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;20:CucEBbI2Cs6mUa2UJhpKyYks5z2rF5uU2FDP9knezoBdcM0v6r40Eze1goNv77wXz/4C3SSo7sUqC7sWwtSR6pnL24bK4Y29j5RDVe6GFwTOWcgKron1xrWWEYhbbvzD9fxy1ElM5b5qloAU3NoEuHI4GMD9utoXtPif3mRgHMwns4ll/Ur9qcPyQW1CSqbtD1jvBSIuD2Q05tJbTLoPkQYZnh9p42RuI+PkIpITvToxDwqJ6KnuIv+sB02a4SVfaHiLv2lBgWNkicrbIr3nROBOeq3N6Bs/gMzoojjygx26d32K7cGzpk6XGavUBZHT6GxaEFqd5fpNh2qdpskrwyrqW9AA9T2esJLYnJL5t8249nyUalrKDODxwMfnTZ8/C27zs4RIsUvawA0SUkyYNjXwEntqkHxpT6rwH2mOSl0WvvKVBb1UpeUiDBz/6/7eDDLpLbl6uNMUGX17/Y33/4coAP2JXpqkVjSrYB9g18LprvzOhhvDvdE/X9JK9EvX 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)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(920507026)(6041248)(20161123562025)(20161123560025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN2PR15MB1088;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN2PR15MB1088; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1088;4:heN8+VnUlckO4eqa2h/fXS0vkyzmUW9iwTsVY5WYBW?= =?us-ascii?Q?lL7AN4gWmF5T9RIS7q+zFa1i4/VIeVifqiIY+FxJu+tOtFNyQWcUU6xmwQK4?= =?us-ascii?Q?eg6VirgZzNUgdVgTl8o2VENu9gnaXgnACHF4rd89Bz1t0oFYy2Ptld5cz2wo?= =?us-ascii?Q?pS04QNfuHtG41SsiLOZGB/JpvuTHAT1KF5bnoL8mny/8QauRr9UkXdqh3tbs?= =?us-ascii?Q?RO/tiYHUE+rJ7SISRain4RTA+db47a6ObTJR66D86xD4uf6u5CtRdRYMO1Es?= =?us-ascii?Q?FRE7X44yBkWoYLwh7x/4JlyzsL/GP60KZZEZfjO3JJ5VF8Kpz6rI48EmkITB?= =?us-ascii?Q?boKA6VMbBoGpWUVXBXAc5y27wpKQ7CmrUFvJqKlKb/uSAOq+MicjJhbQH4vU?= =?us-ascii?Q?zEivHMQS7NHjQ4D4MGiEvjuUxMPKf6CwjYeD3Vlre+Rq1rlmZNsq4akooSTH?= =?us-ascii?Q?6rgER7ncPi/8Q5RR5cHvksXtFoPr/BWidGSBSDIU2a5udgUv0rCF5zyhCZ3P?= =?us-ascii?Q?guZt1ntkUJnu+CS2OOXca27MKD5sL8rMxfBZDADfQVfUrtNbsxiEq2s/4D3d?= =?us-ascii?Q?dqfUJ5K4IOiy1o6a5XDFKNb6oxuru1AQ7I4cDZQVrRLp1Wx+uYqkcgg6QPjI?= =?us-ascii?Q?eUI0TM0XR+SO084hPXo2Y0zpImIsaqGkfxQ+gnvkDLLPJlEWqd67RHDyfkey?= =?us-ascii?Q?3ywtM0nmiZXVzpzWUysvKr15tXyvpxDAAcyUsAr1qpfCAHqbe0R0C22AQz4e?= =?us-ascii?Q?JcCfDvt/mTYhBOMLhUvoZ2fIQy5QhQUfFgNB/C2YG6nxhSikdvxkeAfF34vZ?= =?us-ascii?Q?LYzO2H8Qt2NqaYl3DRd+WW8u+AYaCsRZo/g6ny8aFFlyPlPr+IhL2WEXSi//?= =?us-ascii?Q?aHF9II/N6scXmbQ3hXYtYLmz7WOQnJ1D2Bv7xXWtqAAw3MHKfcIn5x9KpBIN?= =?us-ascii?Q?Q/3R485ulTXeh1JgpMyO3dMJ45I9bcVf7qHBxh/537lwcNRS2HXjZoY0N/Ae?= =?us-ascii?Q?ZhsKyNfkzJUr6Qep/7T2mChfWZDDZg9/cXgCIK9JXwCyy/GLKx1FX3BydASu?= =?us-ascii?Q?Er8grIr+MIsXq2zaPLDHfjuDC6g8eBVTATd6AA1JUtvIhNjJfRWtpFSRnNZO?= =?us-ascii?Q?oGN9oUApnSdscUAhMqwuF5bOkGgQpV56//i5bCZQqVxMxuLrWnXJoJsiJqZg?= =?us-ascii?Q?nhQ84SIEqWoFp8Xx/ENER2Yh6SMKHa6tHXpSiR7lphhk6bJTieT/32ix2lbi?= =?us-ascii?Q?GW0XDjPX6LIdB+M43iZ1WpqDA7H67gGIOXN3BEhidK4L48AfY3mmPht0WPeF?= =?us-ascii?Q?1pzrtP2KuaZnG/Xpo1e/k=3D?= X-Forefront-PRVS: 038002787A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(7370300001)(6009001)(39450400003)(39840400002)(39400400002)(39850400002)(39410400002)(199003)(189002)(5660300001)(1076002)(48376002)(97736004)(6666003)(8676002)(38730400002)(110136004)(6116002)(69596002)(36756003)(6916009)(53416004)(478600001)(25786009)(4326008)(54906002)(575784001)(86362001)(42186005)(2950100002)(50466002)(105586002)(7416002)(7736002)(106356001)(2361001)(305945005)(68736007)(34040400001)(6512007)(33646002)(50226002)(6486002)(101416001)(7350300001)(2906002)(6506006)(53936002)(81166006)(50986999)(2351001)(189998001)(81156014)(76176999)(47776003)(5003940100001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN2PR15MB1088;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1088;23:odrlYjyTAb5snDZfSwjCC4FJuvRTvPTekyfIwjG47?= =?us-ascii?Q?OIDsHqpa85n4mA4Iwb51KUrKuXYptClr9w4nDckOthLysTwoPPbqFSkubOqq?= =?us-ascii?Q?CGoBr4/QrIm72BgPwKKbL1jLJEL97W69R4iXRH9z7dHHhdT5eAUaDnbzrntT?= =?us-ascii?Q?4P014hCfi2t8Zy74EAr43q+VF8yGgE1dDQQlxvprRDN9eLl3OpYEc+iY+kd9?= =?us-ascii?Q?Vzj1WrxBstPMJWz1Jm4D1r+4TsqvSL1exa8AVGsqmxiipAaMMkr80p5UzSK+?= =?us-ascii?Q?HzQ7Gy75zFJiUfCadVgfRkeALYlhQAX51o3VKUiURDA/PqGGDjhVtuG+cwDM?= =?us-ascii?Q?vWMJoRdWm4tmUcbxYOoJ9VIb3r7jLQDZeAJtekaCDU8G6l2mAvNrLS9JHMbK?= =?us-ascii?Q?WTO3JXxLY7KKj/MDgVBkLGwkWv5YadfxVDL9eJN7da5fQB9m0IIFNEcCIDDY?= =?us-ascii?Q?TnhhA4xFC/nRY0RXUyAhoZNwTuMUW60R4U1hZjU2J2vMiStzKZzfM99+64kM?= =?us-ascii?Q?jveICOsxDouSAvLtbJ4rvd6I2rQwpXuMx+6pQheLoUnMjUri5E8HOORiTjnu?= =?us-ascii?Q?yLgoLgD9xjHipzmhTBoypPaT3usL7/QNPhJfHeSZgQkX7GZVNnYrFW1ukyMA?= =?us-ascii?Q?NMz8rYvUD5gbqgdk0Gf2U5AvAeUVh1UuwNT6E0YzPw+q5w3a2YTILbkE09iY?= =?us-ascii?Q?ZOGWSe6v123g81UgOP42AjXrykfPDjYfbaTeivGHvyrhs7cBcePMVhZ8sZcF?= =?us-ascii?Q?ckA6YiniqMgfmZzbp0Kq3XLpz1i3VJXXzznMRojc/ZtirQ9kkiD7ENoj12oG?= =?us-ascii?Q?zVeX7rW89lBrjPmmXQZpVmaltUVRv+L+PdKl3HXd/kp5smEa2pRZBfQ+Msgl?= =?us-ascii?Q?dVO8/O+2p1C/xptRhkTGYLjO/gkOIik3otWeBQYWzw8WCkPyfd7pDR63uMJ9?= =?us-ascii?Q?u3fAYdRq6sqclRmVeymftWr7GbrOWgu5Qbo6oKO0jXXWUVaalbVx/iD5jgSV?= =?us-ascii?Q?r6uxTa+EnyeZpHIahS9nAZzRoOO4zIb3+y8zBIoRyKnWgwgNtWo8W+bMJQER?= =?us-ascii?Q?JsrY4u6SG3REchFpWFzEhG/2BbpMMnTd0MhD4cDWEMzfaMrhUgsvhxYRTlzq?= =?us-ascii?Q?LBhdQflkV6TcqmFkUeiwh7O8XOFYt0jmi6euQtfr6sjvPgjkuiCcgi2iMiTR?= =?us-ascii?Q?QGIsaaFUR6VZgVa2AuUw+u6P7h4R9QJN6J+Q4d+agxlIsqAf/ZapLsoHz65q?= =?us-ascii?Q?atS045U6ZKpFbSb3RtY+Iqz/tI79kB0loC3x4m+oP2EOYaT+4S0f17NDf75C?= =?us-ascii?Q?nZWAQuy0FFKqjmXWlvgky+nTmVQOg27VW63pPccZBAb8OIapUedm1lRiyj1e?= =?us-ascii?Q?L2Hmh3jhP4ZGUedteKFbb4VCtHB8euvlTlK2qVKvgv7Z252Hj0UnDW1BAXNC?= =?us-ascii?Q?uLRe8I+iw=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1088;6:4QcN9fleS10UviaRbF/ovRuI72Zzl69Yml++XbDZ4l?= =?us-ascii?Q?6rMtd1K7XEJEYIspmgLn1aHk3h9kKdmGpM1ycXKRPlzeQSwt4GGfJPYQc0ht?= =?us-ascii?Q?lbAqgMZHvg0WSqh6s0iVkmNYgM6P+WB0WZ5TjbavyZqTnAYRPDACsvuRQZ2c?= =?us-ascii?Q?4MsuE0Tcrpa9naF/8v4B3knglQTFPL60L7fMle7XHZJG/hQg7sDwAnU4KSCb?= =?us-ascii?Q?w6jLRAkHJ9buseAiX/4FkUtHqcBygz6x4JcnST3fgiv19FiEORHSWcqJ+L4G?= =?us-ascii?Q?L0exLajwXjVl7FldEDJlVkive5NMoBhhqDuAJQrhgmQscraYCjbiU1uqKRmR?= =?us-ascii?Q?j9fj9zbozvPHWZ7GfOxK1y5J6F82ipjbQMQjjA4MjwhaFHNMoOgdkJBtfpMr?= =?us-ascii?Q?mHrEnJ3ynBYo41foQHM/XqPrMzwlVpxX9alIw2Gu3/NN64BfNyklTxWregFV?= =?us-ascii?Q?RhXQ3Oq+1RP6DMpecjHquzgge+RXraEmid8cjWBFamR3ERRioTMmi86IoaEi?= =?us-ascii?Q?BXOWeBDdHOk6H0zNUvfhAJuS+1l72rCwQnlbWeN10DUZ2aaEUGDZA5wqhcQG?= =?us-ascii?Q?qSuXno4gDsP0ZLs0Qv/g7z+k3m5dA3jqw44P9xz3NKzbw5dBhAtyLYGs/rR+?= =?us-ascii?Q?+apj++097PDmEzoAkCFldmuPEIkqdzcgAGhb066WShQ1qwWfbR6LC2Qeanl6?= =?us-ascii?Q?6u6fu8/r/Itwjdghm8OrHL8tfBu26xxR4EpjmWk9/juVZ0N2OGtqmJ2xPVPV?= =?us-ascii?Q?PuUIsicE94/qm+DhDcZB7NjYVdwEUeZ49PuLIei2OnZHG28G3o3E4NIQYg3m?= =?us-ascii?Q?wTgbKpp9xsMxnF/3WPQKpgRSzX9ARc4hCzsFM0idyD6StFywCFVtPvPtEUe1?= =?us-ascii?Q?uUi+n+AWFPd2sfOZOd6I6HpNR0ZMdqqFGgEgRvCT0n6ktEdbEuEqkgXNi1YF?= =?us-ascii?Q?3W9bi352Q4C05e0KAcPdXs2u8uqrOg3DIuErHNoywrWiPAOiPEsPQiC32wBM?= =?us-ascii?Q?4=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;5:vnvF7hpFtIkbDLKgD2oRY3Q9GOjIaNjVYOegPYn44Vz7n4fmWlb9K7u/dZrETeKCFLqJS7r0bpp8+Sthvv1KTs6vqrUiAHxI/rOIFNKrFsyoDjJ7vv7XOFqCBAjk0PW37KLLbmIrCvn1rHJZM6rm9jd7H7lLDgttdsDMjxh5ZeNCaaFW8cophnZEEOqeEFq1zZ48BwMrNDzQg2ofHc/E7uLCLgFAG6gfh67dgEol/VWm0D10D52R0QowG2XvNJeRNgA3vRxZ6pZp+g/oCPNhQHJOefIdytQ029cnt8ICuBVjGCIdRwYDy5O6HFTgFJwiQI7Lnmv6HtM0XASzdF0P4TTMr4y9gT9hQMjM66w6gC7UoxRpMcFeZ13CtbH1A57aGwPnebG5qeIEgHBk7UcI7u9RmFtPCg+dNH2Jeevlj+vBLgpk0sqk9joHPS6EEUynuk3/0/yMq9R7dsVD5fPA2mInJbwdy/KcFrcv83zQlzDK0vzJMCTsdTDfEuFLy3g8;24:uUhLWxWOhuZTjlItXKJmGQjXpF9tg385TmSHS/idDwk2c4vUUA96p3YpiEik4vvHl2vQ7oSCA41XzOF7TrvLpFY3m2XPBNOdgEX9VOobhLM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;7:/Yby1nighgSt8xggzI7hNEhv2L+AlP26itBk4qFCD4io0SW5hs7ghrGfe4ar44PvifXZNOr29L+KW84JGhNVe1g7uO3TMhfZ8SiE3iNnyyGXjfVmZXnVBcH+RUksUt5lGBBmlm7Dm/L/wMZv6q/626tobHXqZWa1OBi1Te7/0MTNv7hxknqjPpnm16p8VX4TdHw2G3/a8/z+ma14Evswr3TMMUBeKmwn7i3T3ToRSxTp2AqA4YnPbXQQxQugQYVE/O3lFfzLG3YszhWBKWmm8oF14qsk4ediYEXZHsYRPqZyiWWe+HweGtVM13wxBdt/RbvXMBt1xwyVSoUHgLozjWX/HiIq91LzKyd9hpQyR02s4iDp0a1SH2WbPMnYQeKFyGBzRzzUwpCyoVpT4+5Ln/BfG0vP+nXm3DsOcEsihxuxES1sxzFys4p1IMIvsJIEjdJ8ALOVqt18C7s28JDjSmZsnmxej3PLSs738PSiKx77OjcrJWh2sKTozm8C4+qg3WOsVkwUfbMgNj6IF2YRlCzdIDPBoiPdQDJETNfD/D7R2LUjv6ZH4PfCz/LAJhsSvqr8G3tK9nMVS1RvL04s03Qb3s6O7hneZxE6Vv8fMWDD0msR3dEuqvAF+7RpuGwye4mX1AGfg5z0ItHek4cptN8n1xA5RCPmx8P/k8pRgXoNdx1yQif+gyD++mErfxBqpBzXBgthYgfXlh7D50m7S1c6/aCcAvoPdu0BvfqbPgMBuE1VeQfj7Xav1a+rPtnu/RHMfOHCW/YKR+iBqbxrVZ6pfXioXrYMWEX+nHyn5B4= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;20:urTJ0qGiNT4abyY1OwBigr3gCdFt9HZ5zSFukQbDKHIu7Ir4WyC9RnFTlKZGQWKBvvQf5YuJHWB/G6QqCt6oQAFiC87nyTJ+2t4HTI2M+z/Rr1fhvZO7wDbBD0eC7WqK26mlStJTcpIakV4QBNn3JZl4RLG0Je4Prm3TS9m4Yu0= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jul 2017 13:27:55.4793 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR15MB1088 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-07-26_06:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Introduce a per-memory-cgroup oom_priority setting: an integer number within the [-10000, 10000] range, which defines the order in which the OOM killer selects victim memory cgroups. OOM killer prefers memory cgroups with larger priority if they are populated with elegible tasks. The oom_priority value is compared within sibling cgroups. The root cgroup has the oom_priority 0, which cannot be changed. Signed-off-by: Roman Gushchin Cc: Michal Hocko Cc: Vladimir Davydov Cc: Johannes Weiner Cc: David Rientjes Cc: Tejun Heo Cc: Tetsuo Handa 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/memcontrol.h | 3 +++ mm/memcontrol.c | 55 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index b21bbb0edc72..d31ac58e08ad 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -206,6 +206,9 @@ struct mem_cgroup { /* cached OOM score */ long oom_score; + /* OOM killer priority */ + short oom_priority; + /* handle for "memory.events" */ struct cgroup_file events_file; diff --git a/mm/memcontrol.c b/mm/memcontrol.c index ba72d1cf73d0..2c1566995077 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2710,12 +2710,21 @@ static void select_victim_memcg(struct mem_cgroup *root, struct oom_control *oc) for (;;) { struct cgroup_subsys_state *css; struct mem_cgroup *memcg = NULL; + short prio = SHRT_MIN; 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) { + if (iter->oom_score == 0) + continue; + + if (iter->oom_priority > prio) { + memcg = iter; + prio = iter->oom_priority; + score = iter->oom_score; + } else if (iter->oom_priority == prio && + iter->oom_score > score) { memcg = iter; score = iter->oom_score; } @@ -2782,7 +2791,15 @@ bool mem_cgroup_select_oom_victim(struct oom_control *oc) * For system-wide OOMs we should consider tasks in the root cgroup * with oom_score larger than oc->chosen_points. */ - if (!oc->memcg) { + if (!oc->memcg && !(oc->chosen_memcg && + oc->chosen_memcg->oom_priority > 0)) { + /* + * Root memcg has priority 0, so if chosen memcg has lower + * priority, any task in root cgroup is preferable. + */ + if (oc->chosen_memcg && oc->chosen_memcg->oom_priority < 0) + oc->chosen_points = 0; + select_victim_root_cgroup_task(oc); if (oc->chosen && oc->chosen_memcg) { @@ -5373,6 +5390,34 @@ static ssize_t memory_oom_kill_all_tasks_write(struct kernfs_open_file *of, return nbytes; } +static int memory_oom_priority_show(struct seq_file *m, void *v) +{ + struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m)); + + seq_printf(m, "%d\n", memcg->oom_priority); + + return 0; +} + +static ssize_t memory_oom_priority_write(struct kernfs_open_file *of, + char *buf, size_t nbytes, loff_t off) +{ + struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of)); + int oom_priority; + int err; + + err = kstrtoint(strstrip(buf), 0, &oom_priority); + if (err) + return err; + + if (oom_priority < -10000 || oom_priority > 10000) + return -EINVAL; + + memcg->oom_priority = (short)oom_priority; + + return nbytes; +} + static int memory_events_show(struct seq_file *m, void *v) { struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m)); @@ -5499,6 +5544,12 @@ static struct cftype memory_files[] = { .write = memory_oom_kill_all_tasks_write, }, { + .name = "oom_priority", + .flags = CFTYPE_NOT_ON_ROOT, + .seq_show = memory_oom_priority_show, + .write = memory_oom_priority_write, + }, + { .name = "events", .flags = CFTYPE_NOT_ON_ROOT, .file_offset = offsetof(struct mem_cgroup, events_file), -- 2.13.3