From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5FDB5E77188 for ; Tue, 24 Dec 2024 16:03:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2ED486B0089; Tue, 24 Dec 2024 11:03:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 29A4A6B008A; Tue, 24 Dec 2024 11:03:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 114766B008C; Tue, 24 Dec 2024 11:03:31 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E35E46B0089 for ; Tue, 24 Dec 2024 11:03:30 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 5FCBB81B16 for ; Tue, 24 Dec 2024 16:03:30 +0000 (UTC) X-FDA: 82930321824.04.FE08B4D Received: from YT6PR01CU002.outbound.protection.outlook.com (mail-canadacentralazon11022091.outbound.protection.outlook.com [40.107.193.91]) by imf02.hostedemail.com (Postfix) with ESMTP id E865A80018 for ; Tue, 24 Dec 2024 16:02:11 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=efficios.com header.s=selector1 header.b=E3JXRqcN; dmarc=pass (policy=none) header.from=efficios.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf02.hostedemail.com: domain of mathieu.desnoyers@efficios.com designates 40.107.193.91 as permitted sender) smtp.mailfrom=mathieu.desnoyers@efficios.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1735056170; a=rsa-sha256; cv=pass; b=XnWliTArkGUHKpN6MIl5EK3d0H6c8WVyi5GqZRixfpb4CItLsnt1hk6e5pWjfSvG4Z9SBn 7aAS3TuoLrcceNAWNNLmtq3MQR3+hHsFaH9XlZNYf4tFmR2TfVZeEXovQzrHReQ4jbFcD2 /UmWx1uWIwTLsFtdAIci1xA5bf2LGxY= ARC-Authentication-Results: i=2; imf02.hostedemail.com; dkim=pass header.d=efficios.com header.s=selector1 header.b=E3JXRqcN; dmarc=pass (policy=none) header.from=efficios.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf02.hostedemail.com: domain of mathieu.desnoyers@efficios.com designates 40.107.193.91 as permitted sender) smtp.mailfrom=mathieu.desnoyers@efficios.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1735056170; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=7CXTKZToIRF1plbk/DSXYJT+4OBKwM+qYR8bKGQRaBE=; b=zDgRiqwFV+DUdqvg5vBp9fuxfSmaleZUcfYvgDDuPxPrwZCVCwfy7J+5gh3U3SCDlIrNvD zNBzdVbLVuUfq3uRUv63rum+5dEyYz5a/JUiaUyRUdSKYb2a4XMvihVrjpfcqeX21+SX7u aBHcwG5fxd72q8+9JAJGws2k3jeemIA= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L5FJ28L0p6l1g8cGLDdGEPTKbIyA0LUY44lWKxedQTDNrXbm/n4gUSYxE1NW4CMBXhl3vFvdD6klR31TgMhzqnjjq3rbXepuqq6kxlLlkFJyHyecJrdQeWoXFXatxLklr0M9PVQF88paE+WZmf+oZHAtE4dwooAA/9X1YBdUPuGJhqyMlOhCkkYrPoL8SQhk5X+oQ2XW/dBy7Z1WBBrUGJQiBo8UDyLKmnUWX+nG/ZYdHYhtpjMOp4kQ2pmWjSIke3LChQfD0dLhuHiomU5DkCgI6qoLB52drmwZcn8lyctI1XZYmeu7S7krPvl0vfXANIyzZN0sYcAX+C3JjWWvAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7CXTKZToIRF1plbk/DSXYJT+4OBKwM+qYR8bKGQRaBE=; b=bhnv25puQgJV5I9LjrHS2/f2iUMoABojkGaF4RQSW+mJPg3RgcS1zdIszXKRZfc3V7UPJ32x0jhV9OXjOn3BJ6A5YDIhxEC7E4+0swAi4pvgWVaaGmqMo9ZYMZXIGNSUyT2R3udQONtn6o6Xi/2VW32vnsSdmv6dz/U5ySGWPFUubgn12SgCj3yal7yCtbtpIxvZ9NiUV4sJgJAUQgMyBXQ/6l3rUlv5ysmuIfbngtE/haS3usU8cvVkJRSGztpALjc1t7i6PHO8BNcHNna3xAnjYgMWBXo0zA0NsCKCNuILA+DDWmYAu3t6soFlFYzRiSZ0TIkq96gvq7fs043U2w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=efficios.com; dmarc=pass action=none header.from=efficios.com; dkim=pass header.d=efficios.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7CXTKZToIRF1plbk/DSXYJT+4OBKwM+qYR8bKGQRaBE=; b=E3JXRqcNjD+JbkDBdxbehPFtMwPCSCN7lgvUlMzX2FJASm9O+g2S/5XJmHRLBTCdLZbyTsvAWITkd6NJ7Tmwe4jgzBb/Davd8cYiKEnR4lTxHvpyOxuPj//jJAefjsUUWhNbzu/BkyZkeaNx+ZKoiuGrzKnQ+6eClV2JfhMSN6eQsfNjVw4nn7UaLiSWbR2rVm/ujBZqmcMihv+CP/3y2a/8Elc0RPaU8/ARirpDy9Rk6Z2XaypR8OfRkIaAVexIrKv64AOi1dT+davL6b1S4jUrYF5shvZpklAdprTGVTDxFHze65BZleEe6EquW2/6CE0xmScPySl0ymUf2Cmdiw== Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) by YT4PR01MB10629.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:105::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8272.21; Tue, 24 Dec 2024 16:03:24 +0000 Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::50f1:2e3f:a5dd:5b4]) by YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::50f1:2e3f:a5dd:5b4%4]) with mapi id 15.20.8293.000; Tue, 24 Dec 2024 16:03:24 +0000 Message-ID: <523be97d-d572-42b8-b0b8-504cf5f32366@efficios.com> Date: Tue, 24 Dec 2024 11:03:22 -0500 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 2/3] sched: Move task_mm_cid_work to mm delayed work To: Gabriele Monaco , Peter Zijlstra , Ingo Molnar , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Juri Lelli , Andrew Morton References: <20241216130909.240042-1-gmonaco@redhat.com> <20241216130909.240042-3-gmonaco@redhat.com> From: Mathieu Desnoyers Content-Language: en-US In-Reply-To: <20241216130909.240042-3-gmonaco@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YQBPR0101CA0051.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:1::28) To YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YT2PR01MB9175:EE_|YT4PR01MB10629:EE_ X-MS-Office365-Filtering-Correlation-Id: 0326134e-1599-4248-5ef8-08dd24347f08 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|10070799003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?OWtiS2Q0RVF2czNWR21kQnBuQWQxMi9KN205Ym9ybkR4S0xwVkpqdGJpbWlL?= =?utf-8?B?Vld2bVlvOWs5Y0hMRkpnaUd6cXp5MXphcmRpb3VyYVo2ZEgxQzZzRkxkQ21V?= =?utf-8?B?SXJsUi9SUXlodk02NStTbkNqYWY4a0xvcVVOSW05VmF0WVNNRnpWY09lRzZH?= =?utf-8?B?NjNLcHQ3Q01qTjJNdC9hbVZmSjVmdk9Uc3A2Z3lNNjFucStjc2I2RXB3Nm13?= =?utf-8?B?aWJPYUVFZUdTem1GOUpGaVhZazNjUExVTmpubzRQTnRZdWw3alkzZllVYlpH?= =?utf-8?B?MkpoaFArM1hpK2M3UHNIb0ZENDRhbm1DWWZFcXNXY2kvQ3ZDSmk3ak5IL2hi?= =?utf-8?B?SjFwMGs3cXArV21sSndRQlVWYmYwNVNFVjBRMElscXpySUJ0WjlkN2RDTWpa?= =?utf-8?B?TmR4MkxpRFlRc29teWhzU1AwQ0E1SERsVXN4SWFOb2t6MjBYNDJoOTVaaXYw?= =?utf-8?B?bU4vcG1VaUw4aEhuZDUrNDVFbVRFYVpldHBCRjlhUVpMb1pwa2VBWk5CeWFJ?= =?utf-8?B?bjhQNzRnS2NIVmtERU5JQXl2YytpTWhZd1cyc1VUSENPbDU1ZGRsVGhubnQ4?= =?utf-8?B?NlR1K2k1S1NhbmpRaFZDN3RwSmVmLzBjRENqTDRwSVd6ZkZ1WHhjVlgwTU9N?= =?utf-8?B?d2lMUitKTVB6RjFFV3VIRTA3NlVJc1J5ZUc0ZTZjUXVRS0dKM3R3dEZ1Z3Fz?= =?utf-8?B?RDE2NWxRMnNuMUNvdHBTeW1rSG16RGQxQ2FZREFUZEc0SmRXZ2h0ejM2ZEFp?= =?utf-8?B?dWE0TlZhaGw5aUZaM0JGWUVmdmR4a0xpeHErRHBvbWgzL3JOWjc5RGU5Y0NH?= =?utf-8?B?aGR4WWk5SVBPcmgrSHJXZGtRcnZYd2JpQXRiUzdCWlB5bUlEckpwN1ZOc1Js?= =?utf-8?B?c05FaDB1OVRadEI4dmR3cjFRWHJGNE9iSmNleGg4VS9qZHZsdVVLbjZId1h2?= =?utf-8?B?VndVNmRzaHp2YzRxYXBuQW52ajZCbFViV08rcGdELzZCcktNS2tOTGpGSzh0?= =?utf-8?B?K0tTQ3h2cnpHSU92dFp0YzYrenBDN3lJZytraUxOa0h4bndyeTB1ODZxaDZI?= =?utf-8?B?V1M2VFprWVJBaUgzdG1TZG1BUEhETm9JN1ZWRmltMVlmbk1zQmpReDF0TXg0?= =?utf-8?B?alJBMVR3SWdxcE1oR1RkNmJ1aXkzR2M5dnA5UFZsMkxrV3UvTzZLdmhrcEVG?= =?utf-8?B?NDVtZkpGSVQxYXo1TWFtZEFZeEpESlFpSnRYa01Rb0c5akRMb1Y5SWRXeXRn?= =?utf-8?B?VHVUbkp4c01PRlh1RUJpMkJnbkw3Sk9KUTIva0pTNG5iNncyeTdCb3BXT1hH?= =?utf-8?B?anp5VUR4SzU1SElaYWZINTBXMHNPbmFQeXZNNFMwUUxxaDUrLzNGNFB1RUxY?= =?utf-8?B?bGlsVm1DTEFRZDNaN0lyYkJCd1ZHVnB3YkU0TVhEMnR3QWFGaEFoNGVGbnBr?= =?utf-8?B?Vjh2UGdESVdUcUR4VGc5bHQ3eC9QZWFsaDUzWStScG5reThmN2RUS1lXYmlG?= =?utf-8?B?YmdkTjlsOVRTOGtPOFFLd1dwcndCZXl3T1ZxWnkxblVxYWl4ZFNIaFlxR2ps?= =?utf-8?B?bnJFSmhHMThQbHg1QTV0NnYxSEtPc1RCV1hHZmc0VjdNZWFMeDRZbzFrU1Rp?= =?utf-8?B?WHo2eEtiYjh3dnZHSlZjcXBVeXFGR0pLdkttc2VsY0U1Z1JZOG1vbFRPUFZz?= =?utf-8?B?MmVZVW5zUEp1MGlqNVJ6MHNYR29QTHg3Z3ZqZlRyZWM1N3ppM0x2K0xLRkhv?= =?utf-8?B?Q09kTFhmbjVqZlJpcWZSN3NyaGpGRFMveUlMWmp6K1NkSm41VlJueTVZTFJJ?= =?utf-8?B?MHQvTEkrSjR2WUIwYjNMUT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b1BPYld5cXY3TUtMdjdPSWJyblZxWkRYM1hoRG9vVkEwNk9QbVBKdWptYjdT?= =?utf-8?B?b2hhMnU2UzZSNDhFeWlzRlVLemNsOUVtZ0RCTGFmdkgwQ0NCa0oxV0hKdTRT?= =?utf-8?B?ZWw3N3VGbkM5OVVudXA1S3VwWldwUHJNazd6dnNBZnNEQWQvU3p3SER6d2ZN?= =?utf-8?B?cmlKcWYrUHJ0aC84WlZZVnNEZGhKK1FTc0lpWnRVdTBRTHBWcUt0Q1RRNjdu?= =?utf-8?B?UEVyZG93NWxNRldPb1RrS1owc0dtejRZelpQNzZsQllRSXNpRmhNdGR2OW9S?= =?utf-8?B?UWFacFJmM01WcGkwNUw3Q2pFRmU0aDgvMW1JOVN5akVFME1VcTJYUHVzNWdV?= =?utf-8?B?OC9UYjliN1gxMlF4eWZpMXR4bXhiWXBjbWNSRVJsd1loSm5XaE8zNkpXVngw?= =?utf-8?B?aUhNM2NoRkY4eHhSZjdxMkhyN2dyM1hONk5Gbk1GbVBnYU5TaTQvaHVYenZO?= =?utf-8?B?QndvOUxieUEwRGFMVzBoOG12WkNUYm9HSjJCakxvM3d5WGlLRkVlZDlnZGZu?= =?utf-8?B?WCthWXRlVHRHWlN5eUNOdnN5ZDJNKzdWaDlTUmJ2NDdINmN5bE9DSzlmWkJv?= =?utf-8?B?L01UV0IyVHhzUVU4NnNUZHJhTE1xOEdwOExHNnY0L0c4UDJzREo3ZlFBa3F6?= =?utf-8?B?YzNlRjNEdkFpZ29RRy83cGZCZG1NcWFQVWpweEg5Q0R1aXl4VHh1WGpwdTR4?= =?utf-8?B?NUtDQmZPa2ZMcWg4YWhvYkc1OTA1ckhYZWU1TUhLUjhEN1VCMkZOZDJiNVZi?= =?utf-8?B?Z0x0R2V3STNDUkRZWFhtS20rM2p6R21wdXFZTEFIb2Nrb09yOEZRaXU2cEtF?= =?utf-8?B?MEdYcmZZS0tKZHFLak52SmJXZnNVUWxxN1NXcmowWTNZcisxL2lQYmdXVHYy?= =?utf-8?B?Z0xIZG5RM0xOdzc1bkxETVQxREF6blhsM3hYcnNqM0NOeXFKUU5sQVlHWTBs?= =?utf-8?B?d1dSMzVhb2pDeTBGa29WemtrSDQyb2xlTDcxcXltQzBGMlcxcStlbTQvSUpn?= =?utf-8?B?VVFLNE4xcnd4YkIzRkxINWVlZFc5WUc4VytrKzAwWUd4bXY5SGp5Z2VDOTAy?= =?utf-8?B?VmFZcTBTVXRIc09jcXNydnNzbVJkYjV0Z2ZDdmt3aXNQdnVkQVYrb09meEtp?= =?utf-8?B?aUg2YWJmTzROZkxleXF2anFlaURTakNFM3d2SUlGSnN5Sjg5aFRKVjVGdzB2?= =?utf-8?B?QzlZVko1Zm5kL0ZqK1lvVDc1UmRJelFqRmhlV1BMbFVaT054eUFYSWdVdEha?= =?utf-8?B?NjByTFMyWklsMWVFc3dvR0pUcGJXSEpZMjE0NlFiZE9MYXBDdDlrV0IwNHJr?= =?utf-8?B?RXpGSGZZYUIzNDg2aEFuMTgxMWdITlNUMFB5NUJNckxUZXFEdzFxM0RRMWlR?= =?utf-8?B?YXN2K3BPcnF3Ly8xRzN6MW16NHVEZXd0VWtOK093dFpNcy8vTGdjWnpUaXVK?= =?utf-8?B?WEVHZFkyeXZYRlJLRlUxQ21NMHN3M2p4ekxqcEM3S0U4OE5FQWZPNHl2MGV5?= =?utf-8?B?cjRhL0ZMM25FVUJKZitnZXJFOStuY1lTQWlEc0VHQWpmRnBJVXRZMWNQT1Q5?= =?utf-8?B?VlV5WE9TRTdObmdPRnIzUTUzeUlkTmE3M2RHSWRaemlyeWx4YjYxa2ZnUElS?= =?utf-8?B?b29Gaks0SjBxK3dxYlNBYjdRdkJRbFZ1MHUxQTQ5MnlpSjNqaXQ0R0g1L2lD?= =?utf-8?B?V1N4MFlvNFdzVEo4S3ZQNnR3eUFtV2JSbXM4S05UNkpWaVpGOXhrODlvalJj?= =?utf-8?B?eUJiZnRTK1Rrb1dOck1tZmVRSGI2N0ZQYzRnYmR1c0FUZmRvZHZyVDFhU0pa?= =?utf-8?B?WnFxeUZsODFyWXRpY0xsRW5uWWtMMlM2UDBnQ05ka3pJZHVrRC9CNHl1ZjRM?= =?utf-8?B?ZWtlSC9SZnZCcDBvUkVOdkxKLzliSGZBaVN0MzM4aWhqbHNuNDFlVFlvZGJZ?= =?utf-8?B?a1VINkFCdHRZc3ZBTmJ1UnQxV1p4M3VEMlVqWlR3Nk9BYmhFemJXbnlnek5t?= =?utf-8?B?N3NqeC9Xay9yS0tvLzJuTWJ5RmgwR2d1RHBJcTJOcU9BemZtYUJQOHBWTkVl?= =?utf-8?B?M09leTBJMDVVbms4SGd5VzlGMThnMjZLamdTcFJYRldld0ExWFZvZTU5WStJ?= =?utf-8?B?QmEwTEJFMWUvdjlWWStmUjZYYUsyUVJSckpYNUgvV2hmMVllNWZ1bzdWeUZa?= =?utf-8?B?MStnWkVnWnRoY2d3TzErM0lCNUNPYlFHS2dvV2lKWjVBaXpoTzhuOGxSSUpK?= =?utf-8?Q?ImMH1m5131L0Xa6XjzON+xIExVKcEt7OPW1r165gmA=3D?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0326134e-1599-4248-5ef8-08dd24347f08 X-MS-Exchange-CrossTenant-AuthSource: YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Dec 2024 16:03:24.5880 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4f278736-4ab6-415c-957e-1f55336bd31e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KPeYuDapgw/C4OcQhtzXVnzdWfwBzWgQ+J70SyinZUlIXhp+65gRYz9g74NC5OSaUjuaiNFAjxfQjr/pyDys3RTla9Nhk2lF2YHJHcwuQGY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT4PR01MB10629 X-Stat-Signature: cfsw7bnonagpxcqrhn9puwy1iyg3nqai X-Rspam-User: X-Rspamd-Queue-Id: E865A80018 X-Rspamd-Server: rspam08 X-HE-Tag: 1735056131-412170 X-HE-Meta: U2FsdGVkX18EwzILqCSWvMRlIdys1Tx+/+3/mKP/I0q0ZWwD9UAN0YkJYibn1KprNvoCdTWZ/rSDL3+BTA0uP4M0/suKYThVADZtGYkFN1CJRW6mEUVWaZwpI1kd1gXaNuJHAEcIaJKPtubNImqTlhkxVYPcYZxGxGktzy6xuvTKKMGdiQyxBD058F7UrzDZ7TJxnLbMVlxWjjLeGOEfqD6rMsAxzfOHL9soLUFVcFlCT3vanaEQXzxUYVJv6Ob8Aj6FtJ68uFirpSkgg4GlCY1cqIZN2DbPfGjHIn2I2sav54Pp4uFR7dlgeglMco3mP7BJNCaR4aqdRA6OiDajd8W7oMD8BJXvNmxfqBP5YcYPfoh1GZzzYKW9ZZq5Sy8Rqe6U3AfxhdrsSc3PiMbBcU83cfU6BFBgZSoH1BT6lhTXTzAsWou1vrMr76aX9PRdsMGjk7PZFzwSRV2xbmTgNfRlyqtp/vEp7xhFER0S7XlnFf8eMDu7GE4EJ8FGPoAeOgjnmANhsecHawEGp+Uhf+4G0sOplrfu6U/70VcWfoNmkmvoCDTBUUfsEAZz7uYpIYmrzGFvmQm/2RHxO8GijPtUNgAV00R3ZTOlgAJudvswsNtGQjzlFWJwgqC0vnm6lQSxARaUiN3Knzt4Op21i3uuLCQRymYz4bJ7s/UfUAaNY0QTzVjTrEpck17EItMfUSPle+uHm1dFkDYuIaRTxtJg8tQzkY6UiOeU/asUt7/LQJXwDXNxwIbFnQPZxa3PPpBU9ThWgX8JWFjwYvDoU55Cfr43s3HnxFMJwldJT/czfDxwuIXArITXGi6+vV09gZe/4FbigASRpvheHrspYyYEa+kRd52PBxG7yL0JJMWPgpgj7Auh6Q3CZnl2agU4h1W5ks1kxWq2pHOR4VDhO8H8VWPXexulzOhBKZrWfGMmZ7XTQrIlOSRtIEQUZzpidPe07axXVgzfncrFxie gL3n/4PG wz2ro2jJa4CXI3Wga5BQD08dto91Wlx4M8D7THuuKsC5uLi1h9C4JtiWS1b9cpnxe46GJDQIxWFqkcF6CIFpXp5PRyVepopLbHMgAAlIcfWTxt9Xfz6XIugejdpF/ZEPr4kt7PgmnhVDJ2vrFG9DnM2SjIM7mwFiOk6rzgyq63oLK5xP1YwGw5HUo+NNb+L4ukAAh02Y/naLACTo/PFlwd+hmJjPY+Wb3TzmQODYKw3cqpmfwH4rui3MnVmBeaVB5lJ5EilCedXYVXukHu1WBTvLWQaNqrJh86Nxg5YRnPMLzF11rNs+/0pCHM8garON9BdZ6P/SuYKNgx4z06b0AJwwQqdQ2ovl82I4CQ1ReWgi9AKPhkQhA1RSqH4FrTc2+fkyXSJ8xb4tlYX3v5OGr7aVeDjRVo/Tv+3hpLmY0T/Tphsuw+H2s4xe7aqiBqyLRck+9DhIlm7x6VoE7vQZDOCyN5bO7jrgVvEl53ubkh28mvusqsMNweCp4jj9Jnvzhr8DnKCEC5gUqkyX6c4iJyRUruQTXiHgyzh063Pk9y/ImZdZB2jh4gzByfCvyBirgY8dxBmwny5Z3Y6Evv+O+3rRSXroIh5IyCt4Npwagge/HBWgbAaDac1MC90HFldatpS5kMs8VS5W3RjE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 2024-12-16 08:09, Gabriele Monaco wrote: > Currently, the task_mm_cid_work function is called in a task work > triggered by a scheduler tick to frequently compact the mm_cids of each > process. This can delay the execution of the corresponding thread for > the entire duration of the function, negatively affecting the response > in case of real time tasks. In practice, we observe task_mm_cid_work > increasing the latency of 30-35us on a 128 cores system, this order of > magnitude is meaningful under PREEMPT_RT. > > This patch runs the task_mm_cid_work in a new delayed work connected to > the mm_struct rather than in the task context before returning to > userspace. > > This delayed work is initialised while allocating the mm and disabled > before freeing it, its execution is no longer triggered by scheduler > ticks but run periodically based on the defined MM_CID_SCAN_DELAY. > > The main advantage of this change is that the function can be offloaded > to a different CPU and even preempted by RT tasks. > > Moreover, this new behaviour could be more predictable with periodic > tasks with short runtime, which may rarely run during a scheduler tick. > Now, the work is always scheduled with the same periodicity for each mm > (though the periodicity is not guaranteed due to interference from other > tasks, but mm_cid compaction is mostly best effort). > > To avoid excessively increased runtime, we quickly return from the > function if we have no work to be done (i.e. no mm_cid is allocated). > This is helpful for tasks that sleep for a long time, but also for > terminated task. We are no longer following the process' state, hence > the function continues to run after a process terminates but before its > mm is freed. > > Fixes: 223baf9d17f2 ("sched: Fix performance regression introduced by mm_cid") > To: Mathieu Desnoyers Reviewed-by: Mathieu Desnoyers > Cc: Peter Zijlstra > Cc: Ingo Molnar > Cc: Andrew Morton > Signed-off-by: Gabriele Monaco > --- > include/linux/mm_types.h | 16 ++++++---- > include/linux/sched.h | 1 - > kernel/sched/core.c | 66 +++++----------------------------------- > kernel/sched/sched.h | 7 ----- > 4 files changed, 18 insertions(+), 72 deletions(-) > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index d56948a74254..16076e70a6b9 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -829,12 +829,6 @@ struct mm_struct { > * runqueue locks. > */ > struct mm_cid __percpu *pcpu_cid; > - /* > - * @mm_cid_next_scan: Next mm_cid scan (in jiffies). > - * > - * When the next mm_cid scan is due (in jiffies). > - */ > - unsigned long mm_cid_next_scan; > /** > * @nr_cpus_allowed: Number of CPUs allowed for mm. > * > @@ -857,6 +851,7 @@ struct mm_struct { > * mm nr_cpus_allowed updates. > */ > raw_spinlock_t cpus_allowed_lock; > + struct delayed_work mm_cid_work; > #endif > #ifdef CONFIG_MMU > atomic_long_t pgtables_bytes; /* size of all page tables */ > @@ -1145,11 +1140,16 @@ static inline void vma_iter_init(struct vma_iterator *vmi, > > #ifdef CONFIG_SCHED_MM_CID > > +#define SCHED_MM_CID_PERIOD_NS (100ULL * 1000000) /* 100ms */ > +#define MM_CID_SCAN_DELAY 100 /* 100ms */ > + > enum mm_cid_state { > MM_CID_UNSET = -1U, /* Unset state has lazy_put flag set. */ > MM_CID_LAZY_PUT = (1U << 31), > }; > > +extern void task_mm_cid_work(struct work_struct *work); > + > static inline bool mm_cid_is_unset(int cid) > { > return cid == MM_CID_UNSET; > @@ -1222,12 +1222,16 @@ static inline int mm_alloc_cid_noprof(struct mm_struct *mm, struct task_struct * > if (!mm->pcpu_cid) > return -ENOMEM; > mm_init_cid(mm, p); > + INIT_DELAYED_WORK(&mm->mm_cid_work, task_mm_cid_work); > + schedule_delayed_work(&mm->mm_cid_work, > + msecs_to_jiffies(MM_CID_SCAN_DELAY)); > return 0; > } > #define mm_alloc_cid(...) alloc_hooks(mm_alloc_cid_noprof(__VA_ARGS__)) > > static inline void mm_destroy_cid(struct mm_struct *mm) > { > + disable_delayed_work_sync(&mm->mm_cid_work); > free_percpu(mm->pcpu_cid); > mm->pcpu_cid = NULL; > } > diff --git a/include/linux/sched.h b/include/linux/sched.h > index d380bffee2ef..5d141c310917 100644 > --- a/include/linux/sched.h > +++ b/include/linux/sched.h > @@ -1374,7 +1374,6 @@ struct task_struct { > int last_mm_cid; /* Most recent cid in mm */ > int migrate_from_cpu; > int mm_cid_active; /* Whether cid bitmap is active */ > - struct callback_head cid_work; > #endif > > struct tlbflush_unmap_batch tlb_ubc; > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index c6d8232ad9ee..30d78fe14eff 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -4516,7 +4516,6 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) > p->wake_entry.u_flags = CSD_TYPE_TTWU; > p->migration_pending = NULL; > #endif > - init_sched_mm_cid(p); > } > > DEFINE_STATIC_KEY_FALSE(sched_numa_balancing); > @@ -5654,7 +5653,6 @@ void sched_tick(void) > resched_latency = cpu_resched_latency(rq); > calc_global_load_tick(rq); > sched_core_tick(rq); > - task_tick_mm_cid(rq, donor); > scx_tick(rq); > > rq_unlock(rq, &rf); > @@ -10520,38 +10518,17 @@ static void sched_mm_cid_remote_clear_weight(struct mm_struct *mm, int cpu, > sched_mm_cid_remote_clear(mm, pcpu_cid, cpu); > } > > -static void task_mm_cid_work(struct callback_head *work) > +void task_mm_cid_work(struct work_struct *work) > { > - unsigned long now = jiffies, old_scan, next_scan; > - struct task_struct *t = current; > struct cpumask *cidmask; > - struct mm_struct *mm; > + struct delayed_work *delayed_work = container_of(work, struct delayed_work, work); > + struct mm_struct *mm = container_of(delayed_work, struct mm_struct, mm_cid_work); > int weight, cpu; > > - SCHED_WARN_ON(t != container_of(work, struct task_struct, cid_work)); > - > - work->next = work; /* Prevent double-add */ > - if (t->flags & PF_EXITING) > - return; > - mm = t->mm; > - if (!mm) > - return; > - old_scan = READ_ONCE(mm->mm_cid_next_scan); > - next_scan = now + msecs_to_jiffies(MM_CID_SCAN_DELAY); > - if (!old_scan) { > - unsigned long res; > - > - res = cmpxchg(&mm->mm_cid_next_scan, old_scan, next_scan); > - if (res != old_scan) > - old_scan = res; > - else > - old_scan = next_scan; > - } > - if (time_before(now, old_scan)) > - return; > - if (!try_cmpxchg(&mm->mm_cid_next_scan, &old_scan, next_scan)) > - return; > cidmask = mm_cidmask(mm); > + /* Nothing to clear for now */ > + if (cpumask_empty(cidmask)) > + goto out; > /* Clear cids that were not recently used. */ > for_each_possible_cpu(cpu) > sched_mm_cid_remote_clear_old(mm, cpu); > @@ -10562,35 +10539,8 @@ static void task_mm_cid_work(struct callback_head *work) > */ > for_each_possible_cpu(cpu) > sched_mm_cid_remote_clear_weight(mm, cpu, weight); > -} > - > -void init_sched_mm_cid(struct task_struct *t) > -{ > - struct mm_struct *mm = t->mm; > - int mm_users = 0; > - > - if (mm) { > - mm_users = atomic_read(&mm->mm_users); > - if (mm_users == 1) > - mm->mm_cid_next_scan = jiffies + msecs_to_jiffies(MM_CID_SCAN_DELAY); > - } > - t->cid_work.next = &t->cid_work; /* Protect against double add */ > - init_task_work(&t->cid_work, task_mm_cid_work); > -} > - > -void task_tick_mm_cid(struct rq *rq, struct task_struct *curr) > -{ > - struct callback_head *work = &curr->cid_work; > - unsigned long now = jiffies; > - > - if (!curr->mm || (curr->flags & (PF_EXITING | PF_KTHREAD)) || > - work->next != work) > - return; > - if (time_before(now, READ_ONCE(curr->mm->mm_cid_next_scan))) > - return; > - > - /* No page allocation under rq lock */ > - task_work_add(curr, work, TWA_RESUME | TWAF_NO_ALLOC); > +out: > + schedule_delayed_work(delayed_work, msecs_to_jiffies(MM_CID_SCAN_DELAY)); > } > > void sched_mm_cid_exit_signals(struct task_struct *t) > diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h > index b50dcd908702..f3b0d1d86622 100644 > --- a/kernel/sched/sched.h > +++ b/kernel/sched/sched.h > @@ -3581,16 +3581,11 @@ extern void sched_dynamic_update(int mode); > > #ifdef CONFIG_SCHED_MM_CID > > -#define SCHED_MM_CID_PERIOD_NS (100ULL * 1000000) /* 100ms */ > -#define MM_CID_SCAN_DELAY 100 /* 100ms */ > - > extern raw_spinlock_t cid_lock; > extern int use_cid_lock; > > extern void sched_mm_cid_migrate_from(struct task_struct *t); > extern void sched_mm_cid_migrate_to(struct rq *dst_rq, struct task_struct *t); > -extern void task_tick_mm_cid(struct rq *rq, struct task_struct *curr); > -extern void init_sched_mm_cid(struct task_struct *t); > > static inline void __mm_cid_put(struct mm_struct *mm, int cid) > { > @@ -3858,8 +3853,6 @@ static inline void switch_mm_cid(struct rq *rq, > static inline void switch_mm_cid(struct rq *rq, struct task_struct *prev, struct task_struct *next) { } > static inline void sched_mm_cid_migrate_from(struct task_struct *t) { } > static inline void sched_mm_cid_migrate_to(struct rq *dst_rq, struct task_struct *t) { } > -static inline void task_tick_mm_cid(struct rq *rq, struct task_struct *curr) { } > -static inline void init_sched_mm_cid(struct task_struct *t) { } > #endif /* !CONFIG_SCHED_MM_CID */ > > extern u64 avg_vruntime(struct cfs_rq *cfs_rq); -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com