From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752649AbdJDPsV (ORCPT ); Wed, 4 Oct 2017 11:48:21 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:41784 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752458AbdJDPsN (ORCPT ); Wed, 4 Oct 2017 11:48:13 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , , , , Subject: [v10 2/6] mm: implement mem_cgroup_scan_tasks() for the root memory cgroup Date: Wed, 4 Oct 2017 16:46:34 +0100 Message-ID: <20171004154638.710-3-guro@fb.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171004154638.710-1-guro@fb.com> References: <20171004154638.710-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:180::1:891b] X-ClientProxiedBy: AM4P190CA0005.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::15) To BL2PR15MB1073.namprd15.prod.outlook.com (2603:10b6:201:17::7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a0f32216-b99b-46ec-2917-08d50b3f48c1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:BL2PR15MB1073; X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1073;3:boUPSJXJUMXgk+UIutNMeHN1/C8EXV3tmUrT03zulPh3PL7uojl3W+InTl1Ebavk0RiCEM8SdoUmgQa1TCY2jcOmAxdUFlouUnMxWhKRrVrYK53eb6ucEBgbk3m4OkWLr4Teg6/5S5QZ0GEn89vI7odjtReKCE4Uv22NXsn5j6dDsgELFXr+YFkxu8b0wEsd+GzBmDcd2MOGOpFMjDnm9Zug5AP50BPzuKQLwF2V1mDk2xnGQxoFeS4vgeOkT/uo;25:Z/L1acbRhmpdOjRhxK1O23DE1lH1c4JtW/IZMcGQK1Uw/8hjvBUaoD6ryczZZ9cI3L9YRq1zvmNdEDviHkp5izUt2yufVZq49oIIDigMIVUBxEh/J9FvacKAvO6Ch+q6csLGyK0edb79982ngOKaQVVAH7muSM3oWdmSmnyd5RqvDE55cxzeauC1JkDmhfdUP+cNmuNwP6b6AHxMse/w6buxx5ZwMfWCSMP4b31WnFDaT0zj0YltW6LT4n7j9EsB1KQaJBhGwmOH7sBSxeuiHbeVXTlGbdR2JzN71Hde6Aj4uEK2D2m+eN2q5CyC7X+J6kCPDKU23+V9CbQBvIt2eA==;31:tnxE3dHi/feS31sMEFvD57rdeWQevPDYF1LDTkl7R/dNOwi601OdeG+b4/6F66e3tszN29V2oxa0cmrcaqquHiBIqnfhR3zmS6Fz2CjJ2KyxwAc/9+opxj/vtB1UBeepclOx+xmznbSdGpHtrbDaRk+z1L5N3VwoKgqLEEeT9EL1WASPo2AFBVW+kokhY8OyYzcb46fWBZ8uPbQtGJ8CSpw6XyECYD0PzLMe7PrtcRc= X-MS-TrafficTypeDiagnostic: BL2PR15MB1073: X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1073;20:lho/ov0gbze3BafeCvFofnJM/n+faenINg3deQYFV9LZ5J98E6NcoLABBZeLjzjvac/5DHKemlWoGssyCl3r+xWdmyWGD7UYbhCeitcu+bNxzGlOiT2biXNnBVqrPrxVW4JLqfGOOxBsTY0URX4xPZFOrB6iJ2reIPlooAUlBFV0Gca+7ykya1BTdCUE7CbGTUTUZ1l+3bVjHgKmqSR6M1bY8SOBOtpNVv6m0nbedQapHb9RuSmLj5HOWY+mNmBQXHL7ZB4QgSaXY9l/Q3xyESlpbRy5fW4VoGREm5MMBIim49P2WiqRxkiVe0vgfKBitoXXw2vrFWtBnGENIxqtLq2Al6lfbKazfTFHpp+Mtec8+a3IY4y76C1gMoGD7+r5gBazRRP2g8RKmK9QO1YcyykOq15IyhOUApajjGHFnWt3cMenILcWJYQJG0Vpz7oFSSAb2PfInTjM2lC2i2biZxlSmf/YyL+YSi2tDJQ/Z35K00vzztuy0YJIY2viJ4YB;4:F8p6eQ9A904iX3ea0hxzmHwPB1W3NWsTlQJBkcaK/5GJOPtHerSqTVbghef1szLoKg8Rxg4J+1SpZdjvhsZn3e4GFlMBoyjbv9lrxmtBQ+7I54fPUB42cVs6ZSu76mALWj8fUwiXVy7rP0BiaLeEFSb39dO077gSpGlET951E4Nka9ik8Em9ow6MkyuQmUyiERWV1bnzOtsvs19fPDdeOmU0v78Z6W8OxVgDJJJAqki25LAHAcFR6zlRGFVeEWveo7Dsj0moVNJ5iA+rWt7VY7ugkY5+F1UKqRbHjl5B/esn6UcVUavrbhY0ZopRna8Qj9agUrBzAKx3GcFoP6hJf7mkveea0jR4A6kAkNdqBgtVUjO1zYYL6Ec9ihvb3QecDe1Pjm4MxxiSsWPfiCmiCA== 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)(100000703101)(100105400095)(93006095)(93001095)(3002001)(920507026)(6041248)(20161123558100)(20161123562025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BL2PR15MB1073;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BL2PR15MB1073; X-Forefront-PRVS: 0450A714CB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(376002)(346002)(199003)(189002)(8676002)(48376002)(106356001)(6666003)(76176999)(50226002)(50466002)(33646002)(50986999)(6506006)(2906002)(36756003)(6486002)(97736004)(2351001)(101416001)(8936002)(189998001)(4326008)(2361001)(68736007)(53416004)(478600001)(305945005)(105586002)(53936002)(34040400001)(69596002)(39060400002)(2950100002)(6916009)(1076002)(7736002)(54906003)(5003940100001)(16586007)(7416002)(25786009)(81156014)(6512007)(81166006)(6116002)(86362001)(5660300001)(316002)(47776003)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:BL2PR15MB1073;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR15MB1073;23:9914OSkO8YRnVwtk9ecmL2QRSu567WR54F6MWVPdE?= =?us-ascii?Q?v3fGDR5NqYLYO9oaeiWSesqGK5ln8uZ89ZymRSAEGvJrAN1u063knr22R8h8?= =?us-ascii?Q?ZKyUQquDE3V6yxps4OgSf/vy5GM60wlbsRbW6LHAuavuQpFC74p6g87su3JC?= =?us-ascii?Q?cXo5RCprrHYak5qA/6gjoaUyLNnBkbDF0+9Ha6ORd5w58UdPrn2RihnjKpeA?= =?us-ascii?Q?IIcmy9tA7fjxpbjY3qscgKNR1SbrRpDrYDzXss9kyUMoCGfn3mENEPlcElpe?= =?us-ascii?Q?aC/1qYVAPnSiJyYXT3lhKXUvJJLrXVQHkKjiBoYhSHDKVDjUDQC1Lbx92tLw?= =?us-ascii?Q?NTTZ9rs+Eib0NbHn2oymKuAdGe+IRD/mQlf5tq357i1agJyCy1IC+xoujXsA?= =?us-ascii?Q?tGdC20nfrKRuMmc+ffUeKu9jbg/5I1nAgrOdxl2pyhcEQbHgAsYa/OcAkweH?= =?us-ascii?Q?CZdOk8IYE9MwcIYUVy9H5GK0hpqVFM+2POlvjCJ3whfh10Y0AaQW8WokMHKK?= =?us-ascii?Q?fmTRPeYmcwAR7/1qY99f/gFI1DBI31QnW0h5EJt/hU5L7U5NY/ExiJflsCD1?= =?us-ascii?Q?xCylarnVS9ELyNApWkULL1I1pCJPnbA6jf8+MWXYWD70iAqndZsKOktSghCB?= =?us-ascii?Q?yJAD4j+P6Ew6DPAbIE1zZWRoIJlNM8FWxar+mY3UFuoGkosKQNh24cMDzWiI?= =?us-ascii?Q?RFHchTEzPrA921mLpId/4wpIeEIgI3XINEOWOrYzecbLke5jpRp1VrpFu0RW?= =?us-ascii?Q?NtU+V/DAPMa2LYtOwdEicfqKI3VYo3gmCZwTOQMloN2mqsfVXkNgFK3C18ei?= =?us-ascii?Q?G2ChihJtI04lESIzFw+btsiADWj2J0zTxKFPjzCVWiv3mzXzZpQ2pZREUhuW?= =?us-ascii?Q?ncvS/7WyH0zK1wiC/t+gPgtzq1Ki24nvbyAsTrurO5OzRcNEnQV4psRBzyUd?= =?us-ascii?Q?kBQv/BH2QoP+rEmT99q+TGjpUXNwFoIAGsyF70v420pc521NgET3YQmBAM29?= =?us-ascii?Q?xIFlBDvKL4+sKlHx5+x3dcksjWt/XKBCZgsEehwcxrK5qSTUBExQb+yhn4Fg?= =?us-ascii?Q?QvFXb4s0RricWMrjtaRDKFw3kNlreq3N5iwNMYJ+4ZLQsVtMO46myqw5lLs/?= =?us-ascii?Q?5MMs2irM3N6kEIrSQ/0Q8IlVDrXmc6slJzuf1tdm0769Xvb6kReiLozO24jC?= =?us-ascii?Q?2YnvIMPf+DZJ0yom+jtw6T8baU0dVc018Q4xVR274saNxc2LQ2wCs2heg=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1073;6:27EpnW5j5b5U89LjsEW7cAdkrqG7U61+51IFOEGFNPEL1nnmOW43QXgIaulpbD7Bsq+DTOEWOY+pkObxNzEcN/2HfFQ6jU/V23OdUp1VVxoL3/om/iMhIOjHzcowOhHIgZkcXQ4XoTgeYZ7Qc6NUCJjXUjIAumBIEYQEaLtB2S60G5PSer+XvhRMzum+a2JK4CB8pJ8BXGjTpcfMCIFEPg2zsAbkbLTCKU29C7JCnP80sywgqblAZrnUl68JAgEZVR1KequxZY57jrltVF+4GdAyfLmOk8Zc+R2gHa1BHtYgfWTXaUUAwBQscMGkWLX+hB+xieshB7U1TI24Msa/Ag==;5:pGSdEbyfdh+50yE2X/yg03sMwoSEjjb5/JJsgZfviIxKnzJq4kdTIATtt19E8LyysQ/PeNhx8DUGCz7X56Wqb+D8WEJxhm+lYxOQVwUDIasu8UGEaUyJOXAvwS2K1kW2crO8iCvl3LKf9d291uxWMg==;24:NB6TLWJ5s1U+NAuQoUpo/Rk+3NpoEz11NMMjFT8NU4hZMe9dGL/Ba02H/Hez173RPQzGvo5XPQX3aOwLca11er0ata7jdU4neg7GyX/Yf8I=;7:vWtgEq0aldrxAO66Ms1AyLX9tm/SD5zLXn8vOf9J2AwDZm/9PMGTh08jc3ICdKAF2XVzHQDkrvrxw9eVFP1FScyKmleU+5DcrrLzsK0T030+ysW/WeR/+cpdIBk6+l0Hl6XggpVV4L6HrpnfNaiVIqThGjaBP/N1Il1hhXe930NwVK/9DumCCXSaMDbcwmbXRWLZaqo0Mhv8qFNRdyWPExbSDrcp77h+JT1VitFa4jw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1073;20:zf8NuOOnMR/pXRbdr/pNmrY9lmbps82HZ5YY8N8Ev+mnZNtDyMQbdtrsAzgs3vXGJrY3S+Va1LTHFbduIWpWEdlgrPHg5MvtEuweEYQ9XCwTyMFyKGdLWCr9mH45btRFDtD/TkM3nSxEVSwg55xulTPEnasSaaypr8YjatoPQgU= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2017 15:47:55.4099 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR15MB1073 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-04_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 d5f3a62887cf..b4de17a78dc1 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