From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roman Gushchin Subject: [v11 2/6] mm: implement mem_cgroup_scan_tasks() for the root memory cgroup Date: Thu, 5 Oct 2017 14:04:50 +0100 Message-ID: <20171005130454.5590-3-guro@fb.com> References: <20171005130454.5590-1-guro@fb.com> Mime-Version: 1.0 Return-path: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=kb4HGH+BRqtFCWzB0xQXb6s0X3Zc0oRWbdB3p3eDkvQ=; b=CrIr945/mjm2zmC/YgVDvX302BymLQR8+Znqz70u7tof7aVAMNdoWGTObWol+xHeLtoB 5ZVMzOf31tuJ8l3isfHUBrLyWOEL/DtaVHCv31kTlCHqHDc+1NvnlRPkTRKjWA57EsMg HJYKVlyArIbBLswzXNfNUbKMfseio1fKyac= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=kb4HGH+BRqtFCWzB0xQXb6s0X3Zc0oRWbdB3p3eDkvQ=; b=R0QCWnardg7wYiwmod7LLIbPbLnagjx2G9tiS0K43ieEvUdLizq1GVHrLkeI9Y518YqRVLCbntOKn+rpV+XfIoJRXSbUm8CxKL0Rw9id9wf7UBd3a0oKXOS5gSHfCnd2DHVMOJD8JCqnampZ3LEls8y2GOlZIFj7oYERUV1iA/Y= In-Reply-To: <20171005130454.5590-1-guro@fb.com> Sender: owner-linux-mm@kvack.org List-ID: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-mm@kvack.org Cc: Roman Gushchin , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , kernel-team@fb.com, cgroups@vger.kernel.org, linux-doc@vger.kernel.org, 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 Cc: Vladimir Davydov Cc: Johannes Weiner Cc: Tetsuo Handa Cc: David Rientjes 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 c7410636fadf..41d71f665550 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -917,7 +917,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) @@ -925,8 +926,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; @@ -935,7 +934,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.13.6 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751440AbdJENHE (ORCPT ); Thu, 5 Oct 2017 09:07:04 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:55826 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751526AbdJENFs (ORCPT ); Thu, 5 Oct 2017 09:05:48 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , , , , Subject: [v11 2/6] mm: implement mem_cgroup_scan_tasks() for the root memory cgroup Date: Thu, 5 Oct 2017 14:04:50 +0100 Message-ID: <20171005130454.5590-3-guro@fb.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171005130454.5590-1-guro@fb.com> References: <20171005130454.5590-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:4726] X-ClientProxiedBy: AM3PR07CA0101.eurprd07.prod.outlook.com (2603:10a6:207:7::11) To DM3PR15MB1081.namprd15.prod.outlook.com (2603:10b6:0:12::7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 51e9387c-4f86-4435-5e8a-08d50bf1be2e X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:DM3PR15MB1081; X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;3:CG55XnGwN06fr1E/TZMSS6RCCoY8YWPQfrRk4qy7B1OCQ5nN+R4nehdexpr9liSeupy6J6W32bdO6hk1nFb+QnVEcnHMdi8d/9SUYXMsbdWzntbpy4aV+BY+a67GnMGiKIj6yjVxO504fD4UlqlluTEBM/9QDshZoNFnrhQ9LXEYD7UcCcLQ1+SPIlOUnXy3qtwtXavh/USvdmJu/Wp+2dAJgl4nVJmwArwJQmJkEV4mUFhWEdp/P1OgeAqHMvA5;25:/BEl27lsAxZ8Sdy0x6/EmBVqBf4HyxLuBEqomAsDrVFsCKbXjgQmB9bnAH+iDavqIBMMIwcuE81vQrHyqLE0HolS9pGckINLAADn7HjfBM7GdcfoL5zi//lGvj8lvpoB72+P+8VZRUXYiDO+SBm+IMupLka8QEUaNifisQpqsoHZVn55CUYgTyI7ir6MTMNnCceYTtZ2vGjvA0sDKOiXZiyVNEfmhUdIKt2JD4wVG0gknimXPaC66APayUYYVYXH+2Q0r1tUMYzEeWZFoFaTfBXB4VMoZdbCbECzDw0vt93lRYMaIwWJIci1XESE/4Xm9VIuMHcu/AF4I/2n8T7fNA==;31:vSVTLJst06+DewhQBWEpEu0LEh2bccwYnI1h46/NiCzhe+ey5hxqMXFFwdCtK01pq3DPfc0tiVTDJXvReLDyVPTTtOnXGGqG33s4GMVgJf8GBpzEJBpJC1jOoXt6wElAseRSClSAGuUEVRcqw7qFbL4gw6vasA2FjMkewiZ2n9C0gZ4kvZkU555R7zMCeGFre7ftgzEJx3FWIH+uZpIdfY3cpcF53t4D9j3Ccnqw3m0= X-MS-TrafficTypeDiagnostic: DM3PR15MB1081: X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:AbVjHSLoWgcmyV0FBjylCX+JreQgGt8iKdrPH1G9uEiUf3F4LrFdwFm+gUvLzzSBbjQOM+jPuyOZ0/9dw7on6xVy6q63gYXVBzfMO2GPrTFE3uH2DnjopLi6uFINzoTdTtHI/VghTwXIJG/3+2uuuQIFVwM+ritDwpgqL1DDD7K7z7Iy7qaVvpfcEeyC1K1FNZ492tUDOg+wBV5+WflC9jxLJ8oogcezO+FXEyHGVvSiPRQHtN3CnOfICK1AtYld5erDmkjltaGEzgnvFhisdRCnvwuXY60mm01ejFMh1kquZpi4eBPSG09ngDLE3/f6Z3416KKVFJni8Dp0SB1aGiIbZgvlbnj+V29MvvobDneeZWd8U/6qCboH8thC0AgB0+ybV95Yh74XSHDuqIum4j7nJai2VdbvXxmEXg61HRIXYLmKQymudUEbBFsqrZrEFsoSqhx6T4L/Hrn535HLVEUntqoyNF0lstqaV08VWmY6vqtli+ojjOo55FUDIT3L;4:OdgAjxH7x+vQr8cGZG1hZ3sFa0X9kKdO0+qGANQU2+qnu6qOU8pgjUGu7Yi4fQ+xsmCmrRMKRsKV3eO1CVXnf/RtVVCJ/55Miv36HyMnvUtbG6mk8nIuBQNS4/eqZojkVx1pITYPyve1iSD/0DcmRV46QuKNAt55UE9q8vc2/9Z9JePvQj59+9Ld+FqHOphJJf65iIZyCPCm3AXJO7FymMZ6tczc0QVkmw1Tg9hHonWQXIi6uqG8hKAi9Hs7A61QOTg2LyXMJhzpHVm20QDT5H1ltpOOvjZpySMLJw5ts+U+CN2yTgSHSrmxTqivXBxpwr4BAEKKwUDnbz+W9T4DOBnPB40zgpFtP0FNkDJVNxHsZBkUwI4FcZ5XHJKqE3rlhGIqrYVdWeOPkfk25BEYIw== 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)(2401047)(8121501046)(5005006)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(920507026)(6041248)(20161123555025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DM3PR15MB1081;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DM3PR15MB1081; X-Forefront-PRVS: 04519BA941 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(376002)(346002)(199003)(189002)(2351001)(53416004)(6666003)(2361001)(478600001)(2950100002)(4326008)(39060400002)(36756003)(76176999)(50986999)(68736007)(8676002)(50226002)(33646002)(105586002)(189998001)(106356001)(305945005)(81156014)(6486002)(101416001)(81166006)(8936002)(7736002)(6916009)(6512007)(1076002)(69596002)(47776003)(50466002)(5003940100001)(48376002)(6506006)(34040400001)(86362001)(16586007)(5660300001)(6116002)(97736004)(316002)(54906003)(53936002)(7416002)(25786009)(2906002)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM3PR15MB1081;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM3PR15MB1081;23:6BlklXEtQloQSOMLXLcb1TqLiZUqr/SSbrLB4fNfi?= =?us-ascii?Q?48WVq0lrQ6ESKLGH6CZRpw5o3LbkmhBfxXNSfU+bpHdcT9PBwZMEW1pi5FvD?= =?us-ascii?Q?kHJ5AHAGBGY0CkpIwkCrgqMDl1cve/HIQvF/zzTpB9gnMjtNRih/9GDgYiME?= =?us-ascii?Q?GykYd32KXhHwAobeywsUkI77tLfAjY9+TFmOa0jiQXjzCUrQHxz3jJ/XJzUh?= =?us-ascii?Q?5buqPQs/Tsm31V2aDcvz1BYmmm6kMAe9OQkT2XT+yss9/EaBWw5+UZ7lEiUx?= =?us-ascii?Q?QzwGCGLSwpeunvHQ7U68e5XfAgA4JjSf9tGdo3Csau5ip5ZPOthhT3R3Yv+8?= =?us-ascii?Q?AfIY3KzBgaNP/KzsFuOO41APiDiXCnHUDDOnKZ3iJ9/8eDKlVTTk5vjqF/k6?= =?us-ascii?Q?DQz2512JxWln2/gLANbxB2giAMvW8uSArl405KYW20lf+X3Hk7znkzLaujxp?= =?us-ascii?Q?M+6d07fgA8BDb/ftxQTHAFr/wTlIi4mgx7mnNRxLyG+i2M7I2994K0UFggPh?= =?us-ascii?Q?Wc9MKUhycA/aI5BJEESx0W+W0RhSfdhj7C9PmE3UkjjkiICatS/Gp8rBPvFl?= =?us-ascii?Q?3O2be3O/b2+rXqqr7WK1tnip/03nH9rr4RWfcmCsSK38cIYPadL/vxzbBx+k?= =?us-ascii?Q?Yhi6uy/KFGeFdFk9YwhpYnioyJZsj7SZKUwDTN/NHCsuzaCKMVGevjwvqitV?= =?us-ascii?Q?cyiM8wfR+9kKOus0LaH//6UE0I0lpQmSX9vqGlBIBg6j6xKq10yOKrW0OrtY?= =?us-ascii?Q?gW93/7wUJ0FoMpXwLN2AoqR/ts7sUST+iL0LXSPGbrrKh8Hy15n7TMUiJAL7?= =?us-ascii?Q?TM9vopLD5lUwUXZ4JQKj6qZv1WiTbkdkrIRj9TrKtapjrcE//vzI6+U3PnFw?= =?us-ascii?Q?+7va5b3ylvvuPB2sVxSmq0jJ2MMFoOU0XO2ISpdCOlh19hadoFvqlBgVvtWL?= =?us-ascii?Q?OK816vGwVL3j2TK6qxFfxMhhmp9oopvZg+aSsn2SXhS/TrJh9pDKaXDbULZP?= =?us-ascii?Q?YdqotcnwaF8odpe07iHiWLhLF5NEzM15vsH9re4VNzDSFOt9lHvl52nXUac7?= =?us-ascii?Q?K/RShoTybt8DdO1MsBM+LzIOt4XV2xqRnKHLXKghk8eOcI430//7L8OHj0r6?= =?us-ascii?Q?MlT8AyrxCUMGs/0Rm5ykPtGOBLfv/BAOHSg+W1GFv9qy0180ncQl9/otLg/v?= =?us-ascii?Q?Y+G9FYAktFE+HSXKr1g/mayXSBvKAB14vWGknIB5SAa/KMtq+I74m+BDw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;6:MrOTi1wvHuhoJI0zyUi0B9kUfOVr+XErfkBMCnGgKgh0up3qmCYpC9fU6nj6UclrOmt7x1q89GZhRWdHGBHOFa4S5iAWQOLRzxeNSTNGf0pxC0EEmw/f0GsMgCR10dsoYZwW0jrMCdy5hids+yhQapd2094WPpq9M5qlYYIlWPPNitJWayKhia9JnewSlw0n+wWYJ8XGIhTZA2++D+AyLLgKuXM7+w3hMOMomif7A0/tfR1E1Bejgv6x2GdysGj0aAxQTBseMV6FSASDwXpmpngvs1arFJn7kx/CiJiBJgy3R1JL7KSmzCvj3ZUakaGtstewcv+suDsM9Ow10AdPfA==;5:aQIogVmvGHbZyzCjiKL0AH3fAyalljElR0LeNywxUb8wXUT+8WuarvjjQL+mmmBEwEvUYkSqGh4mNC5yic98VjMsqKN5+4KTWO6e9Wfpj17byk7WNP+9Lhc6rJYLrhLbP91gvUnI33VVdiEMsPqnEA==;24:YPDS058bINV8sXBgNN1bezU9lOMwQK6cVFGC99KO5jtY8kfRt+vn8gKK1WZuqe4vl7Y8mPHjgnj50cYy7iKg5pFJ9qCOi2K6Z+s4Qzs3mkA=;7:B+Dbw4h9WO3kzpoZQ6qIxo8CzPzs7V6IImMQGn3AQuYydGsprfU07FI7TmTPuhVUBmCY5L8p6JgxuQ2ve8M4EFmAVEp/uZ1gykBJh7eZrNmWgxzHsRDi1X3JbisYFew0S64nwmcNhFse2ZtXD1/V7A8m3AkMrev6HFIgXkyr5zDwLnlNvXJBOBlBNmiy+0eUfQ8JyF8ZFrHe8x0zPl62WznsAegsH1VfKUYKSkgar/4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:NAQFYUPdGxalQv5GM50PWJUzbB+CkNua9PCEJ+xDVXLcrXhO785IRJX5wBRytZibCgp2xLMKdP8poCIW9n9iAwWmAcJqDsDCcMqKK/NOVm2VfjsYgK8RlstFdiWjePBVuRfr1Hh0y7GRvOUoKxrE4H9gFiBMxEHVn6/Np5idxHU= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2017 13:05:22.8057 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR15MB1081 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-10-05_07:,, signatures=0 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 Cc: Vladimir Davydov Cc: Johannes Weiner Cc: Tetsuo Handa Cc: David Rientjes 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 c7410636fadf..41d71f665550 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -917,7 +917,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) @@ -925,8 +926,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; @@ -935,7 +934,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.13.6