From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752545AbdFUVVT (ORCPT ); Wed, 21 Jun 2017 17:21:19 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:56636 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752059AbdFUVT5 (ORCPT ); Wed, 21 Jun 2017 17:19:57 -0400 Authentication-Results: kvack.org; dkim=none (message not signed) header.d=none;kvack.org; dmarc=none action=none header.from=fb.com; From: Roman Gushchin To: CC: Roman Gushchin , Michal Hocko , Vladimir Davydov , Johannes Weiner , Tejun Heo , Tetsuo Handa , , , , Subject: [v3 1/6] mm, oom: use oom_victims counter to synchronize oom victim selection Date: Wed, 21 Jun 2017 22:19:11 +0100 Message-ID: <1498079956-24467-2-git-send-email-guro@fb.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1498079956-24467-1-git-send-email-guro@fb.com> References: <1498079956-24467-1-git-send-email-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:60ad] X-ClientProxiedBy: VI1PR08CA0189.eurprd08.prod.outlook.com (10.175.227.147) To SN2PR15MB1088.namprd15.prod.outlook.com (10.169.192.138) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0c94c680-61aa-4325-5718-08d4b8eb39aa X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:SN2PR15MB1088; X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;3:4IyuYYPSmFTkGqwX8krSFENxlRG6cMa9uv4gRzyu7K/lAm4ju2sTYQ0WwQ4mPqMDrVWLNU+A72EJWGkGqiGiWPgI6WG55Yh129fTh5+VCyELYzYiDaLix05BfT4ISrrU3192x5px8FN6Sycc3MjmYylyq/nfL3kJGFAqJC49M5THHV5CQ13TCv1J60fiUejMhY924Lh4pqZKhvjLrjzj1vwimryvv2yng2fhgGXFPKJfeo8AG0TA13R4Gj4PG60fh2qfF+Ik3vKSaNAnEpmo3Mgk4rbaaTq8e9AsFoRvzAF0kNQF/R4KggweMi5tA/Lpoo+gpjsRU/WvmbpQGWasGw==;25:H0AyT8feLJJeIigBReUJJLLKuplTEfDJWc3ugn9pdB6h7194qfXtVia0VYDcTENEd4C1OnwC8ASQDgF68kpfQ8fdmqNIuHQK8mv+z50iFf4qcQqtCdS3GT2X9xLbJYMTzrfQCcjKyQqvT8YmHfhT4tvlOoZ6aeTXKRZgeNRX0AasAuM2aaLW8iVcjIeJTFbFwqnRrS+6Yu7lBbMPl9I4MCaVx9a6RsSQE/PqylKW4x+mHVTCf71NV5Pf9ydM+4rhiAGWYbN1ZMPzha5x/p6xeVorpCAL197B65yAObty6+iq40OpICm+lpFxmovzuHZn35lnx7Q/M6Pqp2GhcWTO4sLLLE5rCSAKNmVqH/VBgHgQX2ZpTAV+rdMS6RxzA9sLlUIIZWk6Uj0ReTyicn8sJnjC8MkQeTPAYVuJhuQCkJZRLaTAK2f7ZQTKWkB0KfcJ4vmndoxDJEYemNahfk7MRPsnR0kKDWBgaHBb/toPOOA= X-MS-TrafficTypeDiagnostic: SN2PR15MB1088: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;31:10rscx35+hFnnMU071ktxGBtjOKdZrwhKG7w5paUr46si1ipyMzdxnutE5X7xrpmk+0KsuFvvdGbYzgVk0rwLAjEkmyoEoPNq6gQ2LhsVduwARZgFcKMVLuOApK/tdpS1F1rhPwUx/UDuqyu8B3IsQ3uzAJeTEp7x3OL3GJ0jvhToWkCWPYCcLMcrqC6rO5xuc0OfewGDzoSvl4F5KT7PwX+q2k/TfA/04td2UK/Da0=;20:JYX18rII6OJ2glZhR6QcjQuRoqOi6ZnzgAYNSxU1k4hhmOn1Ri8spE5AI6npCrjj/ch1DMtdHySRR10VbCDooGuyRoDfHP9C9yNNJ4J251BBmyDJf7WHlOe3pPgQZpW4ysjiq1YYuI3imeh5mbUyo3Z1p3kKgt0q3obU+FUMdaQfl+CNtQhLAt8JGz2VxbG/EnG3aCnc3JTlcw9Zc0tkyIn6GPbk/25RTILHIdw9/4n/h29uNkKPU0K4U5q+b2oAo28jctP2y7tyAIIoVe1/m5l4QLrz5H+PoXrAjgzlAFi7TT9ZinxKwVeogbt1IbSlz0yulRqtUd2E6EAyqwvKdoIb9vyJqfR3wNr0QEFckcg/wVyAkus41/nsFcQrhs6z8+ixU/1Jz35g+QW/59QIvYvw77Sfdjg60ufM26d0sRNe0ut3zgShRb4Ay3yIvtUfJNdxNwNNyrXTsprQL2LPDo/IXfGFR/91hZXHMY3lU8NrMBVZEgCmDUL9wuF/UpOh X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(3002001)(93006095)(93001095)(6041248)(20161123564025)(20161123560025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(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:a/lFP2tzWB6O1xpDUiQojcOOpszEDz3kS2QmgI4tHg?= =?us-ascii?Q?0mxfOpaP6FG8BUfTTb0p5xvHKsPiwC8obkq7l/BF9JTaK9QFYVRxe+Qo5usG?= =?us-ascii?Q?nSzHd091v0E/hwaYVLKG7GHOwdNDO8RpAZk4ckZbC5oRIcEbHSivD3WEYR77?= =?us-ascii?Q?uTjIYAK7g9oDvfb6nFoX4iwLzqfvZ0yrcauQfQQpKKAJNLakGyQEDZu7yrg0?= =?us-ascii?Q?swbK7acQhjUVoixcA4GDFRgKfDtEuATYcFTi0gVeTc+xf+rb97HFDe/2vEga?= =?us-ascii?Q?N8PUDfDjYgW8VIDsPB6gCGwoz4+cSZV+B6oeWHTx8qEuYckDNbBt8kVHbHlP?= =?us-ascii?Q?eBGp++CR+3b1Hm6XhbbmHwqOUaHoPLDUcnDhlZisycYj6jfp5Yxv+GVE7I1r?= =?us-ascii?Q?/jppUOsXjL2Hjfu/9QuEN+/MW+JedYHOYCADjJL0X2n7VL7c671o3+W3BfXd?= =?us-ascii?Q?pGfUkCFvG2WFL4azASh/XBonqgsbPmjroW7MkWJ70QyGRYg5FS1Hppc+H6i5?= =?us-ascii?Q?pIIkZWQmad/jLmiLPKbbKH+jsUsq7Mn21sXDGMGXtlQUOu3oxLlkWAOyQHye?= =?us-ascii?Q?TxMiqcBOK/ay6ab/ipQm3st0bkGdsg80qmpJ0yMZ3uWB1JT8hwZ/GCNCfLBx?= =?us-ascii?Q?YXIRq/9N9Mu8qKlZIjDtOnRu3S6O30OxhMoqzlm3Xc3UKzY8yS5P3IMX64Wi?= =?us-ascii?Q?s13Y9uwh2Esui5IwDMDZvPjrHJvpBn5C57F3jpvhlW/oG8iM/MPlRWoBVb8C?= =?us-ascii?Q?ra245qCvYn8sq1wI46/r867Q+krkh/xk03iZCdIFUtLIJJ/+wY/TMeiMXV/Z?= =?us-ascii?Q?F9w1DlAiqQBuI0frnp/Nz8GSoSZzLf5mLq9ytOFaRnkdoS1xqYOGz3z3xz6u?= =?us-ascii?Q?kc0YUfDqsfJnzS3vMMKcBR54P2yFgCJJAGHtzjlB2Mj49ADhHSOm0+oYO4QV?= =?us-ascii?Q?kQOXvXAXh29tDA5lywZvCSFpdBf494Z79PW85XppAFV+x7wCQALawWh69DMY?= =?us-ascii?Q?DB2h0PowZ9SP09qE5nqEfPfaSSym6bfxYO1JY81Epu7CnbFRAjZolL67jgnJ?= =?us-ascii?Q?UQ7oHqG8b8Pz7fUpdCPVdmqI7Uoe9rFyN9EXcJ49L12rmp/v6XA4+4ti2jfv?= =?us-ascii?Q?nu56r0lI/QGOClScKAbWLFTIwoZcT2p+Fdlxl5rDf/KeqjJD1z0OmLpYGa6N?= =?us-ascii?Q?3AjWpbkggg1Knz7apb9pWf7JA7+RC2emjQ1DIDyf/lF8blSNU72HRk+Q=3D?= =?us-ascii?Q?=3D?= X-Forefront-PRVS: 0345CFD558 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39400400002)(39850400002)(39410400002)(39450400003)(50986999)(2906002)(76176999)(25786009)(6916009)(4326008)(36756003)(7736002)(48376002)(5003940100001)(110136004)(6116002)(53936002)(38730400002)(6666003)(2950100002)(6506006)(8676002)(47776003)(81166006)(54906002)(6486002)(50226002)(50466002)(6512007)(189998001)(5660300001)(86362001)(33646002)(2361001)(305945005)(2351001)(478600001)(42186005)(53416004)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN2PR15MB1088;H:castle.thefacebook.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1088;23:AbBZOy6tx46/lMVBBCT0EkrgnaTF/0FppxKQ8yWS7?= =?us-ascii?Q?OxW10pM8U99AlAvfUTXKc/pdD7UPC3bRYpRslpcVQ0/IENVaaxZWn2MZ/v55?= =?us-ascii?Q?Sl9186XID/ZUNFflgtHLXcj7nYCLF1/Umvi9FBiCIoCibxa7u893zwQXmdrb?= =?us-ascii?Q?gNrsEFVPphJFlwGsfY8X+k0+Nb1Ks/xxadfhByt5tsIyBKiHq4xp7Lgr5nmj?= =?us-ascii?Q?Y+DzM9LpqqYU8tmGiiWMnQLI8LpX7YzjqMYjI0vhJK3uZcYK/x5a1J4ZE+3h?= =?us-ascii?Q?ilQCdzTicHqZBWrlEngMhUE26t4WRGAW/SX+LHKzgSo2Im3ylqolpAeTvfTe?= =?us-ascii?Q?8szaEA5D3Jxcj42pnCR4qw7YubyTurmG/b63b1SuffylVOb37zU0sK3m+U5A?= =?us-ascii?Q?qfeCoHF9XxFYXCZdOU56N3+/k0LTTJ4FaS+5FK6j/lMmnxJZtWHLZ599WRB0?= =?us-ascii?Q?gW17JRre5Ag1+8k6zfgOcQAAWf65rKsiaa0UYxsRTj6VM2DCbX/CGwCFPu/s?= =?us-ascii?Q?meB8uARBBtBugTj7iFY1wsYbUZzR1CkVoFjgnOH+qM9W7dUG6D9hW5ChIyJ0?= =?us-ascii?Q?03dqOP/jyZ0Y3VhxOWFQ5ZBB1Ssyo7Fh8AM6D1i6W9nmXRShkKGbNhmoj1Vu?= =?us-ascii?Q?sGMeNPdK7kceCIZ5QdOuTVVHqDsIy32FaAV7YcNEUSf3ZOiqUuNI/NEWf8At?= =?us-ascii?Q?7QXapVGE9socJcjAufz8IvKjcvjxxEsHm69nCVPH6IHZIZyCGngBJC1nyvAG?= =?us-ascii?Q?US0vkkWbbaWZq+40frmGvWiFWGJx9Gn5ulDunbydhKCLfAkhWiBwsMlui45R?= =?us-ascii?Q?lRK8xRXznHBy90qxDv+AeAhC+gEkzwb7d5mr5P0pC0XxluU6fBMbwDZkEdCP?= =?us-ascii?Q?pY1nZ91Pf3o3EwvOe/sMb2Cis1gQXlyDMXC+XyZFBPhgmDwhg/XGZ/A4+sfw?= =?us-ascii?Q?DMWFUyVzQ+3/AU759Gyrkm+b0CRnGTNDacSbgRQBti2spc+n+pGbG9GDvELE?= =?us-ascii?Q?WNBTu1SHDSUL0IuB6dHDGnLwvnl7192+J0SReqM+pEeZB+j058z8YlMY3gwI?= =?us-ascii?Q?hpYc+0=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1088;6:gsMnmRdmyDlQsQ/TJoze/EdQj5I+ZXaiv7nJLrI4cn?= =?us-ascii?Q?1qcovWM4BZ+qGoTcRQTWOB+xzIB6LPLm4ql8V96ONbuqLJPnuqe0lZxgpEsZ?= =?us-ascii?Q?z2CbGfhk2z5+1PT9RjG80+S9SaH2Bd4KC7V9a3XGShcr/WZc23kMqJ9DTNFm?= =?us-ascii?Q?xNH3uMcuOZX1yD5ycpqva8vDW9bjPtXHbzUL0RpfG+1OmpAOYROZTsf5iRlT?= =?us-ascii?Q?IAtN4b5doiWNQ/rMyc3Q0mKYkM3pj6jDXfyrYHrGJiccZ90wvlkg/mF0+PTG?= =?us-ascii?Q?RtT9PUuLruOv/+MOwV1RQDapm207OwSQQPk/dqR90hHvixH2TL4912rxwfs7?= =?us-ascii?Q?C78w2r7oGoxz/tHvpcTldTeD8OABUQ1zUBVUnfhtSlx65/zDl90gUSu542RG?= =?us-ascii?Q?E60Q9/gvTDjGoUCaWZMbm6BvHwj0DxP0ZBvaViQkh1JsF56xFk7DRpzY6haz?= =?us-ascii?Q?PrOEEB3K3vMsDfjD8JSYoZyyLERSGxvcWUk7xFauROQa4FVbXh2l+xCktUYB?= =?us-ascii?Q?cF2gx0bOirDSaqHqv7Bn9OJxUNhgKQV/JEpWw8fkBOPY6zu4ubZOFqKVPzd5?= =?us-ascii?Q?+Cx/5IDcmHgXETPRs0m8gPYp0/SKeJfYnXF9XQf+OODCYxTxq6vxuFM5P64N?= =?us-ascii?Q?0B88lVpMOcSV0r3NGi7W362CwsxJ5D/gNjg9BJtsIyc3SQ8WLJk3ZoNvBAsU?= =?us-ascii?Q?M/TUj6VBt/C4YnsGm+ikJY7wLXE5XIMy4Z3iVRTOQHv1gB2Wt5BDcAiqNeAv?= =?us-ascii?Q?JlOPlSGzlZcXKiyAvycQpndH0fppTYUM8RW+GJ8+6ot4T+dkItIOBmoW7g7f?= =?us-ascii?Q?W/RvFD12ezfELHc+E4b9wIVKaIqXRGAp7n5GtWNzfu89yKhqFazy8P4GBEG+?= =?us-ascii?Q?u5uRu+bPqVip+cSZQc0NTMcuu84SWjlK3Xq4DFhDafbHUUWw3bt77hVBF1K3?= =?us-ascii?Q?UlBpOrIb7lxaZ8nWcEL3RtIW8Bs4s4JHWzsBFWyKHyU0prOBY/Ner5UiYaR8?= =?us-ascii?Q?E=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;5:lBrd8PsqyOS/rVLiOIe2QRW759F+mAGYGVmtSgE8BiWvjzHhdLwR/FuUlrvTDFI6tEraZXou894H1Jd86DwLzBr5eHoMFmi9Bg1BiQLT2JKYYsagIs30vSPcRXciQgF03qv4A9lXY8Y2nLR6ORjvqIcTJDR33DZDbkYVVrfc79A3qzbG3xb+br+0JZBO5V1ui5yuBd76BDHzKY0rZbtsNKWc3cob6hFejgiR9rRqJHhGCJH78h+AFmCRouUAXO17Hl22mgzj+rZBUMTYAnm89+XbPI0+3HFkwGP/O46mMiJfmIdPZGytVGyRUL9S+/rybiLEG9NLQsU1Crdwgvahvd2MKyrFdasSF6N2j10b9NpBAvzh5PXiSc4iXbzQyShXqEWdVseznbLwudu+FPNlvEDskVptnGJMzipuVEVPi2tQ1FZL89e/aqBgRNRoZ44A2AOt9RTuvJE1+/beP9WR4Dw4D+ZKHqWCDlFW/Va7BZ8wE2TgLd81nJ6metIBEkZO;24:MOoRQGzwKhRnKpuzAxss0ejKvDUf0z9HS4Vz9hYE5wM+AF1eso5R99gXsDvxsjBrF5YDHD8pPUHNvIj6GVOIDaWnXIjTlsoHdRdzCJ0ps6k= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;7:i6vhsiNmTgc1PnW7H6R/Bz5kYke7iQ7/kPEjksuh0nfW/pXw1kdc4mASBddE6cVbJ7sWD5aO4skdBXTy5QZJRYCo8ixeNMQx8JKA//Ju2t87WBRmWbKERTy8BBVQlb4o4Wf/SjMXpHHzW4/E0fKlOGY9K04q7y+ykZTpG7mo2hT36/nUmNHIkKKCtcvs3v5VCu5MyL98RsrS5cv+kjTHwAP85YB5aPyo/OjCUkDbYPAKGOThROv2ir+UsJp1jfBZmSTaDk0MbEDn00iecmMGXXU10SWtWMvreb6WSDN6Zb5/h2KeRhfOFXbu4Bv1y9tsdXBGUG64qtuKIl1Bwz/UaG/3Ls1VoJsrWA5vxYQeSlDzI9a01qz2UagMqBvVNOkL3Mmy6KRjorKA21ygqcgrDxmiwl64b0+o5MKTK+fW35Hj+EBVB5LKlCK4uOzypflNX5VxojwEzB+QXWTtYUUuZJyc1LM8HO8gozv8cOamn28/IBHZVcSepVh09EIHbGkbtSaxd/XdssZPg9iokHLf75+K52K/b7hEcFO/4BXRQmYaOyj3byuYFk42sK3HktDnolitHXBDAsOKcRW9I+ox2wRBB0vnJ7aSCFTmTmTpVWcPB/xWxQ6QiE7pq1JSSI6RiyBS5YRAC+GiXFKDBcBBAKw+qlK09L3Lvt9dom/uUvIMUTktMNDAfU1cuSCVN1FJNH+NtgGtjKuZRbvNrNV7H/oeDJqrSX5A1P2cTy+Lts18OKT7+y8peVs6ZzRFIeOhEveXGABOvCJ3m1wNx8nOUFgohRqoIufv8Gd8oX67gjM= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;20:YcEZd/X1DrJHtUtv1o0ahMb/lxJQYJSiyeHi7mrTQLXCPg2Z5aRBFE5aL7FNXD/KRlGf0dZfg7XwvfOVx2TGeYPzvg+o5hhqVRs+svsOADA1ILMDhIqPca7HfnXPdFBoYGlj0OJJ65qVODIgqdQUiCtMEPaJybcMpzq9pJ0sg+8= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2017 21:19:36.9121 (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-06-21_04:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Oom killer should avoid unnecessary kills. To prevent them, during the tasks list traverse we check for task which was previously selected as oom victims. If there is such a task, new victim is not selected. This approach is sub-optimal (we're doing costly iteration over the task list every time) and will not work for the cgroup-aware oom killer. We already have oom_victims counter, which can be effectively used for the task. If there are victims in flight, don't do anything; if the counter falls to 0, there are no more oom victims left. So, it's a good time to start looking for a new victim. Signed-off-by: Roman Gushchin Cc: Michal Hocko Cc: Vladimir Davydov Cc: Johannes Weiner 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 --- mm/oom_kill.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 0e2c925..e3aaf5c8 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -992,6 +992,13 @@ bool out_of_memory(struct oom_control *oc) if (oom_killer_disabled) return false; + /* + * If there are oom victims in flight, we don't need to select + * a new victim. + */ + if (atomic_read(&oom_victims) > 0) + return true; + if (!is_memcg_oom(oc)) { blocking_notifier_call_chain(&oom_notify_list, 0, &freed); if (freed > 0) -- 2.7.4