From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F16EBCA6F for ; Fri, 19 Dec 2025 13:21:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.12 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766150515; cv=fail; b=eIfvRZOPX8DYnpl4MmU7GgqP+XTvc1uAnd+2jCbopqc5VbBJQyodDALhZjPf+JP6efph99lETpQLvcMhXdVTihefjyUkLdcRs7lH+xQ7TgSxzZv2UVMtIcSOtpAeZclFBMvQT3dRDUnBIQFvh/TF6ZSptqwOVcumdWziovd9Jt4= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766150515; c=relaxed/simple; bh=oPg47K3F5H1aiRuVgydb4FKaur27LCT6w+RGSzSMoRo=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=j+LM/+DqwlAa8FFqf9blpTPlj6f/m2nfWwpRiwG1k0mSw6EeY3Q+5fSc+F6xT7zC5HltMsbLSap/UUZ0BEgt2hMR8rLDrKAy/t2wyblnjM+VQNoNOPsWEAVN4XI8isbisXAQHV3VMVci4QcfoVfHgksZisz0M1pzsUAee8itMP4= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Nccj3HvN; arc=fail smtp.client-ip=198.175.65.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Nccj3HvN" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1766150514; x=1797686514; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=oPg47K3F5H1aiRuVgydb4FKaur27LCT6w+RGSzSMoRo=; b=Nccj3HvNYQWyrnta/6hspY4oVbgnFSGTy2vaoHiuPJzvRRMVx7d14TMF 6LsQBoSdULsm04TzMSQwcELHXujhxEP+dXotcezuj9NLPD9KDoZdkMw7l KmZLuKXAHzW9eGlghz/g4H4Bn/BjaM84scgImot5ldkUqL8LJCyDVTV72 003idqnqV5KXONBPmFmeQpp/0tWZH1FYGOa37aVhRTTavjn6K/tCovV6o MKknSvyaxLyPm89vfwaILvxsHksGjch4kflzHRzT+qL0qQXStKbAjJh2u y3QyplAnc2EUL0B3JKvrpoOL8KKw2aJ0mZFb11z6gu9Tz/PxqHXeib3kf w==; X-CSE-ConnectionGUID: ojpfZUIPTgyAGCo1CrmyMA== X-CSE-MsgGUID: 2GqlRFAUTy+1v0j5T5MCbg== X-IronPort-AV: E=McAfee;i="6800,10657,11646"; a="79567004" X-IronPort-AV: E=Sophos;i="6.21,161,1763452800"; d="scan'208";a="79567004" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2025 05:21:53 -0800 X-CSE-ConnectionGUID: AIf/9K8JQEC5EOx2p8++6g== X-CSE-MsgGUID: 5eQhrtv6QWqASL5tJ/7ZzQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,161,1763452800"; d="scan'208";a="198451242" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa007.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2025 05:21:51 -0800 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Fri, 19 Dec 2025 05:21:50 -0800 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend Transport; Fri, 19 Dec 2025 05:21:50 -0800 Received: from BL0PR03CU003.outbound.protection.outlook.com (52.101.53.32) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Fri, 19 Dec 2025 05:21:49 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bM1HiQDC4Ecn1RA3n8F7pjvtx5do4EmQB/IaDsy1Z/aRdXHUagzWdCuS66KYh8excWTU6+d8YlJlsjfrDyZWwp+zQgzC7SAYZ34jB1Vmd4JDuI3cnClflVc/juQty1/2cpyYx1dNSkvOPz8hkL2IOWCExAtSHvglf/+jSftiJLHjWvr4KEp72jKOZPWE7ij/Trdq5D2zZhu/5aUr8P3YbEb5vMFnzEonnji/1erqnn9n1K9x871vXfRO4vo9d4jzi6GWbP5F93WVs32RdYlkDqpBJl0Y3PuFrkToNotBCnaSogSpdgXgMV/6yeyjZeNQdXkk3hG6CwUQnma3jbQehw== 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=LHTn1goWJDaj9aWn0raT+0+E7kna9OUFCVgiAH0KcLQ=; b=G1+TGApIOkOzgrVewJPQpcqdkKuZPcAdk9py/rmEDzUZ44iG+MhqW9Gw3SWW2ydHLkkJOguFWUVGaClxC7FCvofxYhGMp5tgGrVc4eLv2TanF2HXxs/hNeZv7i4HLv2dCGFmsp9+YRmHPBb7PwKzSy4KYOxqiSbs7Znxe/St1tuMfeSlEGQnx69zJ0MVeg3skk/W0zWBIrk6gbMU21X7lHlZABs1xJXp+4Zvti3jcovhosPF0HJ8s+CYKL4JhUk/RmBs4OtQejXaNcBPA359q37tRr1hgmx32YA+hTxpg/Fw2qOz9bBfz7xobhMagFSyJ62w1hAsPKjawcCwhTA1Yw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB6020.namprd11.prod.outlook.com (2603:10b6:8:61::19) by CO1PR11MB5027.namprd11.prod.outlook.com (2603:10b6:303:9d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.6; Fri, 19 Dec 2025 13:21:47 +0000 Received: from DM4PR11MB6020.namprd11.prod.outlook.com ([fe80::4af6:d44e:b6b0:fdce]) by DM4PR11MB6020.namprd11.prod.outlook.com ([fe80::4af6:d44e:b6b0:fdce%4]) with mapi id 15.20.9434.009; Fri, 19 Dec 2025 13:21:47 +0000 Message-ID: Date: Fri, 19 Dec 2025 21:21:32 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 20/23] sched/cache: Add user control to adjust the parameters of cache-aware scheduling To: Vern Hao CC: Juri Lelli , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Madadi Vineeth Reddy , "Hillf Danton" , Shrikanth Hegde , "Jianyong Wu" , Yangyu Chen , Tingyin Duan , Vern Hao , Len Brown , Aubrey Li , Zhao Liu , Chen Yu , Adam Li , Aaron Lu , Tim Chen , , Tim Chen , Peter Zijlstra , "K Prateek Nayak" , Ingo Molnar , "Gautham R . Shenoy" , Vincent Guittot References: <8c33a6b3-4ff6-4cf0-855e-a9940b80c831@gmail.com> Content-Language: en-US From: "Chen, Yu C" In-Reply-To: <8c33a6b3-4ff6-4cf0-855e-a9940b80c831@gmail.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SG3P274CA0011.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::23) To DM4PR11MB6020.namprd11.prod.outlook.com (2603:10b6:8:61::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB6020:EE_|CO1PR11MB5027:EE_ X-MS-Office365-Filtering-Correlation-Id: 55d534f3-6494-47c6-4b06-08de3f018fab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?d002bVk2cHJiY0NSU29kWnRlK3pucHBkVHI3SVY5MlM1aVB6YVRmYllHVW5s?= =?utf-8?B?YnpmSWR2RTRBNTBpQk5uTEtxNFRwNEVDVEx1bUVTdUl2NTFtalFCMzJEeWo1?= =?utf-8?B?OFhmV01oNGVaMGI4VlNUa3cza2luYWpQWWw3WWtCc1Z3cTlPOC9kLzhEYmFz?= =?utf-8?B?cWdSMS9pOFQxVkNoalE2Sk9lbkd0dFJzcStBQnpQbnk3dis2S3pDc1BUZksv?= =?utf-8?B?d1Y2YTdRalEyNGRNS3UycGlnekorQ2VHVTJYMEVpcU9WWTJ2bzlrKzNJdEg2?= =?utf-8?B?UzVBMk11T2VBNXZBalZ4YjlSQTVpTzVzdWFhZjFUSVp1ZVV5ZUVmYVdYbS8z?= =?utf-8?B?VklDdjQ1bG1wcHJoc0VYQ3NiQ1RjNHNFU3M2QzhsYU5PRFpzUlowMmN3cUFN?= =?utf-8?B?Vm5uaWFnbURYYytDaGRrZXhlOUY1S0NyWWRnVGFkRUplTG05VlB3SFprUVdn?= =?utf-8?B?L0p4cjhxTUp5NTdEcDl3ckEyd0RwOGhnemxLMHgzSWdCQ3E3TzlrY0F6OTZF?= =?utf-8?B?ZTZqS1FqV2lVcHQrYUEwQlljRDc2Unlka3RORlYzaGJPL1V0U1RyeFlsUW1D?= =?utf-8?B?UVgvMldiN1czTGVGTlpGcjVjMHRqOVk1aDRiYjA3R3hTcGg1WjRyVTFQRW1I?= =?utf-8?B?YnhYL1JEWXd6UnMyRExpTkVMWjVJRW1uWWNCbW16Snd4S0VmV3V0c2F2cEJX?= =?utf-8?B?cTdsY1RRdTRBM2lzSE8ranhxMVpXVlJISysrczlpc2h6TTdSVFJCd2VUV0x3?= =?utf-8?B?RE1tbURBMjE4czNIWkN2SEtNV3VCZXU4ck5QMG9JYnNucUNkWDRFUzNYSUtJ?= =?utf-8?B?amo2UkpaSDk0K2d4VHFORjVWd0FUbGZVclVna1B0STl5WFVkSWdkcmxrSGNo?= =?utf-8?B?T3A3NjVQb2o0bjhSZFJxS3N2ZHo4N0pEUkhIUVRHcklndFhCZERsRFlhZUxv?= =?utf-8?B?WHBWek8zU0k5OHpWelZ0QXF5ZEFEZWsxTXh5Wks1QjNJT1lNQ1hNNG5uVUtH?= =?utf-8?B?TGRNOXhNcElpWkV4bktWTVZUamszMXZIRTB6eDB5M2ZHdjlBWFVpVjdWOEpw?= =?utf-8?B?THlhMjBDSkdBcThUcEJNU2xScW9TeDhXUEkrWFhqOFJCTmdXUjVta2hYOTN6?= =?utf-8?B?MDZtNUF1SGF6djk4U1dncDc3ZXJWdGYvWmdnVVlQczNBS280VjdVU24vdE1N?= =?utf-8?B?bmRVQzBZRUEwRXhGU0JocktQUzZyejdtbWJNaURxWkN5ZXJTZXpFamFBL1N3?= =?utf-8?B?SE1YeVNobisrYkFZZW5YUmlwNmlkemJGbjlCcHMvdE0wTExXWWgwUGF1a0da?= =?utf-8?B?Y2lpU1pPeFQ5emkwcDdPVDBpVFdpWUJtRmcxT0oxd2Fab0l6YW91K3R5dTIz?= =?utf-8?B?NnhndEgzRFlXNkhhM0VWenBKRFFGRXRvNGdvcWV1bHJhN2FwaG9Jekc2Ny83?= =?utf-8?B?dHZpSlhEcWVyWXlXQ0czdHJiQkhXU1ZqMlh3Z1kycG5jNWtqUE1CNXVkbkU2?= =?utf-8?B?UEw2ell2U1NvQVZBejZUbWYyL3lGTTlUSGJNd1VEUGcrU3B4U0poc3lVSnow?= =?utf-8?B?bEprQUhPYWJiK09qQm5lMTNyVlYzbk9pcTRMRGJXcHJUc04vN3owVnBQa0ln?= =?utf-8?B?c1lMcVlxTWZWNTJ5UFpPZXpXUWk1M1hsUTVwMW5mejRxdXZpanVtTUZYWWhE?= =?utf-8?B?UGNpenVvWFJYTDlWZ0VYQ1ZWdTBkNDNMK21hVGdYc0hETnFaNlhtcXVEZzg1?= =?utf-8?B?dFhCUWZSbitqb0tPTkw3VjNlTHJML1IwbkdhbThyZXg3QmZBN0RWQWlGOHFN?= =?utf-8?B?ZytJSW1JbzZJbUZhVDAxamRnR0hYb3B0ZnVVc1hGRHA4NDdoN3dxejRqdEd1?= =?utf-8?B?VEIrdy94V2x0Z3d3S1NBaTdWMjByakQ1QlZoOFRFOWhiWDdIdmxDYUNEOGtO?= =?utf-8?Q?Rk/TZXq5CHsoAFo4EOwtTXGjGDFxBFV+?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB6020.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QjFiV0FQak1QMlBVbWRFdExXRTI3UlZiYUJqaDNmTkx3ZzlKbThLWFVqa096?= =?utf-8?B?RDUrRG1nejEzRks5SDBtOXMxdlZQS3JoQmhXeWxNMjZwMm1mNVpKN09WdEJv?= =?utf-8?B?bnN0VERzWVkyUE91MS9xdVhhTU52MGI0OTMvaEt2bFRWOFhOVlRsR08xdFlq?= =?utf-8?B?MExaMmhZMWFPL2lrR3hDZ1IwbFF4RGNkY3dWUHNVVW9rMmJoRGZ4TTJnTGZD?= =?utf-8?B?NVc4VkdFdUd1bVNIUjh5YVViR1Q1VGVYUXRUSFpNVG1XRmkyZHZvV1NyWEg3?= =?utf-8?B?ejNBZVBQVVloUFIrQUEzbm83OGNSSlhZcUY4UlRLSE92T0JGK2VKaytGNTc3?= =?utf-8?B?ZWY5OFJTV2wremovdExRZDd1WkNsYTRkTkthSDN3Mmk4Wm1UQmt2R0hXZHNX?= =?utf-8?B?ZlVaUUtmVENvZ2l1ZEw4dyt6V2FtaGtBQXFyRjliYlQ3NW05dEhEbFVjalVC?= =?utf-8?B?c0RWcEZjZTROeTcrU2RkVlN4Yk1KL1F2NHBXRGpkNDc3NWxMZXpmb1FtMm9X?= =?utf-8?B?UXVpZ1dRRzdEaVVSUWFGMGo5ZFRiYmRNS0dsMFo3em9RZnpjMmxpT1FQRWdw?= =?utf-8?B?L2p0VTFDaURUajk5ZjJvMGhNK0pTeXNZWnJkd3VnWXhuOHVrSUxaUENXME9O?= =?utf-8?B?VzZiU2JLbkYrYjhxNHhIMkVyQXIyRjdYSk9ycTJDTHgxeWh5KzNmQ3dhS200?= =?utf-8?B?VEx3eG4ySW9KeTJjOCtPT2xlNUMxMFpMbEhSMTE3YTlDbnlCQzJOTWlxY0RE?= =?utf-8?B?Mnh4Mlp6UGpIOTY2RVFVZ1N3eWVJRDFXU0NMSE9CUng2ZCt2NDJ3cWtZTWpH?= =?utf-8?B?eksvdjlHYklGSExIV21IT1dNYlFJM0E1eGF6WFFkeDV0T2tJaE1uR05nKzE5?= =?utf-8?B?M1ZmaHJTeTVjTktRWUJRc1VJZGNnZWtoMVV3Ukx3bFE2Z1dwK1JvZUxCTjBq?= =?utf-8?B?dmpEOW5jMjN5cW9pQlgxYlpPcmVOOFRTWmM4ZnJDT0d0RXl1a2JmUFdTTXhO?= =?utf-8?B?RUU2ZjhDU0JCc1lYN0dvYUs1c0luR3NrakZWS1Q2M0dQTmt0Z3E0aW53VzFJ?= =?utf-8?B?VVFoK0c2QXE1RnNMT0hvc3BYSm5NRGVFWXlBSzd1cjJTS3lqaFhRRzQydzFx?= =?utf-8?B?NndjNWxKdVlaZ2R3dHFHOWZFQTdlMGgyanY5RFc5K2xVWjYxeU4waVd4MzRk?= =?utf-8?B?V3ErZmlxRjdoTzJHNkVLQkZObjAwQkg5ZUxzaThxYVNXT0ZSVGlrc1JXV3hF?= =?utf-8?B?UXFHRTJDc2lJK2xNWFV4a0VHK3JKaDFLZ09mYXoxaVl3TDF0UWRCMHI5cS9Y?= =?utf-8?B?dWo3aFlFK0FpRytuTitJckxZNWZpZzk4bFpuOE1NcnZ4T0Uyc3BwcnFrMFlp?= =?utf-8?B?MUxta1N5VTd4R0o2c2RqcU4rcXpJRDBqL0huSEozNUE5VVMzV01GaWQ0c3NI?= =?utf-8?B?NzNiTzFRM24vbEdHc0VkNnE4a2dhNGROUTU0NC9ScUR4Ni9sYjRSaFZlZmlW?= =?utf-8?B?eldSaFVoWmpoL0VFNmVrbjBlb2N4V1hYbEg0Yko5VzVOVWtyNiswRnhvcmc4?= =?utf-8?B?U1I4S1RyWHQ2b2FNMlZCNlZuZlMvREs5enBBTUhEbHE5TWlSTVNSY01ibVMr?= =?utf-8?B?SlRtbXVsdnBnQklONG50RlFSNGlqOE9ENDNvY3VIU29BaVRDaHdwTytPVXBy?= =?utf-8?B?dnVnVnRaZk5VV1FkZk9VR1BXcEsrdXBtZVQ4MXVIcGhNejBNOUI5QmJORDZo?= =?utf-8?B?b3ZJVlo0N3hoY2JycUhFRlNZRStGcG1xdnFHeWp3V1hsbmtoQlk5L0tpRFVU?= =?utf-8?B?cFRYWXNiSlZ6cm1jTHhPL2dZVllFOHQwSTBFQ1ZQYWlHS0w2dFZ5dThFU1VD?= =?utf-8?B?S3QwRlM2WkgvS2o4aWwxYm0yQk1qZUR1QlNoZVkrSGkwK3gzR2hJOWhxOUxC?= =?utf-8?B?SDNQT0Y3enkzNXdDa2NvM1lOaHpvU0ZXOEhCUjZ0OUVTRlJJWmh4UzNCeDJh?= =?utf-8?B?L1dTVEZOUHFhZkpBWTA5bWV0SjZBR2F2THJMTkV2ZzhldHJxOGxiNlhjWmJU?= =?utf-8?B?dVJWZUNWdHY2YVRCbUNXcEliSllsUzJ1cWpVeHhzRjV5M1FleGtWL2hNN25I?= =?utf-8?Q?4qJeG8qtVC3pSpAEoEgKSkPMu?= X-MS-Exchange-CrossTenant-Network-Message-Id: 55d534f3-6494-47c6-4b06-08de3f018fab X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB6020.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Dec 2025 13:21:47.2430 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HmDocjJaiMDbQiNgKZjQLRFiBCmVxVxPdl9DlYMt/PR27QyLK1lcGu2SV2519YiTJ6k/6JWZ+/+lHTZVm0kPOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB5027 X-OriginatorOrg: intel.com On 12/19/2025 12:14 PM, Vern Hao wrote: > > On 2025/12/4 07:07, Tim Chen wrote: >> From: Chen Yu >> >> Introduce a set of debugfs knobs to control the enabling of >> and parameters for cache-aware load balancing. >> >> (1) llc_enabled >> llc_enabled acts as the primary switch - users can toggle it to >> enable or disable cache aware load balancing. >> >> (2) llc_aggr_tolerance >> With sched_cache enabled, the scheduler uses a process's RSS as a >> proxy for its LLC footprint to determine if aggregating tasks on the >> preferred LLC could cause cache contention. If RSS exceeds the LLC >> size, aggregation is skipped. Some workloads with large RSS but small >> actual memory footprints may still benefit from aggregation. Since >> the kernel cannot efficiently track per-task cache usage (resctrl is >> user-space only), userspace can provide a more accurate hint. >> >> Introduce /sys/kernel/debug/sched/llc_aggr_tolerance to let >> users control how strictly RSS limits aggregation. Values range from >> 0 to 100: >> >>    - 0: Cache-aware scheduling is disabled. >>    - 1: Strict; tasks with RSS larger than LLC size are skipped. >>    - 100: Aggressive; tasks are aggregated regardless of RSS. >> >> For example, with a 32MB L3 cache: >> >>    - llc_aggr_tolerance=1 -> tasks with RSS > 32MB are skipped. >>    - llc_aggr_tolerance=99 -> tasks with RSS > 784GB are skipped >>      (784GB = (1 + (99 - 1) * 256) * 32MB). >> >> Similarly, /sys/kernel/debug/sched/llc_aggr_tolerance also controls >> how strictly the number of active threads is considered when doing >> cache aware load balance. The number of SMTs is also considered. >> High SMT counts reduce the aggregation capacity, preventing excessive >> task aggregation on SMT-heavy systems like Power10/Power11. >> >> For example, with 8 Cores/16 CPUs in a L3: >> >>    - llc_aggr_tolerance=1 -> tasks with nr_running > 8 are skipped. >>    - llc_aggr_tolerance=99 -> tasks with nr_running > 785 are skipped >>      785 = (1 + (99 - 1) * 8). >> >> (3) llc_epoch_period/llc_epoch_affinity_timeout >> Besides, llc_epoch_period and llc_epoch_affinity_timeout are also turned >> into tunable. >> >> Suggested-by: K Prateek Nayak >> Suggested-by: Madadi Vineeth Reddy >> Suggested-by: Shrikanth Hegde >> Suggested-by: Tingyin Duan >> Co-developed-by: Tim Chen >> Signed-off-by: Tim Chen >> Signed-off-by: Chen Yu >> --- >> >> Notes: >>      v1->v2: Remove the smt_nr check in fits_llc_capacity(). >>              (Aaron Lu) >> >>   include/linux/sched.h   |  4 ++- >>   kernel/sched/debug.c    | 62 ++++++++++++++++++++++++++++++++++++++++ >>   kernel/sched/fair.c     | 63 ++++++++++++++++++++++++++++++++++++----- >>   kernel/sched/sched.h    |  5 ++++ >>   kernel/sched/topology.c | 54 +++++++++++++++++++++++++++++++++-- >>   5 files changed, 178 insertions(+), 10 deletions(-) >> >> diff --git a/include/linux/sched.h b/include/linux/sched.h >> index 466ba8b7398c..95bf080bbbf0 100644 >> --- a/include/linux/sched.h >> +++ b/include/linux/sched.h >> @@ -2436,9 +2436,11 @@ extern void migrate_enable(void); >>   DEFINE_LOCK_GUARD_0(migrate, migrate_disable(), migrate_enable()) >>   #ifdef CONFIG_SCHED_CACHE >> +DECLARE_STATIC_KEY_FALSE(sched_cache_on); >> + >>   static inline bool sched_cache_enabled(void) >>   { >> -    return false; >> +    return static_branch_unlikely(&sched_cache_on); >>   } >>   #endif >> diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c >> index 02e16b70a790..cde324672103 100644 >> --- a/kernel/sched/debug.c >> +++ b/kernel/sched/debug.c >> @@ -169,6 +169,53 @@ static const struct file_operations >> sched_feat_fops = { >>       .release    = single_release, >>   }; >> +#ifdef CONFIG_SCHED_CACHE >> +#define SCHED_CACHE_CREATE_CONTROL(name, max)              \ >> +static ssize_t sched_cache_write_##name(struct file *filp,      \ >> +                    const char __user *ubuf,  \ >> +                    size_t cnt, loff_t *ppos) \ >> +{                                  \ >> +    char buf[16];                          \ >> +    unsigned int val;                      \ >> +    if (cnt > 15)                          \ >> +        cnt = 15;                      \ >> +    if (copy_from_user(&buf, ubuf, cnt))              \ >> +        return -EFAULT;                      \ >> +    buf[cnt] = '\0';                      \ >> +    if (kstrtouint(buf, 10, &val))                  \ >> +        return -EINVAL;                      \ >> +    if (val > (max))                          \ >> +        return -EINVAL;                      \ >> +    llc_##name = val;                      \ >> +    if (!strcmp(#name, "enabled"))                  \ >> +        sched_cache_set(false);                  \ >> +    *ppos += cnt;                          \ >> +    return cnt;                          \ >> +}                                  \ >> +static int sched_cache_show_##name(struct seq_file *m, void *v)      \ >> +{                                  \ >> +    seq_printf(m, "%d\n", llc_##name);              \ >> +    return 0;                          \ >> +}                                  \ >> +static int sched_cache_open_##name(struct inode *inode,          \ >> +                   struct file *filp)          \ >> +{                                  \ >> +    return single_open(filp, sched_cache_show_##name, NULL);  \ >> +}                                  \ >> +static const struct file_operations sched_cache_fops_##name = {      \ >> +    .open        = sched_cache_open_##name,          \ >> +    .write        = sched_cache_write_##name,          \ >> +    .read        = seq_read,                  \ >> +    .llseek        = seq_lseek,                  \ >> +    .release    = single_release,              \ >> +} >> + >> +SCHED_CACHE_CREATE_CONTROL(overload_pct, 100); >> +SCHED_CACHE_CREATE_CONTROL(imb_pct, 100); >> +SCHED_CACHE_CREATE_CONTROL(aggr_tolerance, 100); >> +SCHED_CACHE_CREATE_CONTROL(enabled, 1); >> +#endif /* SCHED_CACHE */ >> + >>   static ssize_t sched_scaling_write(struct file *filp, const char >> __user *ubuf, >>                      size_t cnt, loff_t *ppos) >>   { >> @@ -523,6 +570,21 @@ static __init int sched_init_debug(void) >>       debugfs_create_u32("hot_threshold_ms", 0644, numa, >> &sysctl_numa_balancing_hot_threshold); >>   #endif /* CONFIG_NUMA_BALANCING */ >> +#ifdef CONFIG_SCHED_CACHE >> +    debugfs_create_file("llc_overload_pct", 0644, debugfs_sched, NULL, >> +                &sched_cache_fops_overload_pct); >> +    debugfs_create_file("llc_imb_pct", 0644, debugfs_sched, NULL, >> +                &sched_cache_fops_imb_pct); >> +    debugfs_create_file("llc_aggr_tolerance", 0644, debugfs_sched, NULL, >> +                &sched_cache_fops_aggr_tolerance); >> +    debugfs_create_file("llc_enabled", 0644, debugfs_sched, NULL, >> +                &sched_cache_fops_enabled); >> +    debugfs_create_u32("llc_epoch_period", 0644, debugfs_sched, >> +               &llc_epoch_period); >> +    debugfs_create_u32("llc_epoch_affinity_timeout", 0644, >> debugfs_sched, >> +               &llc_epoch_affinity_timeout); >> +#endif >> + >>       debugfs_create_file("debug", 0444, debugfs_sched, NULL, >> &sched_debug_fops); >>       debugfs_fair_server_init(); >> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c >> index 424ec601cfdf..a2e2d6742481 100644 >> --- a/kernel/sched/fair.c >> +++ b/kernel/sched/fair.c >> @@ -1207,6 +1207,9 @@ static s64 update_se(struct rq *rq, struct >> sched_entity *se) >>   __read_mostly unsigned int llc_overload_pct       = 50; >>   __read_mostly unsigned int llc_imb_pct            = 20; >> +__read_mostly unsigned int llc_aggr_tolerance     = 1; >> +__read_mostly unsigned int llc_epoch_period       = EPOCH_PERIOD; >> +__read_mostly unsigned int llc_epoch_affinity_timeout = >> EPOCH_LLC_AFFINITY_TIMEOUT; >>   static int llc_id(int cpu) >>   { >> @@ -1223,11 +1226,22 @@ static int llc_id(int cpu) >>       return llc; >>   } >> +static inline int get_sched_cache_scale(int mul) >> +{ >> +    if (!llc_aggr_tolerance) >> +        return 0; >> + >> +    if (llc_aggr_tolerance == 100) > the range of llc_aggr_tolerance is [0, 100], so a little bug here? maybe > check if (llc_aggr_tolerance >= 100) I thought llc_aggr_tolerance should not exceed 100, in sched_cache_write_aggr_tolerance(), if the input value is higher than max, it will return invalid: return -EINVAL; I did a double check on this: root@vm:/sys/kernel/debug/sched# echo 100 > llc_aggr_tolerance root@vm:/sys/kernel/debug/sched# echo 101 > llc_aggr_tolerance bash: echo: write error: Invalid argument > > and if llc_aggr_tolerance = 0, the func return 0, it means > exceed_llc_capacity & exceed_llc_nr always true, there may be > inconsistent to have this value set while |llc_enable=1| is set. > If the llc_aggr_tolerance is 0, the cache aware scheduling is supposed to be disabled - that is, exceed_llc_capacity() always returns true -> the process is not eligible for cache aware scheduling. thanks, Chenyu