From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753217AbdK3P3x (ORCPT ); Thu, 30 Nov 2017 10:29:53 -0500 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:46628 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753158AbdK3P3c (ORCPT ); Thu, 30 Nov 2017 10:29:32 -0500 From: Roman Gushchin To: CC: Roman Gushchin , Vladimir Davydov , Tetsuo Handa , Andrew Morton , Tejun Heo , , , , , Subject: [PATCH v13 2/7] mm: implement mem_cgroup_scan_tasks() for the root memory cgroup Date: Thu, 30 Nov 2017 15:28:19 +0000 Message-ID: <20171130152824.1591-3-guro@fb.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171130152824.1591-1-guro@fb.com> References: <20171130152824.1591-1-guro@fb.com> 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: e6d239e3-8514-4bae-3b7d-08d538071385 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:Jb/ph1zEst3g83u0/hgEmFrOgJnWJnDjFBRJ09oI9dKeO4z/7Gx9dZoY+R28rDlSydO6/GfE5Fp0M0kqkMfrEr38hwN4vMMC25yt3eltUxjPklA5IYPhZVZbYiFpoUPdhxhTeKHH0ME0E/ihRa2TASEaRZ1NMfkhqsOIBExElGcb0XWSmnTBzYG3bDjSZsDBZr8H/AtVUAG3k+gwT+mcJ0igPBhd13lmdwdFVgtjXDFkaSDkT1ulzyUbkFqbIjZK;25:+LkOVOivSV0JNXfqArfOqAJQDcT94Dgyo8MXimgchT0N/zLSeBDNRLyUPC/TLNC2jCo3DwXy4rGRMdt46nmCvzfqf8+Pe1p4BSF/FA3eqH/TCGJ3XnJ2X3tu9lt+v0KvUXOg2XVRsqyh8k4i9ev7kb2yDLayaG/A+LjGzIQSqhySzrGKayINcDFupWWO8i+C4Me8NXvwELiO8mv45IZjPPhUv+yE1B2j5Ic4BCz6rjXSNkFDJTRmQJhk7mRDyB4PUMzPNUMnwR/kDDCmJE6+1ri3dssiQxLhpIATTJF89Pne9zPOsq/w4ruZR7RmTHeIXoO5+s8Ep/eKCgNk09Pqbg==;31:AKTv5OaXYetytNwRB+95sG3gRHHxbNKtG0osa9sc64AKVwM9G42msWBK+HJAtJ2YBHgr6OM3/G9ipcw9WZ5QP95+gVR6A1n8T3BwR22x3/m3JKn2xSPNYTOVosRLnuhymlnC3gFPrmQSzmYTgnTYEyuiELmvHdxQir9qAbXSce+uQKnTULSkpO641Clnfsdp4VzSo7qHregI60FjYF5LzW00ZpIRBKIfPkb9OS3rlZU= X-MS-TrafficTypeDiagnostic: SN2PR15MB1086: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:+bSSe3c1+EFWwdV+Umx+j25tQuOYfgs+W7IKbshOs7K1Wgp41kCzqgj1y8Jw+bbVYjbpRPTjme0BmO3wQe5UJIl5jkKBxxbIaLFscmjWOnJPxaCrA653Ik4l+g1I8MQDHWUdnjttCri+jan81DgmdY8CfYQcLP32+nIwQ3UVGxEbbBm3lz1q5QEn0sG5AT23WmpuSYmJOSWJrmG3fIZAYPXkA2uL43teEipoYqXCaT8eXL3Qw+oD9s/sWeqkyC5KnhXlsO1YuWsYPBYyjq6p7p4QC/Nzx+E1LB9n3+S0fYT2a+9PutVg31L4Gf5ycbu/jeV0rWWe7NIf12sqPk1JE6GFGjN69LuHNjIBiv7fuzNyHtnot49JlA5Y1dbzCn4CkTiIx6Ml/Mgfj9zH+eNXAjnqij3Z7MN3DRE8a7mDrx+zpHr2ZDgtYuNrezOnfIyl/RQnHxlJXIeba6i6ePYAppdZxwXV6CBtCm6Fe0kPbmkQ2gOjUhRq2Z6el/3hdIpG 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:6Dt08b5cD2HayiCbzeRCjlTLkjA1ppya3E6+N6XC9Wq3Lie3GVa1okXmrEexWE2Jw7mMXbeHWKfuqSFEsV+pAdJgajlSIhI1ok8+To+e2tHXTxr/YT08t9BM2+zCFItPy2Q6FdY4x26oAMTz2KmNaMO3ZHYK95oLZq9XqFdASECbKduBjpU2pki8ATPq9mZt3hBcJ3TrW7r2Sfhyt7Xu73+KjknadrEfKpZ6G3+RHvyiVQngyXJO1i4BCcXcKjL7onN8fcBqwNwSCU6buNExDljmlfBcuTD1SvqY8gbUiKkz90l3mUfbGS8fNYyNE0XruGMxWSBaOJoX36WBB/5sKMLGp8midb+fXMdSWJAfE8RTSL0h9o2yY3U69hZ8AbNJKFxcIT+o5sC1hxBLW936No8pxKnT8LtwKN2OxV6QBdwhwTrk5jZv3BFjF0vlpDx0 X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(346002)(376002)(366004)(199003)(189002)(105586002)(33646002)(48376002)(6512007)(1076002)(34040400001)(8676002)(7736002)(81156014)(81166006)(305945005)(36756003)(5660300001)(6916009)(2950100002)(6666003)(97736004)(50466002)(52116002)(53416004)(6116002)(68736007)(316002)(69596002)(16586007)(51416003)(2906002)(6486002)(76176010)(101416001)(6506006)(50986010)(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:mjydwoReXpXs7dIed9RytCcv0g0IBVHhX4QQ3veSH?= =?us-ascii?Q?2AkHd6dElTwkZy3NpvkEugGzRIDgvqLjdNJyZTJsmj8luGGg0WK3v+9XnyiB?= =?us-ascii?Q?qecGiWRPY6j94p9CBVu8OKWCZeeFUA7Q3IjJlcopk+tTZwsCHuDzg1Ngkm4R?= =?us-ascii?Q?wKc8qPpp5CU5gKnIf7AthppeVD3y7twxdFdq3JJ+mwUvtXk3/EBJPmPCVVkK?= =?us-ascii?Q?kMC78HOjPT9X89xorJHLFOvLC0gq2qfromUv3VGPEAEAUqOXiro1GrNgmn/n?= =?us-ascii?Q?2T75+n6y7wgtLfr1o/4Y7E2FiwrPKE2EQseTLrxnaYP1uFZARzUxR3KnqlbG?= =?us-ascii?Q?oUTcl5NNqoZmwP3WFR65sertqWVnGJn4U3YLNadTzqP4Ze6FUj1sykUCX49Z?= =?us-ascii?Q?gwDMhyRA6zuTtpAkcm2Kl5ZsmTWVPKxCU/Ila4PUh25eedBM7gbPMEmSljtP?= =?us-ascii?Q?UbJal6RClnjGLDatpam4SGzkw0ycn80tlJXBWqrvpiZHYi4oEipcfAuk9ruT?= =?us-ascii?Q?V2htqOpF4RUp7pGrvchdREBdiRW/77XAevGXMGWn7VveL/9uNu0W00gP0jmt?= =?us-ascii?Q?2t6Ydh7Vp9oVqW2ds5jOCNdceYmEY4vvl2hvd/3e4XBHIEKb4W9UT30Ccbfo?= =?us-ascii?Q?pbtAKzUdWFM1qHGOqZasjSPYsd+k/dGzsf+bg9mnbwuXPwGlE2Qxiz+RZ6AN?= =?us-ascii?Q?H+E7HYeS8gFJH+eBn4WbeJrgIfR89O9/+QYBQf+muMlfHVKZiTHOgrS4MUOC?= =?us-ascii?Q?vpdIdLtxlu4RCxF0HWZT8VjwHwho12RQppHrnkRrMEdAuCgEl+aetgr6h5o/?= =?us-ascii?Q?zeEysjF1k35dZYwOKZ+BtK1EmWB0nORYNzmRRVpK0llrtMEg4/8T2lRzYhdO?= =?us-ascii?Q?/jtg0QdvzKwygnkAehjnRKNSh1I2zgCd+WDzTSyWDrRzaIhXyA3y6whhDRGM?= =?us-ascii?Q?vCRqQsirmRhSDQ/i6CxQInZj5bAS+SGYvNybc+svI9wEfdvLwrPInZH5L2qG?= =?us-ascii?Q?uw2dRiIaxeW7aNkwhFNrXV6+uyAT3+a52n1w+9CG1yUxi6CoW8bcez6NksQ5?= =?us-ascii?Q?ix7XfTSUiTiMNkGRHGE7RjaXxcfYNyGg1/M4xrLqFAJwm+77z8/DrU/dJ45J?= =?us-ascii?Q?2A7i8SK9lhIE8tCNKYQ5uSctJye8cGxQjMnQ3q0mzi+J1L/jlZIqK5iytcR8?= =?us-ascii?Q?mRbqqswZw895blckO4/Ob6bZ9zt+ZpEBVKRHMpNu6vEtorW/h7XBaOhQD96R?= =?us-ascii?Q?aRTae/9aQFM+WtCO6M=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;6:QA1/cGLiLJTGsd6PIo13PXJ4Trpzm6KP/fCLYES8V55V1e9PAh+yj/WP3Wn594i/oyP1sLbwQqECu8CgXS048pK+7VRdJzQFQxN0Qqv1cNlygKFbWbZxT7xovUbsFH5TOCaxG2alZiyetfh9dxgkuVLROmasRM4//4uoqWa8s5au2Ivgjs+OAi0mKQDLrPBrDK9rBNVzQ/div3jI4+1wad72JvOy6NxddyLSHdnKxozXFkAci6KUYs/EEP4b3TQv6bF81R7RK55VWlbxI9wt/HEqIPM/KuztTNVW+JQVevsu+tUCKaPXW05P4NbSyWwaUsGZyWcp1c80NckS2YYNqXAuuj3p2vJhzd1quYVk2Ds=;5:j61R0VbDBRWcN9l1Elc+rd/IEBFJWidmJcjKIzBgnErR3ESATGkv7IJWof4pXiTmG/bxCpYFgGEDu/wompJ3/iAt+h8nVLEbCLep6FrAmfEYKvPe+0pYqrws+3TnBxoLbNvIm02aW5kBtf0/Iff8dEC3BdvcGJG2sHnmcetXk2M=;24:sFrcaYmwkwvNan5jykUrcNQ0OgcjFmwd3PLX1L8pKy8gnt4Olgf5tLh1a+lg88dcC0jzRbhHr/ErdX1+MQFYPa9lCUcanYFgsVuKrQkDJhU=;7:ID+LofJUutGuJYt21jFphlIg8nzS6w5La3hr2sXwhk0e5Qo3CcCzg0yTq4hCeLQZMrvk9LTYpg2nxr2tTEyEOx3zdSKHgBhm22Kc0IgurIcTRKCOpjIWagrUIQZjlmOYcDhTQU9laAx+kSZ/62tAeZnRAn9IqudFUTCWU73h+2K8dBcjAOk5z9vjFAiS62HRv2vD6L+GVD8Nh4wY/ly4udEIJPmtAS+FriqdhENUnco8mNCepiQu+wo4hKOeOisv SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:gU339ZYt5yyphtsNf9gSsJZf0j9z9e2NKExnlZpOQxq6X8pUp7ccoW4/mPVBGb01tYb+/L2s3O7/xBRu+75maWOpMqfovTEtF1ih15V05k/oRINTrgmGK1LRtlOmVouLJzC9HGkWXK0xopg2QYwSrNHSmeCJxX51J5lzbbdr9e0= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 15:28:56.5279 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e6d239e3-8514-4bae-3b7d-08d538071385 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 Implement mem_cgroup_scan_tasks() functionality for the root memory cgroup to use this function for looking for a OOM victim task in the root memory cgroup by the cgroup-ware OOM killer. The root memory cgroup is treated as a leaf cgroup, so only tasks which are directly belonging to the root cgroup are iterated over. This patch doesn't introduce any functional change as mem_cgroup_scan_tasks() is never called for the root memcg. This is preparatory work for the cgroup-aware OOM killer, which will use this function to iterate over tasks belonging to the root memcg. Signed-off-by: Roman Gushchin Acked-by: Michal Hocko Acked-by: Johannes Weiner Acked-by: David Rientjes Cc: Vladimir Davydov Cc: Tetsuo Handa 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: linux-mm@kvack.org --- mm/memcontrol.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index a4aac306ebe3..55fbda60cef6 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -888,7 +888,8 @@ static void invalidate_reclaim_iterators(struct mem_cgroup *dead_memcg) * value, the function breaks the iteration loop and returns the value. * Otherwise, it will iterate over all tasks and return 0. * - * This function must not be called for the root memory cgroup. + * If memcg is the root memory cgroup, this function will iterate only + * over tasks belonging directly to the root memory cgroup. */ int mem_cgroup_scan_tasks(struct mem_cgroup *memcg, int (*fn)(struct task_struct *, void *), void *arg) @@ -896,8 +897,6 @@ int mem_cgroup_scan_tasks(struct mem_cgroup *memcg, struct mem_cgroup *iter; int ret = 0; - BUG_ON(memcg == root_mem_cgroup); - for_each_mem_cgroup_tree(iter, memcg) { struct css_task_iter it; struct task_struct *task; @@ -906,7 +905,7 @@ int mem_cgroup_scan_tasks(struct mem_cgroup *memcg, while (!ret && (task = css_task_iter_next(&it))) ret = fn(task, arg); css_task_iter_end(&it); - if (ret) { + if (ret || memcg == root_mem_cgroup) { mem_cgroup_iter_break(memcg, iter); break; } -- 2.14.3