From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753936AbdJSSxZ (ORCPT ); Thu, 19 Oct 2017 14:53:25 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:60674 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753725AbdJSSxQ (ORCPT ); Thu, 19 Oct 2017 14:53:16 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Vladimir Davydov , Tetsuo Handa , Andrew Morton , Tejun Heo , , , , Subject: [RESEND v12 2/6] mm: implement mem_cgroup_scan_tasks() for the root memory cgroup Date: Thu, 19 Oct 2017 19:52:14 +0100 Message-ID: <20171019185218.12663-3-guro@fb.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171019185218.12663-1-guro@fb.com> References: <20171019185218.12663-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:8cb4] X-ClientProxiedBy: VI1PR0102CA0074.eurprd01.prod.exchangelabs.com (2603:10a6:803:15::15) To DM3PR15MB1081.namprd15.prod.outlook.com (2603:10b6:0:12::7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d8579021-2f32-4b73-7bad-08d517229b7c X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254172)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199)(201703131423095);SRVR:DM3PR15MB1081; X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;3:EnJtgZrdrpljTVynMU4/LV9s60ns+87BdnIocZzxKC4CBEFLWGZskmN1Z7/G35gMlhHu6siHbpBEcdZC0ojiWVxMr1Dbcw/9EzVE/rtD2UVMo8FSApoSR7S/Ufic6ILJHid268PRZdvtxAW7TuH9jQO0wXjwuGROGan9wpe32ackIXeJMXTNeXqiC91GGUZG0nzZs16/D2HO2puiQPabq5Y+eMNECMB6pH9pV7ECKzVWN4AIQFSoFxZDF3ljBSYF;25:DFMtNSJ3rD2wnISbUZ1guE2ELfqtcUKmnVjC4ZXuffzK+SHEueVRNLYWbETUW3Mfg02WZp5lkjiBgB4UYf7zpXOlhVVAkg25jYj5YhQ1CN3+5T4BKCGV/5oAmfAToRCx/ZfSoD0eoHE+XZL49zV6lZ8H0Bd1Zndr75hRKewS0ox8d3fifiD9e5B0YaVaYQpK5B31dZeTCdPXQ0vYECjQnWcStr7zF9Jq+kD3Q1K7eyIEw7mZFbd6tYlB71oOE+VGeXTmk7IydQh9kDM6BS32jq6vmyOUiAmry2Yoyq2fbB1mgA3MlT6s7L7MuI8n+0gGozlSoAlrHvS4RgXfH4k4kw==;31:gYiPuMzRCPw8BtFus8oM9VJILpfuToJMChs8X8V67LoyVB1xNd92RDCoQUzYrqWfWgEA17XQo1n25SR/ab9kXHkuFtWRFPvO2RfU4H5XLBKD2kENgYTJJHuNjQqzdQ0EurOoRChBuecqwg0787UDgGmDTw09Vicu8umowh4n5UMcpWfeMsjhuWNZxlOt1oymf5DziKPy/s3m/yPp5IRkrCJJ/STfiA3OVYygM7Afe8U= X-MS-TrafficTypeDiagnostic: DM3PR15MB1081: X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:P6U5BQJ1AL83QNETGudfEtLk+wFrDJIysS7R6LQa2sb+Avj2hGP9u08pCFf8zVW0JsewSi78uobnaD3vZUqGF2HxxOvPWephDu1+LyZwWIvsp3D9EhjJnthTW3fBbY/cYRfeQDyJNubPltpfrPoZfAbHwo9qh6SZsLKtEJAd9cxp7zNHYuWGpSAGkDqG1xuj+9vtCdSIGYvZzEefr6K4HfAkdwTBMbaGk67Md8CoMTfkxVybIalmJKzjRzyFlelsF9nIMqOHhe2700q+1Osgwqbo1+zqFHAvtj9oL+yQEuo5KNe+K4gR9KmIGemdPCXh2LP3gJ6mgGBT8AgyHKByvN+W8dQ3nKW0xOJkJ5SVDBziCEsRVNpIZ6AOq3/3sYZvjs4sjQhr/0GXJlOQBI7oktHjhDY8zTz1ueQQLNQxmfLUSe8urfAgcLLJFOeBztBxy0uKYWXSdWEy4WHxpfB/fOd02sllVK97y71EPSeaKfSJ9ror2P7eoia2vFqxBo93;4:7g0w/YpvJgr9jT7ykbpf03djW5pFZXhdRKAs8Q1lnWVPt2VMA6zvQfdCBnre/GTIpdZC2YI4eBI5THk5X0gbMyAzsAjJ12ohohPbtbnDn8d8OQOsFnznRNdgLif1rO70DbQBZq5HOU/x7A27HOx68ZvO85ni1lRJZg/pYJek+fr/Tp342XGWkAB2SUcXTT5w0OZ1ST91ZJaLDUh296Y/nKSEQiIwnrS0nRkGxHydMkcJxM90eD9B9eExjkmu0JvvbCn0XXO+iqTVbY6BiSQ5JoMX53xNKqhvwhJWW8/zd6ef9S4kNF6rSlmWWNM20wcvFS7DEqrVH6tNptFn3k0mxac4L0sDojc8Cy6sC8mslNr0yBdpxGp2VZWpqpOnT/5umT0iS3VL76zCvQXmf0mixw== 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)(11241501159)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(100000703101)(100105400095)(10201501046)(920507026)(6041248)(20161123560025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(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: 0465429B7F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(346002)(376002)(189002)(199003)(53936002)(54906003)(48376002)(101416001)(6506006)(6486002)(316002)(4326008)(69596002)(50466002)(5003940100001)(2906002)(25786009)(6916009)(6512007)(6666003)(39060400002)(97736004)(2950100002)(189998001)(86362001)(50226002)(6116002)(305945005)(81156014)(53416004)(478600001)(34040400001)(50986999)(16586007)(7736002)(68736007)(33646002)(36756003)(47776003)(5660300001)(105586002)(76176999)(2351001)(1076002)(106356001)(81166006)(8676002)(2361001)(8936002)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM3PR15MB1081;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM3PR15MB1081;23:f+/N1vxstnnYCTl+o1UNedizUdODDQB8/Af9n2qki?= =?us-ascii?Q?wgv7YQF+JvrXYUl1S8anIDR9TYnW0zN/pORgg1G6wh7x7yddYl2czRNg8xqc?= =?us-ascii?Q?WYeN2OnQoGp8h1C5eCJX7FiUfF7ctSWeuRlA2Z7uQpfBXu1ixHFHvur50mxl?= =?us-ascii?Q?p3WEXxkP6zLJ2KSoqGZHK6L3HV7v0dDjvSugdKRiKSBXpHP7IrEMx3h4j7CO?= =?us-ascii?Q?fFK1QwK4dE/hgCUX/66tU4YZYasD7Eno6wCbUkayvqpCFdapEfR0ydCbEPlV?= =?us-ascii?Q?g4Tgyxk1cklC7QxgensvMXqJ8TA5cKfgNT7bKTKwipC6ff1BYJOsyGylL5LN?= =?us-ascii?Q?pymbq4R9ee3mcHv/TxA7REwYnL63EAI2gc1bnviLUPZ25n/Bj4Wun/N7xlt8?= =?us-ascii?Q?GMrZyV/QhclDb4OeStamBlYU5YcsYUKi3sCP9i7vkYUN7VucjdrNX7zt0+4K?= =?us-ascii?Q?MmTru3IIDLwmGdsCq+10BKHVrrmdk7zMcjXtKXRqeVnYaFVeDUhdLepRmykF?= =?us-ascii?Q?sN1wkH9u96v+9chJehDngQLA/qrhvL2m+R7FxP0dCQ6jzLH5zpDRbZP+b/Ua?= =?us-ascii?Q?A3rvLNT0jSTdNTcnBKlYADki+13WAVI4WoS+ZRp0FjY5e/8riEglIEodj8sS?= =?us-ascii?Q?sg63A/ZOQtj/E+FDy/oXPn0J3aKxUbNWPK9TtoTmDjNaSBdkZr7N69VOBayw?= =?us-ascii?Q?d09Yxr/Bhl6G4OS+/qWN7BVSSjtMcQ0kumvqwz143sNjLJFwXwbC1Nf/5CD2?= =?us-ascii?Q?yevRflQwJVfvod0xiKU5MmBecWrr2Lb9o3hAgBeiy3327nymSacBvQukse+U?= =?us-ascii?Q?7KQjT1y21D2nq+qpIY/6ypu42pHDG+yko/cYzWrFhy4ghlzpsE8y/9rMy59B?= =?us-ascii?Q?vVgs8Ta/ugnmya/yZ70OvNCNMe5ctR1rkvMBqkGL/vuDr5AbJaG42f3YREmO?= =?us-ascii?Q?UJMNWKFzYmnBRdDeTNunZvsxa3535Gl18rT0zNXjxKcXV0gYNSyFm4GPpC8J?= =?us-ascii?Q?oUZxYMaV+3TKYS6zUE3ao91eWq256ctuJoQZUZygUOT9IuiylR4R+/yeDa2I?= =?us-ascii?Q?RkcNsQW5rOfyiAGpROkv7Y2O7mj5V7q/Fy1s1gVmyoWU3Mt59o7ieXmDomAc?= =?us-ascii?Q?wWwmdrnGoZOKe/tobo0BZb/1/uMoaiZYYOtBtzQBjeiTpbavw2dGBV6Q6yji?= =?us-ascii?Q?DsjqZS9NHCm8f8g9Fm0dCwuAd87rKTNkzEF?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;6:5mRUMXK1JVLCJAW4RcgJ/utcRZ54kXBQ3hzDEADhDODBFGDLMeZR1vYccAP0dbTG2nhnP54VMizrF+4KX1BU2lGqcKTe4Ib1mcjuYxT2seBMTx5j7yoKroUB/w5GiIDU4Pih9qrd88UxYZdbj2dATSdYcJfOrIzfmtDEkyQw52zH3mvRLS96refzSl59UD7DXev+A8nW29cZJH35kRFwzQWSGozQmfW3Rs5eO7KXYbSOIB/T4dydTeEwp7cAFRw19/xkswQowBVJrGwKpMWrWSslZ9dVNk/dOO3QS1gjoDPlbS0gqURSnUdr3sDbrcPD+5DW71ruu1dHb60uQVfNRA==;5:YEO3egSi8bDpsgVJxutqqujqU2h5OH8Yag6sJbxT9668Uxgt8iJ3kLp91Def3fv+aErSFC744F87G2kkjqez3sRaAXgDk9zVEnLDENDfT3MU7NcqMoxizsT41Wteii+5EBwLzS+ZmX/UnZLbfZf6xw==;24:jUc3urJp+KK40y9+/QhXjfmYCdMoYRmTF0iq2qr9KJbxTN9YWzHnGAntRiFx4cmLN4CjC0qJu8YUAwYVY+XIfgPgMQHDpzL7JEW3QC0knUo=;7:3iJ96NescX0P/v10injzhwm3oNiZ9YKAFGdKcTTjTXj6QJwjumH1oOnLS0EAWAE2NCd6EbUkfYM/GL9iU91qSbwEPHtjHKCpK+i7KRgldgHlqbmKXFaVPkdLvUVFC5UmwmH+51TK+DkmHnv7GnkDxQmeZ6NkNrJOSDHrU+appDzXvlmXDGRY4IQHIalwEVXUc7WW6t3zHjx/H+GDXoUglcuB0UK9NyMPBE/4JSeE7TY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1081;20:Bkb4YXSWFye7cXL2aKDM6fhsJXlNvfB2BTa2XkEBSZwccGrjVRNnb8oQNFmBg/u8bC11B8faPvXhzdjMtntd1R5WyCgWeWtK2A4KOyhI5uJMLKkI+0iB4h0JUReg615ntpvzXDO5jF0U58PQBIck4UKQpGqWSIL3i20Nw6HUBYs= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2017 18:52:52.8371 (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-19_09:,, 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 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 50e6906314f8..1d30a45a4bbe 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