From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) (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 8866D13D503 for ; Wed, 10 Dec 2025 14:03:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.16 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765375390; cv=fail; b=jQmcShOieakRG25qwh++rl5ElKjoJnVcXHdQozdKH1turNTx4knLqIQhwVspSlp5OrjI0CEf1nvzaNQroE+SJ58zJjIHTm31UDhMsyR6h9rVCd7sRqDnCW8zcTroBpCKPM5b+ax7yx4bF9msUFjW3wTqx45nnXmdLooeXUKKPnI= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765375390; c=relaxed/simple; bh=OhjRI7KxCkfuiI8mV3CT33tD/UusGD+yT7n/wwoIJzA=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=rj4nqk6sdMrHdd7gL2Yk1hHLyHba7JrLzo0H4iZBU/Etu8i3NKfy7hFhmsHlKzfO28KXI6P/3+X6leGxX/uF1LJAcF52xJ+wcbqhjNy2ipRbvSo7YNqRy6L3SKnbcDv0oXalHLAlFDuD24t8PLCOJ17GihT4VnaUBDIS6vxiRks= 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=IEL7NxH7; arc=fail smtp.client-ip=198.175.65.16 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="IEL7NxH7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1765375388; x=1796911388; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=OhjRI7KxCkfuiI8mV3CT33tD/UusGD+yT7n/wwoIJzA=; b=IEL7NxH7F+e+TwUAAC8BUgifmv+ItkZwtZgkPkO1Hro00YrIiuoozn2Q cXAsas6YmNK8aQgeY4XPs+8efEAqMiLa/NuMOpPtRHCVm2pKe7Qax/ij/ GTaF7twPNIEOAuF9u08HxSgx88r/8ckNUYYCez/JZjzdy/Vg8RtJ0S8qh KNOwkK9tKDgdUbgav/Jy1Tc5PALsZw9QIUHacu6i56ZPCneA5EOpUZP1N SNvVKeIMd7KTtfQRacUxIEKWFUH+MJA+Jmbr3U/g40vs/6IBGXZWix6km cr3kxpakqU2U0+ykoUfYuXzLZLbOblJMq40iI0vbVo4XnqMImExK2x3I5 Q==; X-CSE-ConnectionGUID: p5TmuYDNSQ+8tk3TBLJQ6w== X-CSE-MsgGUID: IyIy+5ZKS7qPkOWawZ2NMQ== X-IronPort-AV: E=McAfee;i="6800,10657,11638"; a="67517969" X-IronPort-AV: E=Sophos;i="6.20,264,1758610800"; d="scan'208";a="67517969" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Dec 2025 06:03:08 -0800 X-CSE-ConnectionGUID: vY5Qd/m+Qjeamb4MLFXRxA== X-CSE-MsgGUID: RyCQnwshSRSB3yA9QAhmWA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.20,264,1758610800"; d="scan'208";a="195590868" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa006.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Dec 2025 06:03:07 -0800 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Wed, 10 Dec 2025 06:03:07 -0800 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend Transport; Wed, 10 Dec 2025 06:03:07 -0800 Received: from CO1PR03CU002.outbound.protection.outlook.com (52.101.46.23) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Wed, 10 Dec 2025 06:03:07 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IOmVxUTX0E1MJa9SZLl2C0PwGt2iz7wuQceuqKUtFqsNfo/fNIdhEbtPOX3LKT5s6C0OQKEVPV9VcHH6F7IBSRnhvJIWUZgkjc9kcoqiU3A8K7n1GXxOi5iC7z40QdMVZto3Klmw0a2Z5dhk30sxXZS+IvnM7F9MccLLC4SV+27lGCnDa1/te50jTJeBS2TD2kstVDZ+c+Gu0jVJf7bTUy61prICN+40V5Rf5IoMym5QLP6CLP0kGLBJ3rWGLCf4agHSrsKnjj7QYjqhEWKoJap3io6y1wWwgPEb5vwr7iLDEJHgKdrMoWf7o8LjWdarl2CYXIVoCXZy4v3IeDvJLw== 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=2Wg4owAxZArlkHDJxeWZBpJmgTloghzHBTcRWPCWfOU=; b=sBQABp5W2yxBlPb03ucdZAsF2BWb86X1QwPk/K2RWRZVRensYmqglAdlUC3lDH0HI7F5k2rabLgMP4jMuRyhoZ0JFKSUcBQB+HCyFLDxYYxN5vPIUi8XB+TMARmrCF+7o5oK5QuokNKsngkZDskQTxVgmhHVhkGAYQ0dWVOix8mRSJtKWC78N1gE9sJxOhaYlWcAznr4hEnArjz6xsl0yIVEp4czSe3dk2s9ZLrNf0wMMedwrefvFeymlPv+BB+XEmPc2iIV2nTC2ploQBT8xPR7oEx54FrlJjIcvus8bc2pNSpdznTeAY3uox5moiXGx7FoLY6Y2VCfzG2BvsfWWA== 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 DM4PR11MB6405.namprd11.prod.outlook.com (2603:10b6:8:b5::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.7; Wed, 10 Dec 2025 14:03:04 +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.9412.005; Wed, 10 Dec 2025 14:03:04 +0000 Message-ID: <58a92e45-3b43-4938-b10f-65f7fa7c5017@intel.com> Date: Wed, 10 Dec 2025 23:02:39 +0900 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 02/23] sched/cache: Record per-LLC utilization to guide cache-aware scheduling decisions To: Peter Zijlstra , Tim Chen CC: Ingo Molnar , K Prateek Nayak , "Gautham R . Shenoy" , Vincent Guittot , 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 , Vern Hao , Len Brown , Aubrey Li , Zhao Liu , Chen Yu , Adam Li , Aaron Lu , Tim Chen , References: <20251209112134.GK3707891@noisy.programming.kicks-ass.net> Content-Language: en-US From: "Chen, Yu C" In-Reply-To: <20251209112134.GK3707891@noisy.programming.kicks-ass.net> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: KUZPR04CA0018.apcprd04.prod.outlook.com (2603:1096:d10:25::8) 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_|DM4PR11MB6405:EE_ X-MS-Office365-Filtering-Correlation-Id: 119b2ec0-d8a6-4170-fefd-08de37f4d695 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?TnV0SUQxT1BXbGRTUWdkYUl1a1E0Z1NURWxTaVM2TGFlMjFIellaR3FVTzBz?= =?utf-8?B?cHVPbkxzWXQ5UFhtWS9uUFVZNTB2dmpnYTBTQUJXL2NqWEhxR1p1ZFczZXgz?= =?utf-8?B?NHJoMEFNVkpKdEhNYjFIQ1QwUks2TGY4NUFsTkpEcmE1Zmx6QWtXU2g2VkJX?= =?utf-8?B?ZHdXbHEzQUlUUDV0SHJTUFRCeTZTVUhyeFNKWmNxSDR0TzNENFVWRW0vdk1t?= =?utf-8?B?T0I4ZTR1b2tXb1RYemtpOEVveitIZExZdUwrQmVsV3VlM1c2Wm4yaXZKTlBH?= =?utf-8?B?RmZ1ZVdVNXFvNXVWd0g0Szg1bktVM3hMdkw3b1NqRTM3WVA1WUQ1aTcrSk52?= =?utf-8?B?TFU3b3JxdDQ5Mk9EZ3RuR1gvK0UzdlBQUmxiaHJhaWl0NkxsZDhuTzJwWGNO?= =?utf-8?B?VHV3MXQ1MTdjNFNzVlpCWW81ckNDWU9EaW9kN1BkcXp5WWJ3VGM4TjJ5WTEx?= =?utf-8?B?UzM4aytmZ1dMT2J5QnlHMlN6NDRYa3pjdkd4cXg2empsZWY1MW90ZHkxNzZZ?= =?utf-8?B?bS9HY1dhQU5aOWozWlFWRk9oaU15OFJvdmJzSi9KRFFkbHRvdFQ4d1pQV0xz?= =?utf-8?B?eDZ3bXpMN1RGcGRwNGVuNWhWdTZ0bGkyYS9sdC9XZVIxZ1FBRk5GSnJDOEVQ?= =?utf-8?B?TkN0dE5wSStndHo4b25oN05FSFhzY3RYK0VteDJOOU9oWEhKMW1neVByaWxa?= =?utf-8?B?ZnlST0tva3k4c1V3R0QwWUloMllneUJzWUNrMUFRdXBucTBRK1E0ampNV3gr?= =?utf-8?B?RjVxaHNpeUpyQlAxSjNUR01aamtaYVlFOTVyeTVpaWZmMk1md0piYWRTUVFD?= =?utf-8?B?c1ZjWXprd211a2RnemZuVnFjd25zUkc3dkl5OE1XTVI0VUE5aGo2YnZtZnlS?= =?utf-8?B?QXJUck93Q0IwS3gwcm93Q3kwZlBIaFlYMDFDS0gwWFd5SnJqam4xQ1BFdjBB?= =?utf-8?B?M2hnMmpadHQvT3laOTZ0N3dpbk1jNlRCcnZqT2FWTDVlbEd5YmFWQjNkclVJ?= =?utf-8?B?Zy9RSU9sQ1JDcWNuTGdodG1CRDFsME9qbVdSWDJSUTl6OWpoUGMySVkwWWJS?= =?utf-8?B?YmpFUVFDakl0cTdpVGpFUklPREd0TVNPQldTYUtpLzgxaFVCMTlIQ2lITXVu?= =?utf-8?B?bVMzNjAzek13WnZLK3BYZjdjRUU4QW81MU9IMmJaOFUxc0NveWpBWktvZDEw?= =?utf-8?B?aG9UMC9jcjZEUzFKVGx5K3hwK2xQbmN1bzYyWmRIcWdNeFFFVjFMSzExL29Z?= =?utf-8?B?ZUhHcGhyQnUxcE5pMUpUTzduVEljd2lIazJ6eldIMjdvME84dnZoYmVpYjRa?= =?utf-8?B?d2FBNEluZmxmUElmQWR5SC9VdHAvQUlLWUs3cWhseW11WDk2WjlKbkM4RGdR?= =?utf-8?B?S1ZzOWpFRjlOanZuQ3V2OUpvaU42M1ZoejBtVElrTDFHQ08vb2RFZkJsclRV?= =?utf-8?B?ZTJtQ2pLaHdWTEQ4Y3ZqamNqSXJCVVFrdVRjMW55QnRGbUd2bUVrS1Z4ZlFy?= =?utf-8?B?UTdrazM0dTVlK1l2bFFPb1BwRFR2RkhLdUhrUVdqaVBvcE1SYXhUaWU0QitO?= =?utf-8?B?UzgzVTIwcm1uZzNwa1F5Q1lYZkNybnpRYVpKQXZqK3h6eHgyR1o1bHRPRWZk?= =?utf-8?B?VlNiZSsyMU81TjcxYk15VmdzdElXWlNBYjdNVGErQW9uL0g4NkJrM1g2U3NC?= =?utf-8?B?N0cxYWdFZnI3ZXQ4YWVRUC9YL2tQM3hsc0NkODl3NVhIdjRZU1FYN3hzc0Nj?= =?utf-8?B?OVBpdWtnQzBTOGE1RjQ4ZHh1M1BldHd5eFVaUVVNTFZTNm5kckl1N09ibEdn?= =?utf-8?B?UjZJV3EySU1TVklpZ0RBcUFHLzlha0Q2STYxdDRVZHBMYXlDbi96NHdqUjhL?= =?utf-8?B?aHlnK3hLY1VTcU1lMjdrNDA3eWlHOWdQYXVHaWsyNkZVVFJPWXVManJkLzRx?= =?utf-8?Q?H1pZXJgN+J9fdyYAdke/FVzVpeLidJyz?= 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)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NDZqU1NVMlRGbnlSd1VMUDBBTGM2QzNNNER6dzl6eGExSXd6YkIyU3dpUU9m?= =?utf-8?B?Y1NQWEFCbnkzNG5PUWI1ZCtJNmpOalNMTjdacVlUWE9rMXlPa2ZGZm96RlNF?= =?utf-8?B?eXhEUzZJS1NhZ2pTaE5nOXdUUVBmNUtURDIzNTlkMXhFeGcwZkYrL1dDL1Ur?= =?utf-8?B?Zk1OWFRVYUw4a3JsK0FHbkdsNzJiY2NXOUdWSngxVGJKbnpQZ3p2TmVlYTZD?= =?utf-8?B?bGdhK1VNWlgwWnBGeFc1L1FvdFdsYTNIczdhbGlEWDFPTlAzZy9sdm5RZCtu?= =?utf-8?B?Tm9wdzNyeUxiMXJWYVBQU1IvcCtvRVlNeUtBOXhsY3NMZXlTTzBBYXhZWTRG?= =?utf-8?B?RVF3THlyN1FpOUU5VXJwVHg3RmkwMFY1bkQreVVsQ1dTTTFsUGl1NVlleWkz?= =?utf-8?B?M1BzVDBCUnQxWDVGc2JES1RYRnZtY2FpNU93Z2pqd202RHNpUmU1N3JyVmhy?= =?utf-8?B?Mi9rRU5nOW5Cam90RUdkZHVBVWMvVkFva2k2a0diUDJ1NTNtcTFSWndjR09j?= =?utf-8?B?Uk5FdlpJZ3ptbkRaR3RMZmp4ZFhZYXJtOFU2SVJTVVFPY2NsajRJMit0QlN2?= =?utf-8?B?YUw3VGNnSGVuWURlNVMrdmxCWlMzMVMxbElzaVQrWFMrYTBuOUJyUC9HZVFs?= =?utf-8?B?N3dhQ2dRREp6TUNRTmJSS2FNbHlSMU9Rc0tERVMyQlB0M1hwSlJSOEEybk1O?= =?utf-8?B?ckhiVi9CRkwrS2dnMFI3angvQnFQQ1c4TXliekd0dEJMSE1LMHhSZmxycHNP?= =?utf-8?B?amtSK1dhL051TU5RSVdzeWYrcFpOVUZpZWJ6YnJoaXFlbXE3bHM0QjFONWts?= =?utf-8?B?Y1R4L1J1elozMG5hWVdnZGxnUHJHVTg2N0kzTUNLZjNDS1NjUTc2TjVzejVx?= =?utf-8?B?c3I0cmcxTU1Sci9DdXRCL1hBYzF6ZVhyY1hhNG40bDNzeFFvYzF4RFFZcVU2?= =?utf-8?B?a3hPZlBkSFVxa3lqY0FlVXJqYUJrTUJKNytpVkhPQ21vUjN3TVZac3pXaWpH?= =?utf-8?B?Y0loL3hoZkQzemduK1QvUVZBMy84NXVQOVN6WC9qZ0pwdTFXV1hlUlRTeXE5?= =?utf-8?B?N1psajc4d0h6d3plZjBiQzJIZE1JNFphMnJYaDlvN1p4a084ZWFZNHFHWkc3?= =?utf-8?B?NENGMVVLcTNYNm02Z2o3anBycyswNE01T3lqMHJweHVLekZxTGxKNVFENnZx?= =?utf-8?B?RnlmZXdsUGYvU3ZCbnpNenJkOWVIZmUrcFVNcGR4Q082dytqeW9mbFBhVmV2?= =?utf-8?B?MjlmMmE5L2NIbEZhS2VxUFcvOFFDOS9TZTQ1Tm1nVGhNZTljandCN000SmxG?= =?utf-8?B?WS9Yd1NNRnl4NEg5T3hDMTFNSkFxOENsR1d4RGF6UUp6UURIenZoRmJDckJl?= =?utf-8?B?UlNTM25iNjhpWkd2YkIxY3RGQWpDdjlWQWorRUhWTVByUHdMcVp1R3FPbVV1?= =?utf-8?B?MlQydTJZeTNZZGtPTUtJYWR1RVpEYlQ5V3BYQ0JRcGJ4M1pqNmxuNUlhZ2Mv?= =?utf-8?B?VXhXN2NmRWtCUFFsV3ovOXBkYnhST1h0czN4S3crSlRtSVFiZFJ1NVhJSDAz?= =?utf-8?B?cEdiSVpKU0xrV2w3ZzdSMWtpN052SThmRE1ITWI1VHhlSmVrbVZwRGE5K0oz?= =?utf-8?B?N3Y2WSs4UmwvU0tnZTM4WlBIWThjYzAzbFhINU1hODFxQjlTUEpZcnc1aGx6?= =?utf-8?B?bVdYL21Ud1pRb3QwSGlhbzhGdUhoU3VnMDJDaEVXT1FSaEE3NmpzOGRMTUZJ?= =?utf-8?B?K041dC9wdzNXYnJGNjFGVkVoVGlmb3ZCckxjamx4UFNnRVBmZlgvc0JPZGRV?= =?utf-8?B?TTcrMU96OVR6Y1ZNS2YweVhxVkZaM1ZVR3hySXBXWnpnQmVtRlZWVjAzWFZu?= =?utf-8?B?aitUM3BKbys1T0JkRGJXWmJTVjg5d2hMeTVjMVUxeUl5L0RkUU52Q3J4dWhr?= =?utf-8?B?WSsybW84enFjYmY1eVR4dERybnE4d24zNWZ5aEt6ZHhQQUdBSTVrYTBzY1h3?= =?utf-8?B?SVo4Q0VVVmkza1dvNEY5Y0xwM1plYThsb2lqYUZ3cnp0MnhLaUFPSnNIU04w?= =?utf-8?B?cVNCTUFGQkIrbjlsTG9XajNFazBIcTJwbHoxU21hc0RWUUlZdGY1NXFNNGR2?= =?utf-8?Q?jcvvYsFzErPIaAgai4IFQfsX8?= X-MS-Exchange-CrossTenant-Network-Message-Id: 119b2ec0-d8a6-4170-fefd-08de37f4d695 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB6020.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 14:03:04.6880 (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: HQHBqPJAOPAP76/b/mDiljSNHpckb3rCoSo4O34JawllNWFyNmAlLw3vUQ/TX9E/psK70Sr2Mvgr8YTnATNYjQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6405 X-OriginatorOrg: intel.com On 12/9/2025 8:21 PM, Peter Zijlstra wrote: > On Wed, Dec 03, 2025 at 03:07:21PM -0800, Tim Chen wrote: > >> diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h >> index bbcfdf12aa6e..0ba4697d74ba 100644 >> --- a/include/linux/sched/topology.h >> +++ b/include/linux/sched/topology.h >> @@ -68,6 +68,10 @@ struct sched_domain_shared { >> atomic_t nr_busy_cpus; >> int has_idle_cores; >> int nr_idle_scan; >> +#ifdef CONFIG_SCHED_CACHE >> + unsigned long util_avg; >> + unsigned long capacity ____cacheline_aligned_in_smp; > > This cacheline annotation confuses me, see below. > >> +#endif >> }; >> >> struct sched_domain { >> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c >> index cb82f558dc5b..b9f336300f14 100644 >> --- a/kernel/sched/fair.c >> +++ b/kernel/sched/fair.c >> @@ -9622,6 +9622,29 @@ static inline int task_is_ineligible_on_dst_cpu(struct task_struct *p, int dest_ >> return 0; >> } >> >> +#ifdef CONFIG_SCHED_CACHE >> +/* Called from load balancing paths with rcu_read_lock held */ >> +static __maybe_unused bool get_llc_stats(int cpu, unsigned long *util, >> + unsigned long *cap) >> +{ >> + struct sched_domain_shared *sd_share; >> + >> + sd_share = rcu_dereference(per_cpu(sd_llc_shared, cpu)); >> + if (!sd_share) >> + return false; >> + >> + *util = READ_ONCE(sd_share->util_avg); >> + *cap = READ_ONCE(sd_share->capacity); > > You placed capacity on a separate line, forcing the above to be 2 > distinct lines. That seems... sub-optimal? > The reason capacity was placed in a separate cache line is that writes to capacity are not very frequent(cpu hotplug should not happen too-frequently), while writes to util_avg tend to be relatively frequent(changes frequently). If capacity and util_avg were placed in the same cache line, I’m thinking writes to util_avg might invalidate the entire cache line. This could potentially cause cache misses when capacity is read elsewhere, which might lead to false sharing? thanks, Chenyu >> + >> + return true; >> +} >> +#else >> +static inline bool get_llc_stats(int cpu, unsigned long *util, >> + unsigned long *cap) >> +{ >> + return false; >> +} >> +#endif >> /* >> * can_migrate_task - may task p from runqueue rq be migrated to this_cpu? >> */ >> @@ -10592,6 +10615,51 @@ sched_reduced_capacity(struct rq *rq, struct sched_domain *sd) >> return check_cpu_capacity(rq, sd); >> } >> >> +#ifdef CONFIG_SCHED_CACHE >> +/* >> + * Record the statistics for this scheduler group for later >> + * use. These values guide load balancing on aggregating tasks >> + * to a LLC. >> + */ >> +static void record_sg_llc_stats(struct lb_env *env, >> + struct sg_lb_stats *sgs, >> + struct sched_group *group) >> +{ >> + struct sched_domain_shared *sd_share; >> + >> + if (!sched_cache_enabled() || env->idle == CPU_NEWLY_IDLE) >> + return; >> + >> + /* Only care about sched domain spanning multiple LLCs */ >> + if (env->sd->child != rcu_dereference(per_cpu(sd_llc, env->dst_cpu))) >> + return; >> + >> + /* >> + * At this point we know this group spans a LLC domain. >> + * Record the statistic of this group in its corresponding >> + * shared LLC domain. >> + * Note: sd_share cannot be obtained via sd->child->shared, because >> + * it refers to the domain that covers the local group, while >> + * sd_share could represent any of the LLC group. >> + */ >> + sd_share = rcu_dereference(per_cpu(sd_llc_shared, >> + cpumask_first(sched_group_span(group)))); >> + if (!sd_share) >> + return; >> + >> + if (READ_ONCE(sd_share->util_avg) != sgs->group_util) >> + WRITE_ONCE(sd_share->util_avg, sgs->group_util); >> + >> + if (unlikely(READ_ONCE(sd_share->capacity) != sgs->group_capacity)) >> + WRITE_ONCE(sd_share->capacity, sgs->group_capacity); > > And same here. > >> +} >> +#else >> +static inline void record_sg_llc_stats(struct lb_env *env, struct sg_lb_stats *sgs, >> + struct sched_group *group) >> +{ >> +} >> +#endif