From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BAD314597F; Fri, 13 Sep 2024 16:15:51 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 50A7F4060B; Fri, 13 Sep 2024 16:15:51 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by mails.dpdk.org (Postfix) with ESMTP id 2AE4440295 for ; Fri, 13 Sep 2024 16:15:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1726236950; x=1757772950; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=3E36RpSeOVK4LKVFNPGI2H08lpYhcyoKQpNpwzxXv/s=; b=AvoqXczkYqBOaCyQvdTjeDEo8wzVsCm252PV05uVb3ra5RzzzjehokRo cJ72U3+t4O1ZOjkUOa15IFjXQk1vTGsWxSzkp9Q8+a76qnAgbAeJFotA1 dRpQD51xEQ3Yf//dV9VUOZ2L96dtHKYYvTr3iHm8lo5CZqi1K8osZ5sqQ vUbvr/sdh5ewWrlg4R8Q0NfsdcEqVNWaZhGIHSRg2eJnqxwk7anwOgXFT yyk9XdHWoFFO/82nLMxgSg0Fi/6vwBpP6csxlMjZptdeRm1b0UDIS/q5D /gbt77YPtZUoBzCriLKDNmIUrLkkTe1DZGMm9up1f2hsAH4IIjd89f1M6 A==; X-CSE-ConnectionGUID: wr/CvTNPS0699GVnZZYC4w== X-CSE-MsgGUID: 7VVwi0vVQ4GNiAb4poUf0g== X-IronPort-AV: E=McAfee;i="6700,10204,11194"; a="25011413" X-IronPort-AV: E=Sophos;i="6.10,226,1719903600"; d="scan'208";a="25011413" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Sep 2024 07:15:40 -0700 X-CSE-ConnectionGUID: nBWNf5LcQu2grSt5QkBfzw== X-CSE-MsgGUID: oMqHbsFMQSSeMRIcZ+7bAA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,226,1719903600"; d="scan'208";a="67698867" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmviesa006.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 13 Sep 2024 07:15:39 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 13 Sep 2024 07:15:39 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 13 Sep 2024 07:15:38 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Fri, 13 Sep 2024 07:15:38 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.41) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Fri, 13 Sep 2024 07:15:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=M9/d97YkAXCoUFsqb4l6FEUQicMYilx/CxRs9y65B1JrbKZS1fnE/gDhdSJQrVOsI5jr0Ig3T6oeNlZOGMGwaCNPy29dIIZbzn8icqWRLMJf8biTV4ZHCUpdzstl59OK2rdDG46LxDhnLKCuYhFC8qH5bUqWHkS3WJH2EMIndIKpw8D77Y0vFMcZ25BEOfrOyARtCZRw4D1CidHGC66NMRrOaHcMF8A52LKL/clc9MVfagFm3uqGK3PhOxPNo6pVxIBcfMoLC7vgG7SINU82vCRZXgGwP7K4Dk0NTvP/9UW81s8Dp0ld3lYN4kVGPJQ5OXZpyEh/gRBQPsyi2FXAPA== 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=Rhv5vb5v0liIdDuRZ7Q65mZmUG29RMQX0+dwRlS/Hak=; b=Xsbf3OpdbNwNtfgfOoe0cPiMTzO/ohsjOZmc85uHlV86PTU13iaTocKs/27PFPH9ojmbWmTqHp/Aj9E+TxROAx55RkHaEci7dKLxhDqSYHD0E3pk65lt6eG98uSOWnCUVhG7NvVECYBf7dnt10FZZ00+Jq0522rmMiL2A/KBXr3x+T89H0ExCz/858p+OwDFZTY0AFGDaOSJKtLgVQ3gTv+me58o4UAOqJchyxJWbIoQy2i13HW5fCetz9SXz9UNrmXfW4MlpiJ5AxLx0Yaaae1f/tEyRWP8FNBLgXdXGo0yvL3p8ngs0eTtHir47og/lGTqcEfxwr7Bk+nYHEhlTg== 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 DM4PR11MB6502.namprd11.prod.outlook.com (2603:10b6:8:89::7) by PH7PR11MB7719.namprd11.prod.outlook.com (2603:10b6:510:2b4::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7962.19; Fri, 13 Sep 2024 14:15:33 +0000 Received: from DM4PR11MB6502.namprd11.prod.outlook.com ([fe80::21e4:2d98:c498:2d7a]) by DM4PR11MB6502.namprd11.prod.outlook.com ([fe80::21e4:2d98:c498:2d7a%4]) with mapi id 15.20.7962.016; Fri, 13 Sep 2024 14:15:32 +0000 Message-ID: Date: Fri, 13 Sep 2024 16:15:24 +0200 User-Agent: Mozilla Thunderbird Subject: Re: [RFC 0/2] introduce LLC aware functions To: "Varghese, Vipin" , Bruce Richardson CC: =?UTF-8?Q?Mattias_R=C3=B6nnblom?= , "Yigit, Ferruh" , "dev@dpdk.org" References: <20240827151014.201-1-vipin.varghese@amd.com> <45f26104-ad6c-4e42-8446-d8b51ac3f2dd@lysator.liu.se> Content-Language: en-US From: "Burakov, Anatoly" In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: DU6P191CA0033.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:53f::8) To DM4PR11MB6502.namprd11.prod.outlook.com (2603:10b6:8:89::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB6502:EE_|PH7PR11MB7719:EE_ X-MS-Office365-Filtering-Correlation-Id: eef23fa6-b9d3-44ed-16c3-08dcd3fe8704 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WFAvUHpIL3NCWEhiZVUySGtvcERMa3dKK0FpSHRGZHNUY2c0Q3FtQ0tTNG9R?= =?utf-8?B?SWc1blYzdVVPWHp4WWNHK2lraHRqeUJxNUxNSUdYN0IzQ29KTkxKbWk3WWc0?= =?utf-8?B?SSs0ODNobFE0R1pFQkp5cElTZDl6Yk1UQUcyaTBNUG5pdlVjM2ZwdDR4L1cz?= =?utf-8?B?K1BSWEVHWnFpWEVxS1M5WjBKNzF1RVVqelVFT0xaaUFraTN0MUJhVWRjcmVV?= =?utf-8?B?MnkvZmhCWFpGUnlFdDJMcVBoc0ZQc1hwN2NXblRseFJrOFRCeXlHS3dNdkdu?= =?utf-8?B?K3Zmb2w1WmtucVF2empBYU9DNkw3bmVRMkR5aG9CMmxPckNxVFp4U2FZWXBH?= =?utf-8?B?UHZaS1g0QUg1L1BXYlo0SGpoS1doZlVUSWVxc1ZBcWhBalUyelFSY1dwWHdu?= =?utf-8?B?bGlwb3J2OFZpeFZtdXVQWHhWTjJEcFNqQUVuSWJSRDNWcG5sVFZHWHhBTk5O?= =?utf-8?B?ZFhFL0NyWUs5OGtZVWswOUtCemRxME1hZUF5Mmc0Q1JESW5zY1JiWkkvc0RX?= =?utf-8?B?S3lzOHhBTTF2dUZTVGoxeEh0UHdzNmtYT0tRYmVMcWVHUjJBWHlyeFlIOHNX?= =?utf-8?B?VkRBSDlPV3RVaXpxbHBqRFN3U043VzhFYmxDd0FpWWgybHh6UTBIZWtPZ2dY?= =?utf-8?B?V2JVanEydkJnN3dwc2Vubm13aHg0Y0FsV21oSEpTMlB4VGhxaVlMeFNuSXow?= =?utf-8?B?NzFTaDBEQVlQcEJaMTJUZndtVHhNTStjYWV0M1NuZEhxY2xsV1pTa1JLZFpv?= =?utf-8?B?UnB5bFZnWTNTc0F6NU0yQ3E5Ykcxd2xmU1lGSytSUXllUzdVVXRqWEF0ZlhJ?= =?utf-8?B?TDN1TDhZU0w1emV6Y3UrSkVoeWtZQlNZK3hRakZ5cHUrTWNaZ1dGTTk5ZzdO?= =?utf-8?B?R3Zqd25wZkJ2Wk9lQ25QT2VMN2Zzekk3QjBWR1ZWQkRDa3ExY0hTZWdKWHZi?= =?utf-8?B?dW52dXNZM1lZQjEyM0lOTTJQdDBZUTRrbWpHQnI4UUFMelZ0cXJIWVRodTFo?= =?utf-8?B?c0ZlbTNidWo0Rkt5SUtxK2JvR2Z6cmhvMnp6UVNFNCtkVnl4OUVMVVQ4SVVP?= =?utf-8?B?cmlaYnh4WHJkMUxQOXdKbmVHUzJ3KzlycERERW9PSTVmeWRUd1hGZGJWaVcr?= =?utf-8?B?RjlmRENqMnZvblhHSGxrblJSNEZySzVTblc1NnJYL2ZoREVEZjBmc2EweTN5?= =?utf-8?B?U2NoMkhGamYzaDJTS2pmVUF3ZTZPQkl0bkpVYU9jbCtWdSthMFB2emJDcmVT?= =?utf-8?B?bnJBQ25qbldLSmdEeXUybGRwc1RuLzNRLzNMU0VKc2Z2OWY5eTQ3UGs4Umtj?= =?utf-8?B?cFpsdklabXA3QzdoanRPSlZwWGs3Ymd5NXNMRk52cnJ1b3dsQzJSNHgxcGk4?= =?utf-8?B?REk0ZWxlc2c4SFY4L3BUcFptb2tFdmpzUFpyYWZoNXI4dy9hOHpXMldnK0w4?= =?utf-8?B?aStSMitTZ2Z5UHVZcjhSK3EzNTBLL09EdExTdkZSMldHRUdaOVMwbytPUlZU?= =?utf-8?B?RWkyZ05ENm5yZWx4QkZpK2p3enZsb3R6b2hzN2Yrd0ZmeDlnZnZKRmRHVEFY?= =?utf-8?B?Q1F1RXltTkxseldpaEsxTk1WWVFRSGdTVlJiVnNONTN1VEE4cEFYdEVZbVkz?= =?utf-8?B?YXFrR0R6YXJVYWZtcmFEMGdUVTZ6VG5HbUZZMHdpRjZwWFhsTlI2VUplM2tW?= =?utf-8?B?cG5PMVo2anhkdXJUOWQxNkNoN0tyOE5GTVNpZUpXUFkwK1VBNG5JQmlDR25Y?= =?utf-8?B?OGwzYVh3WjFOZ0swQ2tnazdrVWFXbWl2bURjQXloSlhCT21iM2tWa0tTcnJv?= =?utf-8?B?V2RGUG1zSE1HN2M0VWpoQT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB6502.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VTJIejAzeDBvNEErYXE3TUZuZ1h4TDd3eHhqQ3pEK2lGS2VGQ1ZUbHZZMjg2?= =?utf-8?B?RG8yUnhKSEU0SkkrUksrMnI3UjZYOGw5VEp5bkFGaUwxL0s4YmNFYmtBRktR?= =?utf-8?B?MkFSaGFUUlJlVEkvM1FDc3YwR0RxekdrZWoxWlVWaERHRWZrb1owU3luUm5o?= =?utf-8?B?MEZqOUFveThlZzVPN1VOb0pzNFk0VWhsSm56Q0paNnl0RjlBVHNwdmY0UFlv?= =?utf-8?B?UTNwRnhBOVhBZlNwY0RORHdkVjhETmZsUDBWV2F4NXZiS3c3N1BRQmFRRGZM?= =?utf-8?B?WnZpN1p3aVJubEVBRzVOQVNvL3JoaGw5UG5vVnJNd05IbHpZRWRaWnl5QkNV?= =?utf-8?B?TkJFeWtZK0VuekFSelNydjY3RVpSbm9oVmNKMXVVenB1S0dhSXRCd01DeE41?= =?utf-8?B?Y1NucWlZZzNScXdWM2VNMFpoYlBFS2lMZkI5d005Y3pUeVAza0k3OTExK3I4?= =?utf-8?B?WUszOWY5ekwwbE5Vemw4bDU1cGRSejA2OXNHRkxXdnJRcTEraHVpd203YWdP?= =?utf-8?B?QVZUME53bkVPd2JCeVRaYWNrcmxBOE5PQjFQQTA4aEpOYldzZFRaUGJtdDl0?= =?utf-8?B?T3FuZmxBalBmMk9WL3Y1ZnRvdWRkcDEwc1dqTHlDM3dMSXZJVlozKzBZdE5p?= =?utf-8?B?UkhQMWJkWDhYRnhZYWkvQTVweEtzMDNhUmpYZkhQSUhrL05FWHlXQjBENEQ0?= =?utf-8?B?ZTlhdVlRR21hMGszclVrNDkzVmpNU3YvNHgzTm5zcUtWM05zQmE3MFZJQ3FY?= =?utf-8?B?VElBbnVReXZXemhScTIydjA3MGRFNzhQMzEwanlQdi9URHhyWkFWN3QvYVlD?= =?utf-8?B?RDZwZVg3WHRzNk8xRGJVcGhnc3FNU3IvZ1BIbVBaSzFvcnZBbkFHYlBlT3dG?= =?utf-8?B?WFhPbXAwcE54NXJCblJtVHhIb3VqRGNMVEFXK3FnK1dHK3V1dTdnUVdsMHJh?= =?utf-8?B?YTE3QmhrWm1oUnByWTdYUGJkZmd3ODNCalhSTW9LMW80UXJJd2lqN2ZKMGlS?= =?utf-8?B?eEVzdGRkWm9WZStBdlpSeWJ5dyt5Ukd1UC8wVVQrY3dFekE4K3IxZFZuYmF5?= =?utf-8?B?eGtOQzloS2N5MzA4M0pyejV6YlVnRTJKS2lxYUJVLzErcld5dFZJdDRXdnB4?= =?utf-8?B?ZU5ENUxGVXYwQmRkajVGVDVSY01iNmtQeVR5QVFhQWJaUzVPRHZRaXcvKzJO?= =?utf-8?B?VzdPRzRJMUF4ekxSa0g2N2tuOEpGMFYvVU1zMXhjdnVuREpMY1BXbWJpZWRn?= =?utf-8?B?aC9zTzg1N1pJZjZBYUdDMk05elpCT0FZVFE0RXlTakoyRkxQN0U4R1F5NkdC?= =?utf-8?B?ako0M1YxVUplbEFLOVp4M2lucUlKM3htb3Q1TVk3KzROVzV0SEtyU3M2V3Rj?= =?utf-8?B?S3p4QXc5MjBwVXc4UUpjRG1ta3RXUThVTXIwclhEUVRSTHZmSEluV0tpMlNq?= =?utf-8?B?UG0vM1lhNUF0THJyYmVsVUtKK2RVaUQ0VlV4MS94UGhuczQxVExQYW9SUnNY?= =?utf-8?B?V25lN3k1Q0JGRE5uNFZaUHMxVXdGWmVjZWoyblJwNWJZNDJadjBxYTl4dE8x?= =?utf-8?B?RTg3Y09EVU5sbGJrM0g2dUNLSTJUM3poVTV4L2NySis1dThxYm9OU3Q1M21Y?= =?utf-8?B?NzhXVmMxU1VpcC9tVHRCWnNmUzVDRzFON0tVS3ZtR2NldmdmU3d4eW1qcVRj?= =?utf-8?B?U1dkdGdZZ09hMnBtVVBBSGZNMWNHZHp4ZHVkNDdGYWxpM0t3aFJxN2JteDBr?= =?utf-8?B?bGRKSXFOMGsyUG9TeHUrbkc3akNhTTFrL21BRmVCRnAvRXJ0TzJMakhYdjVk?= =?utf-8?B?SXphOWlVWnFoSWtqbkprU3VkUStJQktCVTc3bmtwOVJzYzIvc3NHNFcxK3dM?= =?utf-8?B?SUFudzBDdHd4a3RRc1dIdU80VEh1VC82OTVmL0JZU3dnM0RTYVZiSmdheXRC?= =?utf-8?B?WUpTN3Raa2RuNnNxQWgvbXZhTXIwYmVWQzRtelFsdnVXcnhubWcwKzJDQ3Vt?= =?utf-8?B?cGJWSytTbVBOV1RzTWpJNGVTNFpxL3l3dDdZOG1DcVU4Wk45WlY0UW5leE9y?= =?utf-8?B?cFB0Rk5COUdCT1lMWk1RbXZSa1BUMERORFl3VVJiWDRQczRlUW5PQVVRTDhh?= =?utf-8?B?SjhiK1ozeU5Lb3hFNGZ2T1lUWGsxejcwRnFwaSswTkkxSjFoM1VZak1TUGRJ?= =?utf-8?B?Q2c9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: eef23fa6-b9d3-44ed-16c3-08dcd3fe8704 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB6502.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2024 14:15:32.1617 (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: SBtpan3/91A/Iqq1X0708U8/hyzMrUASTITCCAcZHdviPo9EOdFZXdFrbknhzCwpsBDrZFwfjVQtOIVdTkuVnOnZW/EJBs2Qb6A772Q2tpM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7719 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On 9/12/2024 1:50 PM, Varghese, Vipin wrote: > [Public] > > Snipped > >>> >>> >>> Based on the discussions we agreed on sharing version-2 FRC for >>> extending API as `rte_get_next_lcore_extnd` with extra argument as >>> `flags`. >>> >>> As per my ideation, for the API ` rte_get_next_sibling_core`, the above >>> API can easily with flag ` RTE_GET_LCORE_L1 (SMT)`. Is this right >>> understanding? >>> >>> We can easily have simple MACROs like `RTE_LCORE_FOREACH_L1` which >>> allows to iterate SMT sibling threads. >>> >>> >> >> This seems like a lot of new macro and API additions! I'd really like to cut that >> back and simplify the amount of new things we are adding to DPDK for this. > I disagree Bruce, as per the new conversation with Anatoly and you it has been shared the new API are > ``` > 1. rte_get_next_lcore_exntd > 2. rte_get_next_n_lcore_exntd > ``` > > While I mentioned custom Macro can augment based on typical flag usage similar to ` RTE_LCORE_FOREACH and RTE_LCORE_FOREACH_WORKER` as > ``` > RTE_LCORE_FOREACH_FLAG > RTE_LCORE_FOREACH_WORKER_FLAG > > Or > > RTE_LCORE_FOREACH_LLC > RTE_LCORE_FOREACH_WORKER_LLC > ``` > > Please note I have not even shared version-2 of RFC yet. > >> I tend to agree with others that external libs would be better for apps that really want to deal with all this. > I have covered why this is not a good idea for Mattias query. > >> >>> >>> > >>> >>> > Looking logically, I'm not sure about the BOOST_ENABLED and BOOST_DISABLED flags you propose >>> The idea for the BOOST_ENABLED & BOOST_DISABLED is based on DPDK power library which allows to enable boost. >>> Allow user to select lcores where BOOST is enabled|disabled using MACRO or API. > May be there is confusion, so let me try to be explicit here. The intention of any `rte_get_next_lcore##` is fetch lcores. > Hence with new proposed API `rte_get_next_lcore_exntd` with `flag set for Boost` is to fetch lcores where boost is enabled. > There is no intention to enable or disable boost on lcore with `get` API. > >>> >>> >>> >>> - in a system with multiple possible >>> >>> > standard and boost frequencies what would those correspond to? >>> >>> I now understand the confusion, apologies for mixing the AMD EPYC SoC >>> boost with Intel Turbo. >>> >>> >>> >>> Thank you for pointing out, we will use the terminology ` >>> RTE_GET_LCORE_TURBO`. >>> >>> >> >> That still doesn't clarify it for me. If you start mixing in power management related functions in with topology ones things will turn into a real headache. > Can you please tell me what is not clarified. DPDK lcores as of today has no notion of Cache, Numa, Power, Turbo or any DPDK supported features. > The initial API introduced were to expose lcore sharing the same Last Level Cache. Based on interaction with Anatoly, extending this to support multiple features turned out to be possibility. > Hence, we said we can share v2 for RFC based on this idea. > > But if the claim is not to put TURBO I am also ok for this. Let only keep cache and NUMA-IO domain. > >> What does boost or turbo correspond to? Is it for cores that have the feature enabled - whether or not it's currently in use - or is it for finding cores that are >> currently boosted? Do we need additions for cores that are boosted by 100Mhz vs say 300Mhz. What about cores that are in lower frequencies for >> power-saving. Do we add macros for finding those? > Why are we talking about feq-up and freq-down? This was not even discussed in this RFC patch at all. > >>> >>> What's also >>> >>> > missing is a define for getting actual NUMA siblings i.e. those >>> sharing common memory but not an L3 or anything else. >>> >>> This can be extended into `rte_get_next_lcore_extnd` with flag ` >>> RTE_GET_LCORE_NUMA`. This will allow to grab all lcores under the same >>> sub-memory NUMA as shared by LCORE. >>> >>> If SMT sibling is enabled and DPDK Lcore mask covers the sibling >>> threads, then ` RTE_GET_LCORE_NUMA` get all lcore and sibling threads >>> under same memory NUMA of lcore shared. >>> >>> >> >> Yes. That can work. But it means we are basing the implementation on a fixed idea of what topologies there are or can exist. >> My suggestion below is just to ignore the whole idea of L1 vs L2 vs NUMA - just give the app a way to find it's nearest nodes. > Bruce, for different vendor SoC, the implementation of architecture is different. Let me share what I know > 1. using L1, we can fetch SMT threads > 2. using L2 we can get certain SoC on Arm, Intel and power PC which is like efficient cores > 3. using L3 we can get certain SoC like AMD, AF64x and others which follow chiplet or tile split L3 domain. > >> >> After all, the app doesn't want to know the topology just for the sake of knowing it - it wants it to ensure best placement of work on cores! To that end, it just needs to know what cores are near to each other and what are far away. > Exactly, that is why we want to minimize new libraries and limit to format of existing API `rte_get_next_lcore`. The end user need to deploy another library or external library then map to DPDK lcore mapping to identify what is where. > So as end user I prefer simple API which get my work done. > >> >>> >>> > >>> >>> > My suggestion would be to have the function take just an integer-type >>> e.g. >>> >>> > uint16_t parameter which defines the memory/cache hierarchy level to >>> use, 0 >>> >>> > being lowest, 1 next, and so on. Different systems may have different >>> numbers >>> >>> > of cache levels so lets just make it a zero-based index of levels, >>> rather than >>> >>> > giving explicit defines (except for memory which should probably >>> always be >>> >>> > last). The zero-level will be for "closest neighbour" >>> >>> Good idea, we did prototype this internally. But issue it will keep on >>> adding the number of API into lcore library. >>> >>> To keep the API count less, we are using lcore id as hint to sub-NUMA. >>> >> >> I'm unclear about this keeping the API count down - you are proposing a lot of APIs and macros up above. > No, I am not. I have shared based on the last discussion with Anatoly we will end up with 2 API in lcore only. Explained in the above response > >> My suggestion is basically to add two APIs and no macros: one API to get the max number of topology-nearness levels, and a >> second API to get the next sibling a given nearness level from >> 0(nearest)..N(furthest). If we want, we can also add a FOREACH macro too. >> >> Overall, though, as I say above, let's focus on the problem the app actually >> wants these APIs for, not how we think we should solve it. Apps don't want to >> know the topology for knowledge sake, they want to use that knowledge to >> improve performance by pinning tasks to cores. What is the minimum that we >> need to provide to enable the app to do that? For example, if there are no >> lcores that share an L1, then from an app topology viewpoint that L1 level may >> as well not exist, because it provides us no details on how to place our work. > I have shared above why we need vendor agnostic L1, L2, L3 and sub-NUMA-IO. > > Snipped Just to add my 2c here, since my name is being thrown around a lot in this discussion :) I tend to agree with Bruce here in the sense that if we want this API be used to group cores together, then ideally we shouldn't really explicitly call out the principle by which we group them unless we have to. My main contention with the initial RFC *was* the fact that it was tied to specific HW arch stuff in the API. Vipin has suggested using a "flags" value to discriminate between L1/L2/L3/NUMA/whatever ways of grouping cores, and I agree that it's better than what was initially proposed (at least from my vantage point), but what's even better is not to have any flags at all! As in, I think the thing we're presumably trying to achieve here just as well could be achieved simply by returning a number of "levels" we have in our hierarchy, and user then being able to iterate over nearest neighbours sitting on that "level" without explicitly specifying what that level is. So, for some systems level 0 would be SMT, for others - L3, for some - NUMA, for yet others - efficiency/performance cores, etc. Bruce's suggestion is that we don't explicitly call out the thing we use to group the cores by, and instead rely on EAL to parse that information out for us into a set of "levels". I would agree that for anything more complicated an external library would be the way to go, because, well, we're DPDK, not Linux kernel. But, just to be clear, this is not mutually exclusive with some kind of topology-style API. If we do go down that route, then the point about "attaching to specific architectural features" becomes moot, as by necessity any DOM-style API would have to represent topology in some way, which then gets used by DPDK. The main question here (and other people have rightly asked this question) would be, do we want a topology API, or do we want an API to assist with scheduling. My impression so far has been that Vipin is looking for the latter rather than the former, as no topology-related use cases were mentioned in the discussion except as a proxy for scheduling. -- Thanks, Anatoly