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 4AA0FC61DA3 for ; Fri, 27 Jan 2023 15:28:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C231F6B0072; Fri, 27 Jan 2023 10:28:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BD29E6B0073; Fri, 27 Jan 2023 10:28:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A737A6B0074; Fri, 27 Jan 2023 10:28:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 957E76B0072 for ; Fri, 27 Jan 2023 10:28:18 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 599221C6884 for ; Fri, 27 Jan 2023 15:28:18 +0000 (UTC) X-FDA: 80400960276.14.7B44137 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2069.outbound.protection.outlook.com [40.107.220.69]) by imf02.hostedemail.com (Postfix) with ESMTP id 4CA2580015 for ; Fri, 27 Jan 2023 15:28:15 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b=LlEh0u3i; dmarc=pass (policy=quarantine) header.from=amd.com; spf=pass (imf02.hostedemail.com: domain of Raghavendra.KodsaraThimmappa@amd.com designates 40.107.220.69 as permitted sender) smtp.mailfrom=Raghavendra.KodsaraThimmappa@amd.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674833295; 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=111aTzK6f4wRXLn8a3pJAJHmVi70IV4Uq83XQQTO9kE=; b=jP8kKOJlYnDd1f5KLaryUWLFxVMIrxoXXQZpEkq4hDV6cx59ple6i/fMlwgZOH1y2xXPeo jlaa6e2WO47hA3rDXWEXOBR46LkH/oiW1Ky/VKwf83JYV6pu8ldp0JltjjOkfQWzatOZ9q NvvrOjN7NZL1syihFIdsXTQre/UQFI4= ARC-Authentication-Results: i=2; imf02.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b=LlEh0u3i; dmarc=pass (policy=quarantine) header.from=amd.com; spf=pass (imf02.hostedemail.com: domain of Raghavendra.KodsaraThimmappa@amd.com designates 40.107.220.69 as permitted sender) smtp.mailfrom=Raghavendra.KodsaraThimmappa@amd.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1674833295; a=rsa-sha256; cv=pass; b=Ua+9PauoJUdP/D4pJjCi/S3ZSLP1nyUlgMn4Igu79fR+BtLKZpc1oYSCpXSApF5HuxTntW 1vRsJv2B7oZ26KwLIDjow8nWwJ/FzVSfAmDyGNF3PcShEbJMpdZd/MKkD6vv9o9tbHBF/P 4mcpvYD/gvIW/n2Rxs9YqsvoAMj16RE= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=anjujLVH8cnjq0dc2BGS3GCHv2RMFBoqgZnsmsImp4PhCb3Xi8vPIsOawvVfT53fcx0M5kWHOI1Wx7AvADpk/pePU9cDIWHR8t2zmLKs6yVLkq8mUQXZpRtrbCRrfXhkt8A8xh6wu5UXRr6McF+0bFW3NpFu7RIB0X0Mo6OZtphvbRhGmaGMpYn7RIr2qUExWuZCjqjPMKTSgGl8SB66RP+qW8K1dCpATDsM4Lw1bstiBeRcSEHOqMJayhDLliwg/GJI7sBxD3zp0Hshfq0kf39feVNyoNl+gH59QwuNEJfcK2dHHOmbqWT1V4rktEYHbI1SJiR2/JNdr3czzcyBcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=111aTzK6f4wRXLn8a3pJAJHmVi70IV4Uq83XQQTO9kE=; b=CbInBGsKa91isvT7p9qKDATuROLItnsyQAfaGy3BlEfkFAalfWleXR/8SNGNcpH4fCtJHz2YoEIu/zlaNdBAd1Q9KUp0ux3aBOQm1vb4Jsi8uVkjUHg/zLWsPiXFsHW8ClWBWM9cHqS7UvKpa4SroZDYqTipARPtGZljEEbv1aTvdXeUMRKLkHZDY3RnX0p9Kk2Pcka2H7HIdslGzepwn373RtWzbZp31+ujocd78hDV/jik2TGbOsKKSz+/sXnVnLeYnjRJ4XobvCBL6KtZDb5pL+Ulnvo07FkI1ixQds0iAPT6twfFpZY0jso01duxltNjZ27eWjtSNzt/UCbiOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=111aTzK6f4wRXLn8a3pJAJHmVi70IV4Uq83XQQTO9kE=; b=LlEh0u3i3FmsYvKJ6nPPbFrI0oM9RMFXXhsA4MpVz2RfH91F/bJ5vS2+DfrsyWZHMr86ZRMFE4frrnKc3LS6bWEe9Q9ETr2RtDWDsCvf2qHK7uLdnQ1ShMEbxiWJgefnUkFGs/CGiDPhKAxDBsNxpcceOyQkSABO3F7Xd369cRk= Received: from MN2PR12MB3008.namprd12.prod.outlook.com (2603:10b6:208:c8::17) by DM4PR12MB6421.namprd12.prod.outlook.com (2603:10b6:8:b7::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.21; Fri, 27 Jan 2023 15:28:10 +0000 Received: from MN2PR12MB3008.namprd12.prod.outlook.com ([fe80::f9e8:ee48:6cf9:afdc]) by MN2PR12MB3008.namprd12.prod.outlook.com ([fe80::f9e8:ee48:6cf9:afdc%7]) with mapi id 15.20.6043.022; Fri, 27 Jan 2023 15:28:10 +0000 Message-ID: <500591b7-9c36-a769-88aa-0f130256ebc9@amd.com> Date: Fri, 27 Jan 2023 20:57:55 +0530 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.13.1 Subject: Re: [RFC PATCH V1 1/1] sched/numa: Enhance vma scanning logic Content-Language: en-US To: Mel Gorman Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Ingo Molnar , Peter Zijlstra , Andrew Morton , David Hildenbrand , Bharata B Rao , Disha Talreja , Mike Rapoport References: <67bf778d592c39d02444825c416c2ed11d2ef4b2.1673610485.git.raghavendra.kt@amd.com> <20230117145951.s2jmva4v54lfrhds@suse.de> <10a06a2f-0dfc-6f36-3b7b-f4fd03153f66@amd.com> <118c2f4a-58d7-de42-1f77-31ac8a4d4701@amd.com> <20230127101720.qh2wramyfyyucxhx@suse.de> From: Raghavendra K T In-Reply-To: <20230127101720.qh2wramyfyyucxhx@suse.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: PN2PR01CA0064.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:23::9) To MN2PR12MB3008.namprd12.prod.outlook.com (2603:10b6:208:c8::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR12MB3008:EE_|DM4PR12MB6421:EE_ X-MS-Office365-Filtering-Correlation-Id: d498985f-edc2-40ee-0594-08db007b188a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UDGE00wv8yYp79Nyc8jyfVQFA68iI/cE8cMYUzdX6HjZmJlMfPoob7CaYq1LN9mxqJw7QeT6kyQNvin7nUrqS9dkv8aNfMBm+V2XPiIlgFGgm5m/vpA/JHLNqkz4okxX6QStF97BtOgBgWxS1kDCznRLADqkmxSkfJESwuiVP0v8O0qsOKG37VWhkCHB71OP/m5y7muN57jLQ3JD3vPoeh2SHiZ5ck5RDWs5vL9pVZd7xRC8i3I+QUgcjMVGwuk2vS1d9OHTUe2oN84HqlslAh7vRfxa517Sv359braZRGP+QyD50rrmSkFxDJJHHQz6tEZgn0i9GQh8W3SIS3tpErKa7gFYpHYg3lGh+ZOHk9NbQ3GL7B2w7WfEdvFhw3MlwNqgLHWWrJ4tVq89Z0r2lQ34XVjG0BD7zWApUoV4MpSmsAwBVb3Sp5YGsnV4Bv4HqQBPyEYthTG1b3Twr/qao3iU5bRNJOVVpteF2JrKYVM7Eu06d8XUC/BytT1Lb35CHmyZAU8SAd4XoTCo/tjmYHcKg6EpVVW4ocMxtFzCnu2ZmxQzF9Klq7Q7V/FEXjsKnVLTaktPV+ZTgqBHYkmAccXmQD5GmT2a6mNH9UQrg88oPTxS7/iRa0ysC3XfWSGqiNwMZN9/2YBaZpQjXclQuMCMQd+hFqqQoyGAbyyigUpa8gSRh9Aj9CX4EJUWAXFcWIZVLkXxAE24WoDyht5NvDZ26M1V86E0+krHGPo8Tcw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3008.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(346002)(39860400002)(396003)(366004)(376002)(136003)(451199018)(5660300002)(6512007)(2906002)(66556008)(6916009)(186003)(8676002)(4326008)(66476007)(8936002)(66946007)(31686004)(41300700001)(83380400001)(478600001)(6666004)(53546011)(6506007)(2616005)(26005)(6486002)(316002)(38100700002)(31696002)(54906003)(36756003)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?LzNnUUI4UVRIbHREVGpFbHJ3emVSWGcvOUk4UXBDT2FoNDVSVjI1RG5pazg0?= =?utf-8?B?TVlibldwTjN4cmFSeVpxcW5oOEhOcW84Rkx0UkdISHZvNloxT0dkWlJrSThZ?= =?utf-8?B?Y3lXbnZ5dGlOQVV5RHl1YjB3NW10SW1UQlNmTzVQZFFHQytCeEhqSHYzWUky?= =?utf-8?B?TFFtczJzVnQ3MjJZeEExaFpRcmJmbng5UVhnRXZCMlNLbXRXSWpkdGkvZ3Uw?= =?utf-8?B?RlNUOWNvTEl2R0kyS2pUZm94WnZzTWJKSnVzUmZ3RmJldVl6d1kxWUxQOUY5?= =?utf-8?B?dHUyK0JEU2lPeUsvQnVmL2VRRVFac2FPTWsrbCtPbjdmeDZ3RllKWFozS3Yr?= =?utf-8?B?YUY4ZEY3NUVoK0l4VUZlTHJCTEhyNFZPRk56RTZhL3BaMXhRc2RrUzVZQ2hL?= =?utf-8?B?S3F5U29hbW91Zkl2aVlRT0QzL05GWDF2TDhHUmdJNm5nWXlzTEwvd3poelQ1?= =?utf-8?B?TkxqQ0FSakFKZXBBdVVzam1mZlNWSWVIeXh6akVxTU9ST3NiZzlpN0UwMkxR?= =?utf-8?B?bmt6NHd6ZURNeWRvYW5jWnQ1Q1R5STNzT09vbEU2eXJFYVFhanY3ZVk5MnZu?= =?utf-8?B?aVBCR1BvQ1pTUVdzRDkxNTU2VndZNk5LZFJHTDNQdG5lWGZyZDBqSnpHcTlk?= =?utf-8?B?eTN4UVA0N3VIU0dGOUVicmFaaFRZQTJoNktqTVRKNHFlS1hHeWFINFVMUVdq?= =?utf-8?B?RzhVMG9BNHl6T1liN012TE9rMG5Pa2JJMVF0Q1N3WUJFMnBDNmptbTBFYlJW?= =?utf-8?B?QmExVDdBU1FqZm4zdm9IUUFxVUw4cTI1UWtLMnJ5UmlxYTNWZHhHRnZMWnFF?= =?utf-8?B?OXdlOC96UkJ3N2hiOHlBVVcrZTFYMWpGMm1yZ0FpZ2NqYTVOTW9lWi9wVmhh?= =?utf-8?B?ejF6WG9Yem0yck4xelp4N05IS2FDUzRIamhqVzRENm1DcWlreXl4M1dIaTdN?= =?utf-8?B?a2dPZVEzN2J2Nm9OaDc3ZGx6eGxDT2tzWEVacDAvQ1pjZi9oWUVtRUNGUXpl?= =?utf-8?B?eTVaZlRUZHh5akIvdHIzT1huY2RBM2JpU3pyelVLN2thSnU2dGdRaUk0UmFD?= =?utf-8?B?K0lvTCtNc2w3bU0vbnJDVEl1bmtnRzRsUGI1Y04vc1FERzVBdU1uMWlZSUwr?= =?utf-8?B?dW05RG1TUFVzYjVJUGN4R3lFTkk5Z1grVllwdS9WQWVvci8rQjF5c2hjNkVr?= =?utf-8?B?LzBFUmtmdGJZVS8zejlRRURtdGFNTmwweGx2bGsrSGZBQVJySXJjNjQxWE5S?= =?utf-8?B?UkFaMzFrcmpwZVpvdGVnUDRxaXFsb1h4VmVIVWNjazFEdmNHU0FFUDhBU0s3?= =?utf-8?B?VjRBaUxJeWZ6Z0VzL01PNDFYaGdMU0dzUmd5OEF6SFdYK0VVQ2pOcm5Qdi9s?= =?utf-8?B?ckpiaURlVm9IWEFhdGpta1NWdjl1QzZacHB6OWtZejVBQXM4bmNtd01QQnFC?= =?utf-8?B?Y1dmalNTeGxsMGIzWTQydmxuQndQWEFlaFFwWGwwdkhyMlZhY00rYndiN2lQ?= =?utf-8?B?YVpWTFJzamtCdHV0WUN3U3FVSllNK1gzTUVzaTdzd1FHZTRxUGw0RkFScDdq?= =?utf-8?B?VjMxdlNIVUFwM1F2bW5iR1FnRWlHbmU3OVV0ZW1IQUVwblpEOXVoWFM2R3pm?= =?utf-8?B?ZmxZQTFFeXJJdS9jSHRXdWZaNHZVTXlHdHViK0lYWE9aV2FMY0hDUlpqR1dp?= =?utf-8?B?eGZzbXRGOCtNTldLOHVId2ZKVlBtYkNPaUJzcHpXcWpNaG1uSlhqVW1ybC9Q?= =?utf-8?B?VUZYaGVNcFQxT1JqVGZpTUsyTU1FSTdKWGc0UUxhME1zZy9kSzhUYUVpd0hC?= =?utf-8?B?V2VITTZ5c1FQMExQVHVmcXZ4MW9nMlRXdm5pZVVTejNLWWVOaXFWUDdLODBB?= =?utf-8?B?MGxnKzVONnpxVnVYUkRmSEUyd29PWFNzWXZTallieUNkeHpsYk9pdTNGa1RI?= =?utf-8?B?azkyUGRtaHVNY0V2SVZxQUt6aGsvckdHUGd5VUJXcGkyRVN2TFVlWDY1dEFT?= =?utf-8?B?K1k3LzYrMkgzTGZhYXJ4Tm1UOXFudlU5Smg5bnNqS2xxZHllYmRHcFdWNWtF?= =?utf-8?B?dE5VZEM5c0JyMGM2ekFRVzcrM2Nwb3ZDSWQ4NmdTZkd2cnFFVEtoOENzQkc5?= =?utf-8?Q?X3yP3/BwDfoP9DXIdpL3b4Lzl?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: d498985f-edc2-40ee-0594-08db007b188a X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3008.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2023 15:28:10.0107 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lNvvSTxvS0u7P4YQXyJIQWhTWJRQACmmCCe2eZS35H3Bx8EEuAIAewXnC3GatvCfy+Gx7bkJ/j+Uu3FdQQC5pg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6421 X-Rspamd-Queue-Id: 4CA2580015 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: 9p4piwpj1feohfi8kecfh7ma674njoj7 X-HE-Tag: 1674833295-465060 X-HE-Meta: U2FsdGVkX1+W2exA9OxVvPlZHBlPvTNj+QvpPU1YbX4+wZipZ+HJ6G15rsFyscVMCSUbE6RXwBGAznYn4skIqYbiNoxJH6PZ+cQSnlOB34CKDpxa1h3l08c60L2FVQc4aCg98RVvSyty2PLysTkDOFjY2yNhsSnwL9JxdfBkQFjsDpoLpZGng5lt8E0CD3EwagT6kQtjgngJ5J9amJvYyFAuEzjLxf/oiKeuUJgT9QEeyrRqkmU0FPSa5u27ws9fCAK/kGEGJdXGXF7mO814xLcsdL5fO2JGMLV7cejAJFZ5VpsjqSx/puKUebXWFMA7tGzvoeeLLdW/q7mIA6KJI1Zr3bTc1nt1wCksAk4R0ql809X0clBqtjYq0F5xRDM/ls7cMiInWReLcK+J5ZbFn8vRnvzYr0U3SktoXVyXFqXCRj9HZkWxIQaSuM4UagXF3qcNwM7J1xy/fS+gR9KhFdt2iAVz3i5isX347fV/MfxOiVCkFJNFmiTcpsrtVqu8OfhBRkkVl1fjfqEjwbAfBW14XY2P3iQSmpUCapWCkqRoUOd8u9gqmXQS51TJvTvrIn4jF81B9VNOerJToDmcnnEqmUnoWCAevxiAsSlNT/q6goxdZ8Tuvj7W46nYIA4PjBTX2mKMMruF4UHKFkHMdB1+szZxAnjnRY8RI+1mmX8tF9LODKJ1ST3byBW4jPs6+7ka4ueLwlySTM6qhstNtQH7rfUgKqPTPeyVpzz81SolUMtSwTwpvtq3qavaWOzpMRrXjef+uKmrSEk5iDVkFOaByuTzYIhhCCh5JMg6T0mvT+AvWvMQ3tcTU6V7YDYNp7W7KAVsNgwWa/Au+52Fhr7KSmfzOFa3qq/UHiOyKsxX2tWuSrcChJvbrMhVlEgoWsrwa24NmnkcyyHJXdKqxfEeMQSzpYZCBL0Kq2X+NbalN19PBqa3rf2TE/CvJbOQCL8yZFsXRuE+ZLZEn+5 SWfv1+qk m83+rhd5OcAc2wA2gVrvu6w/bgjWcJTD848gKhBIDwgKYs9aaZgGe0goTX44eIA/BhSjl4Q8/fqeRUtKxCBTT+K0N6HsX+he55IIk/rz6Q0SccjWiOiZDP7FeUwp3iPqI4yryTBKNIwgzV96L1C9LDuiZDLCum6s+t8/rko0ifT7g4nJ1nYR3qVlkj2NFKfM7EkLLox0qJeI8sNXNzhNlU8FU2j8k1o71kp0uPq0ehehx91SqhkZRSXVNXwGvWu5SXImdtfo5HjNSuILlcGxux6oadSA2tpqqTb/8m2g+O30DPCVLGxDVvOA053KGukWgo4CP21a4KQ79vfz9mswd6RZCqq9ND3jhWXr7X5mZa/pvC6hMB41K0t20JlYEiQzRyAqpeyGugv1DLjhMCRnQUec998GnSgcezUmH 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: On 1/27/2023 3:47 PM, Mel Gorman wrote: > On Wed, Jan 25, 2023 at 12:48:16AM +0530, Raghavendra K T wrote: >> looks like we have to additionally handle numab initialization in >> vm_area_dup() code path. something like below fixed it (copied pasted >> from tty): >> > > Yep, it wasn't even boot tested. Better approach is something like this, > still not actually tested > > include/linux/mm.h | 9 +++++++++ > include/linux/mm_types.h | 7 +++++++ > kernel/fork.c | 2 ++ > kernel/sched/fair.c | 17 +++++++++++++++++ > 4 files changed, 35 insertions(+) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 8f857163ac89..481f90dc1983 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -612,6 +612,14 @@ struct vm_operations_struct { > unsigned long addr); > }; > > +#ifdef CONFIG_NUMA_BALANCING > +#define vma_numab_init(vma) do { (vma)->numab = NULL; } while (0) > +#define vma_numab_free(vma) do { kfree((vma)->numab); } while (0) > +#else > +static inline void vma_numab_init(struct vm_area_struct *vma) {} > +static inline void vma_numab_free(struct vm_area_struct *vma) {} > +#endif /* CONFIG_NUMA_BALANCING */ > + > static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm) > { > static const struct vm_operations_struct dummy_vm_ops = {}; > @@ -620,6 +628,7 @@ static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm) > vma->vm_mm = mm; > vma->vm_ops = &dummy_vm_ops; > INIT_LIST_HEAD(&vma->anon_vma_chain); > + vma_numab_init(vma); > } > > static inline void vma_set_anonymous(struct vm_area_struct *vma) > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 9757067c3053..43ce363d5124 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -526,6 +526,10 @@ struct anon_vma_name { > char name[]; > }; > > +struct vma_numab { > + unsigned long next_scan; > +}; > + > /* > * This struct describes a virtual memory area. There is one of these > * per VM-area/task. A VM area is any part of the process virtual memory > @@ -593,6 +597,9 @@ struct vm_area_struct { > #endif > #ifdef CONFIG_NUMA > struct mempolicy *vm_policy; /* NUMA policy for the VMA */ > +#endif > +#ifdef CONFIG_NUMA_BALANCING > + struct vma_numab *numab; /* NUMA Balancing state */ > #endif > struct vm_userfaultfd_ctx vm_userfaultfd_ctx; > } __randomize_layout; > diff --git a/kernel/fork.c b/kernel/fork.c > index 9f7fe3541897..5a2e8c3cc410 100644 > --- a/kernel/fork.c > +++ b/kernel/fork.c > @@ -474,6 +474,7 @@ struct vm_area_struct *vm_area_dup(struct vm_area_struct *orig) > */ > *new = data_race(*orig); > INIT_LIST_HEAD(&new->anon_vma_chain); > + vma_numab_init(new); > dup_anon_vma_name(orig, new); > } > return new; > @@ -481,6 +482,7 @@ struct vm_area_struct *vm_area_dup(struct vm_area_struct *orig) > > void vm_area_free(struct vm_area_struct *vma) > { > + vma_numab_free(vma); > free_anon_vma_name(vma); > kmem_cache_free(vm_area_cachep, vma); > } > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index c36aa54ae071..6a1cffdfc76b 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -3027,6 +3027,23 @@ static void task_numa_work(struct callback_head *work) > if (!vma_is_accessible(vma)) > continue; > > + /* Initialise new per-VMA NUMAB state. */ > + if (!vma->numab) { > + vma->numab = kzalloc(sizeof(struct vma_numab), GFP_KERNEL); > + if (!vma->numab) > + continue; > + > + vma->numab->next_scan = now + > + msecs_to_jiffies(sysctl_numa_balancing_scan_delay); > + } > + > + /* > + * After the first scan is complete, delay the balancing scan > + * for new VMAs. > + */ > + if (mm->numa_scan_seq && time_before(jiffies, vma->numab->next_scan)) > + continue; > + > do { > start = max(start, vma->vm_start); > end = ALIGN(start + (pages << PAGE_SHIFT), HPAGE_SIZE); Thank you Mel. This looks better now. Yes we would have moved to mm.h eventually to avoid #if clutter. Also for PATCH2 function common to memory.c and huge_memory.c would need the same to handle hugetlb vma as suggested by you. Working on gathering numbers and PID clear logic now. will post V2 soon. Thanks - Raghu