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 3104141C8B; Mon, 13 Feb 2023 19:18:46 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 21A5541151; Mon, 13 Feb 2023 19:18:44 +0100 (CET) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2048.outbound.protection.outlook.com [40.107.94.48]) by mails.dpdk.org (Postfix) with ESMTP id 3D97C40EE4 for ; Mon, 13 Feb 2023 19:18:42 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FA/AWPa5nCBNKnbpHweNAQGE3t6NeCGQ52gSRr1JorVewdPSUsTirGHDC7y5LJS16z6eZnT2R+i/ieCQN9TFFQu++GX0J9qAtr0O35pm88RZMU3niLnWCNngRf1qPBl2azNplt+ksUT1p918t7xA0ENw/DRHjUd1Cls0H47ON7CYFldoJgTXPwi3+XkbYMYGs/ubRk/CS90ov+5YuU7hvTQVyvWNLvDvNcYpRzJBmDVfe3NJJVywzZbjMDgb/Vmff9XN3mcYIFd2HUyagcQOilpeZAQOBpTrcJk8vknAfvk/Ohj6S6qgYLQccPpfnDnpOA4qeUpo6UcDlAokvzGh7w== 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=mHwr5JJ6hp7t4bSE7KOc8BOIi5NpHxu+mkp/ZDrWMaw=; b=Ausj5uYwCls4tqj1mnoZxaIIUYlj/kc6LMwJrzptmZFFhZlVFbU4q4G+bWF3zeCcG7KctHfZxFsMoavwstEaM0ax8n16T8XXE6tZPIlz3wdQXT3cp0RdDoAvin8I713isnMC+gSrVGpURrEtmwMQ+tojw1a9Ya2n53thsu7LiPM4+tUXrCetT16BzarKtFYwi4aR0z/iWxlPjZWRoesoCspU8oBUF3a2Qfjbw7Dykc5MW8SfNrZ4uTViu/YOQFmH52F13NG8RSCfaMhT8Q4aVz62O2JrtzypbDQMM6wIiqO8Y1N4M39dVrtlQ7c9cH/hmDO+B3gFve1IsGjrZlI/RA== 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=mHwr5JJ6hp7t4bSE7KOc8BOIi5NpHxu+mkp/ZDrWMaw=; b=Rl2dYLA6h+YM9d2etdA1bC0Nk7znusn9tU3lXs5jh6O2jvAkqQ08yFSZwR469xmVY1WLKUxkG5GYPuDoMDwjjN0VY7Z5jThOtlV1mWn+0vyB8vyuJn8HJHU0YR/9MUjNGzLvGHLhG4Pe7mJItaAmjWe+iE9Msu+Qfqml0iILYTo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by CH3PR12MB7762.namprd12.prod.outlook.com (2603:10b6:610:151::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.23; Mon, 13 Feb 2023 18:18:39 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::3614:22ed:ed5:5b48]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::3614:22ed:ed5:5b48%6]) with mapi id 15.20.6086.024; Mon, 13 Feb 2023 18:18:38 +0000 Message-ID: <044c4354-15c0-17fb-0628-019a148d1804@amd.com> Date: Mon, 13 Feb 2023 18:18:33 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.7.2 Content-Language: en-US To: Chengwen Feng , thomas@monjalon.net, andrew.rybchenko@oktetlabs.ru Cc: dev@dpdk.org, ciara.power@intel.com, bruce.richardson@intel.com References: <20230209030755.48028-1-fengchengwen@huawei.com> <20230213023456.45972-1-fengchengwen@huawei.com> From: Ferruh Yigit Subject: Re: [PATCH v2] ethdev: telemetry xstats support hide zero In-Reply-To: <20230213023456.45972-1-fengchengwen@huawei.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0646.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:296::15) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|CH3PR12MB7762:EE_ X-MS-Office365-Filtering-Correlation-Id: ab3f06bf-b631-43a0-93a8-08db0deeba6e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hhrRDxmz6ab7PzRLyuw5v0WfLNjFgS70pIxrDvC8PgQY8E7gHnUXpV1/96/vi1R8CWS0wFIOl65jbgMf8fd4cS0K5bjDI+uLf6Qf3CtSsitkWMKNsse17slhKWm2FEMJaP+jKCiVinTGOucSGuP+w3wy9xH6pos1J1jciDPS4lT07JRaNQ6oTKvZ9QYLo17fwh57VHKHsO62NRK3iFGrVOOc+V38aT1j8xujCCy0Y4vlUc1M82AzaFRwlmfyondVDVNFR5Z/cKGale+ubrwwIFdCff1HINoDw94pF8CRgJFFfKPQK06pg0IGz36G4AAn3bFkfS/cMyI6HPoBK20J7d/AbBfRtU+OWyatGiJ8rnSW3HggBGFqP5F6We9HaPeG2l1YMXFfx9N/nwXnsPKslDI9v1jVblOS0SKCZ/Mo5SY9TrVxd0bfmRNfZWuomGRDuQ1RFvNCuavIcjChWDsLYszfe6zGWRPPDspo3uO7n48LaqhgqdVKD4w1iNZ5sV9/qTkPOeUygwcGwBrP1jWGBO+FF3XuWJMZvewyTNiOMnNnJrrfBiU6qUcflaBQZuuNqFrlgGmVUV/wDiIJYHKedG0WG+Q1YMJ+BoeW/ej5dfxZDzeTpJCg+7UxU5tDFTQG1FjpQpBcsCBA3dgZgxyH69YTtNQzDqWinWTmxFswEaZNkdfYtiI+liaIFTfN4DOGiY1I7p7kaS/DoI/gMhw8FL+sgfIQJoEzQfbyWUFSamU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4294.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(136003)(396003)(376002)(366004)(346002)(39860400002)(451199018)(83380400001)(5660300002)(41300700001)(44832011)(8936002)(38100700002)(86362001)(31696002)(36756003)(2906002)(316002)(6506007)(53546011)(31686004)(26005)(6512007)(186003)(4326008)(6666004)(478600001)(2616005)(6486002)(8676002)(66476007)(66556008)(66946007)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OHRWTDFtV1pEYnZKdTlmNWJ5c1d4NEpsL0R3VVBEcEFJVlRjeWY0bHpEd2J1?= =?utf-8?B?Y1V0dVFXTTM3T0UyNDB0LzdCU2VPL2xNVkthMGZhL0JrUzg5MXNoeTdzVkg4?= =?utf-8?B?UzdJTkwwR2lGa2F6L3U2ODlIY1k1Wmt3MTE3ZGNEYmR5U2NIaGVXSHdWU1Ex?= =?utf-8?B?SmxIYlBscTlKTldWV3FkSjNzLzRoM3l5UWhaVi9ZWElXaHpQZnNQY1pNaFdF?= =?utf-8?B?R2pwa0dPWW5vbXZzM0xWOURhUDlhdWtCRkRrNUxPY3ZtdXlhWEswWWZreFMr?= =?utf-8?B?VFk5ZDNmWUZkNlc3T00vampTQUFGeDF6NXY4eUxONnhwU3BDTEllKzlnVHJG?= =?utf-8?B?akNIOVFKSmI0NHUzTGpJKzY5RWl6SVl1Q2s3YlZQZEpDdnRrSG9XcG0vQkNs?= =?utf-8?B?MUhRSENOY3I5eEo1QjhLcXZYQTZYajBnNCtNOUI4NjBNU2lZVU1SZ2xJMzY0?= =?utf-8?B?WkRRaHk4SDNJMHFVTEFmSHQ3L0V0ZzNmRzV2dTlKeFVXSjZBbHdRekw2dlQy?= =?utf-8?B?U0VrZDY0cDB3OFVUOHAxcGZMV21kb1RZOVIvdHllZWc3dDhIN3R1WFcwcVVo?= =?utf-8?B?a2htWTBaSGVVZ1pYRGlsUmxRT3NhNjRrWktNTWpwTUptM0xIcUJlVEc2TGRS?= =?utf-8?B?Y3F6dmN2T2ZvbnV3WjVZQ28wT3VDNTdmNWJRQ0tvcnQ2cVVKOWs3WXNIaUJX?= =?utf-8?B?Q1VYNHNzUjNnUHBtc1BvTXdFcUdZanZ3NjByMHc2MjRpMGRrcnVsTzR2UGs3?= =?utf-8?B?Y29YSlhldy9haFhxQm5LSTN1Rk05alBhUS9tYVU3cHpld2tUcTZ0Q3NZYU9o?= =?utf-8?B?cVlEc1ovb1ROc3RFNytqTWI4aHI4TEozcjBPcHl1dWhTTUEyQVFjOWtIOCt4?= =?utf-8?B?R0UxMkM2KzFKakplUmFVUVZGTUpRYlhLVGJxMTRuVXF0RElOeGcyUDZ3QUxs?= =?utf-8?B?TW1aaU9ZTDdsM3Nxb3pJNXk0N0pRcWNJZ1NyOXpWN0VQSzNzY3l6Q2RNeE1v?= =?utf-8?B?dTlNOHFIRWhLOWE0Q0kvS1dXOUF5VE9FenBzMlJST2pJSDAzamg5NktlQnVQ?= =?utf-8?B?ajlTZUFTbEp2NXhrQTE0dCtVYi9XMERvblV4dDlZckdqNjY5R2ZldklIMDNp?= =?utf-8?B?Y2Fkc2JualR2djV5eStBd1RTSnROREpjYkt6UlZUaW1aTFFVcG1Cbll3cUJ0?= =?utf-8?B?U3BORmlZQXUwWlcwSjZUa05Xb3JiWktmNitiUU81Qnk3WlZxZHFPcWhtVGVw?= =?utf-8?B?NTh0dlkyYTc5QzdZWUoxcml6RHpnUXptRkcwdUVvVThyVFVUc01WeW1QL082?= =?utf-8?B?QnNycWZmYnJ4TWtmZVdMQjRNLytPUU5wYWE2YzZQMmJic2huYTJXWWcwNUdU?= =?utf-8?B?cGF5bmRyUFNTMEhaRDdMcU1TZENEdEg0bEJQRS9HNzExUUtId0RWUldKNXI5?= =?utf-8?B?Szh4M2p6Yk1ZT0EveTRncUpEWFM0bXBjek1KYmVWcHlLektNdVEvVmd0ek5M?= =?utf-8?B?eitiaHZFMkpYbTFJZXRrL2wzeGNjUFZZNHBRU2JVYVVNSnFyVmtxSjVNLzZB?= =?utf-8?B?M1Z6Vkt0T0g5a2p5VmJoQlN4MmI1NWRQNkF5cUdMdnBuQmhoZHlIWkdyUEpT?= =?utf-8?B?Z1dyNjRpWEhkcWNPRnk3UXNkWXF0RDlyMTFSUndZcWFYc3pJc1A4QmVrVEYw?= =?utf-8?B?TVg2d2NabUFNRWRvWVJIQlV4NThxRnErelE5R2I3VlkvcWU1SWUreWZkUkQ2?= =?utf-8?B?TXZmZVhTWXBnSTk5bnJYOGtncUpsVG8vbXRnUURITTdiN0pFWlgzT2Uya0RW?= =?utf-8?B?Tm5MRmJUK0FyYk1qQnNsa0JyS040cTRCcytPYW9pN3lUM2ljbDFkTGRZeFlm?= =?utf-8?B?SVQ4dUZEd3k5RFNsY0M1SmxXQmZuQXNuT0Nmd252bDh5eXhkRllxTDdEd2Q5?= =?utf-8?B?dm1zemNZQVhsaHIwYm9ERzNmL1pwN1dUOXl1bld1RnBiM2QxaDd4cy8reE5I?= =?utf-8?B?bmxqVFNBaTlKbmxHdEFsbVE3TkZpc0ducDBwVFFsWG1jQVdkeVRuWGF2UGNC?= =?utf-8?B?Nk9Ba3FXVXRFbWlVVzFmcUpYdllKUmg2eEtMaFpzZGdwYm42Lzc3bi9WWUpM?= =?utf-8?Q?MXPdrZXY6KfMlrqmFTWWZhFfA?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab3f06bf-b631-43a0-93a8-08db0deeba6e X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2023 18:18:38.6899 (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: la9EhgEl/ewY0+gMwIs8NknWmlWH3QiZvObb4O1CMmDsZsHDniCO4VtRwBVqESA7 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7762 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 2/13/2023 2:34 AM, Chengwen Feng wrote: > The number of xstats may be large, after the hide zero option is added, > only non-zero values can be displayed. > > So display xstats with hide zero: > /ethdev/xstats,0,hide_zero=true > and without hide zero (same as the original): > /ethdev/xstats,0 > > Signed-off-by: Chengwen Feng > > --- > v2: using hide_zero=true optional parameter which address Ferruh's > comments. > > --- > lib/ethdev/rte_ethdev.c | 38 ++++++++++++++++++++++++++++++++------ > 1 file changed, 32 insertions(+), 6 deletions(-) > > diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c > index d25db35f7f..7e70292fc6 100644 > --- a/lib/ethdev/rte_ethdev.c > +++ b/lib/ethdev/rte_ethdev.c > @@ -15,6 +15,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -5863,6 +5864,18 @@ eth_dev_handle_port_stats(const char *cmd __rte_unused, > return 0; > } > > +#define TEL_XSTATS_HIDE_ZERO_KEY "hide_zero" > +#define TEL_XSTATS_HIDE_ZERO_VAL "true" > + > +static int > +eth_dev_parse_hide_zero(const char *key, const char *value, void *extra_args) > +{ > + RTE_SET_USED(key); > + if (strcmp(value, TEL_XSTATS_HIDE_ZERO_VAL) == 0) kvargs allows to provide parameter without value, like '/ethdev/xstats,0,hide_zero' In this case 'value' will be NULL and this cause a crash in dpdk application. Better to check that 'value' is not NULL before using it. > + *(bool *)extra_args = true; > + return 0; > +} > + > static int > eth_dev_handle_port_xstats(const char *cmd __rte_unused, > const char *params, > @@ -5870,20 +5883,30 @@ eth_dev_handle_port_xstats(const char *cmd __rte_unused, > { > struct rte_eth_xstat *eth_xstats; > struct rte_eth_xstat_name *xstat_names; > + struct rte_kvargs *kvlist; > int port_id, num_xstats; > - int i, ret; > + bool hide_zero = false; > char *end_param; > + int i, ret; > > if (params == NULL || strlen(params) == 0 || !isdigit(*params)) > return -1; > > port_id = strtoul(params, &end_param, 0); > - if (*end_param != '\0') > - RTE_ETHDEV_LOG(NOTICE, > - "Extra parameters passed to ethdev telemetry command, ignoring"); > if (!rte_eth_dev_is_valid_port(port_id)) > return -1; > > + if (*end_param != '\0') { > + kvlist = rte_kvargs_parse(end_param, NULL); > + if (kvlist != NULL) > + rte_kvargs_process(kvlist, TEL_XSTATS_HIDE_ZERO_KEY, > + eth_dev_parse_hide_zero, &hide_zero); > + if (kvlist == NULL || !hide_zero || kvlist->count > 1) Instead of "kvlist->count > 1" can be better to use 'valid_keys' argument of 'rte_kvargs_parse()' to detect extra parameters, this way multiple 'hide_zero' parameters or future expansion of args won't be blocked. Similarly, '!hide_zero' check prevents "hide_zero=false" usage, it is not documented but this is expected to be supported intuitively, perhaps can be better to support "hide_zero=false" fully, document it and remove '!hide_zero' from check? > + RTE_ETHDEV_LOG(NOTICE, > + "Unknown extra parameters passed to ethdev telemetry command, ignoring\n"); > + rte_kvargs_free(kvlist); > + } > + > num_xstats = rte_eth_xstats_get(port_id, NULL, 0); > if (num_xstats < 0) > return -1; > @@ -5908,9 +5931,12 @@ eth_dev_handle_port_xstats(const char *cmd __rte_unused, > } > > rte_tel_data_start_dict(d); > - for (i = 0; i < num_xstats; i++) > + for (i = 0; i < num_xstats; i++) { > + if (hide_zero && eth_xstats[i].value == 0) > + continue; > rte_tel_data_add_dict_uint(d, xstat_names[i].name, > eth_xstats[i].value); > + } > free(eth_xstats); > return 0; > } > @@ -6328,7 +6354,7 @@ RTE_INIT(ethdev_init_telemetry) > rte_telemetry_register_cmd("/ethdev/stats", eth_dev_handle_port_stats, > "Returns the common stats for a port. Parameters: int port_id"); > rte_telemetry_register_cmd("/ethdev/xstats", eth_dev_handle_port_xstats, > - "Returns the extended stats for a port. Parameters: int port_id"); > + "Returns the extended stats for a port. Parameters: int port_id,hide_zero=true(Optional for indicates hide zero xstats)"); > #ifndef RTE_EXEC_ENV_WINDOWS > rte_telemetry_register_cmd("/ethdev/dump_priv", eth_dev_handle_port_dump_priv, > "Returns dump private information for a port. Parameters: int port_id");