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 005B8A0544; Fri, 2 Sep 2022 17:56:08 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0DB7D4280D; Fri, 2 Sep 2022 17:56:00 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 9968140C35 for ; Fri, 2 Sep 2022 17:55:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662134157; x=1693670157; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=goGfCfKeRIjWTh9MRITV2iRZf+g9vrTB1dS7/fkK2FA=; b=deOGusrvRCQdl+biMlWhNRhyjmtT8WGZ3SmCZ3AtJG9D0F1TTnVc0lSY ovONx15SVf6LgmyWFgTkCBMtIHl4prbeXwC0MntHfjQNeSZ07dh3anChM eehprcFsVnX3dnDP2YTEYwq6Z2mpO0xEUmhjwnvbd/gQBF4B/BLsQLdIX 04OWafz8XvoW0UmwwuY2zBR9TKbQUnDk7Ex9AQtQZvRhDnK0Onavnaugk bPRI63zTqZGFTkxtD2lNHrgXFnYMml1VqGza1JQDhOc/A1d0Vc98jMXs1 C1QJUip8zRYvxf4prxBXlwk80HxXTmMfJg76d/STitv7BjbLFS4z2W9+0 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10458"; a="359965261" X-IronPort-AV: E=Sophos;i="5.93,283,1654585200"; d="scan'208";a="359965261" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Sep 2022 08:55:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,283,1654585200"; d="scan'208";a="941327845" Received: from silpixa00401122.ir.intel.com ([10.237.213.42]) by fmsmga005.fm.intel.com with ESMTP; 02 Sep 2022 08:55:55 -0700 From: Kevin Laatz To: dev@dpdk.org Cc: anatoly.burakov@intel.com Subject: [PATCH v5 2/3] eal: add cpuset lcore telemetry entries Date: Fri, 2 Sep 2022 16:58:26 +0100 Message-Id: <20220902155827.79076-3-kevin.laatz@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220902155827.79076-1-kevin.laatz@intel.com> References: <24c49429394294cfbf0d9c506b205029bac77c8b.1657890378.git.anatoly.burakov@intel.com> <20220902155827.79076-1-kevin.laatz@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 From: Anatoly Burakov Expose per-lcore cpuset information to telemetry. Signed-off-by: Anatoly Burakov --- lib/eal/common/eal_common_lcore_telemetry.c | 47 +++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/eal/common/eal_common_lcore_telemetry.c b/lib/eal/common/eal_common_lcore_telemetry.c index abef1ff86d..796a4a6a73 100644 --- a/lib/eal/common/eal_common_lcore_telemetry.c +++ b/lib/eal/common/eal_common_lcore_telemetry.c @@ -19,6 +19,8 @@ rte_atomic32_t __rte_lcore_telemetry_enabled; #ifdef RTE_LCORE_POLL_BUSYNESS +#include "eal_private.h" + struct lcore_telemetry { int poll_busyness; /**< Calculated poll busyness (gets set/returned by the API) */ @@ -247,6 +249,48 @@ lcore_handle_poll_busyness(const char *cmd __rte_unused, return 0; } +static int +lcore_handle_cpuset(const char *cmd __rte_unused, + const char *params __rte_unused, + struct rte_tel_data *d) +{ + char corenum[64]; + int i; + + rte_tel_data_start_dict(d); + + RTE_LCORE_FOREACH(i) { + const struct lcore_config *cfg = &lcore_config[i]; + const rte_cpuset_t *cpuset = &cfg->cpuset; + struct rte_tel_data *ld; + unsigned int cpu; + + if (!rte_lcore_is_enabled(i)) + continue; + + /* create an array of integers */ + ld = rte_tel_data_alloc(); + if (ld == NULL) + return -ENOMEM; + rte_tel_data_start_array(ld, RTE_TEL_INT_VAL); + + /* add cpu ID's from cpuset to the array */ + for (cpu = 0; cpu < CPU_SETSIZE; cpu++) { + if (!CPU_ISSET(cpu, cpuset)) + continue; + rte_tel_data_add_array_int(ld, cpu); + } + + /* add array to the per-lcore container */ + snprintf(corenum, sizeof(corenum), "%d", i); + + /* tell telemetry library to free this array automatically */ + rte_tel_data_add_dict_container(d, corenum, ld, 0); + } + + return 0; +} + void lcore_telemetry_free(void) { @@ -273,6 +317,9 @@ RTE_INIT(lcore_init_telemetry) rte_telemetry_register_cmd("/eal/lcore/poll_busyness_disable", lcore_poll_busyness_disable, "disable lcore poll busyness measurement"); + rte_telemetry_register_cmd("/eal/lcore/cpuset", lcore_handle_cpuset, + "list physical core affinity for each lcore"); + rte_atomic32_set(&__rte_lcore_telemetry_enabled, true); } -- 2.31.1