[EXT] Re: [PATCH 1/6] ethdev: add trace points
Ankur Dwivedi
adwivedi at marvell.com
Tue Sep 13 08:48:47 CEST 2022
Hi Andrew,
>-----Original Message-----
>From: Andrew Rybchenko <andrew.rybchenko at oktetlabs.ru>
>Sent: Monday, September 12, 2022 4:30 PM
>To: Ankur Dwivedi <adwivedi at marvell.com>; dev at dpdk.org
>Cc: thomas at monjalon.net; mdr at ashroe.eu; orika at nvidia.com;
>ferruh.yigit at xilinx.com; chas3 at att.com; humin29 at huawei.com;
>linville at tuxdriver.com; ciara.loftus at intel.com; qi.z.zhang at intel.com;
>mw at semihalf.com; mk at semihalf.com; shaibran at amazon.com;
>evgenys at amazon.com; igorch at amazon.com; chandu at amd.com; Igor
>Russkikh <irusskikh at marvell.com>; shepard.siegel at atomicrules.com;
>ed.czeck at atomicrules.com; john.miller at atomicrules.com;
>ajit.khaparde at broadcom.com; somnath.kotur at broadcom.com; Jerin Jacob
>Kollanukkaran <jerinj at marvell.com>; Maciej Czekaj [C]
><mczekaj at marvell.com>; Shijith Thotton <sthotton at marvell.com>;
>Srisivasubramanian Srinivasan <srinivasan at marvell.com>; Harman Kalra
><hkalra at marvell.com>; rahul.lakkireddy at chelsio.com; johndale at cisco.com;
>hyonkim at cisco.com; liudongdong3 at huawei.com;
>yisen.zhuang at huawei.com; xuanziyang2 at huawei.com;
>cloud.wangxiaoyun at huawei.com; zhouguoyang at huawei.com;
>simei.su at intel.com; wenjun1.wu at intel.com; qiming.yang at intel.com;
>Yuying.Zhang at intel.com; beilei.xing at intel.com; xiao.w.wang at intel.com;
>jingjing.wu at intel.com; junfeng.guo at intel.com; rosen.xu at intel.com; Nithin
>Kumar Dabilpuram <ndabilpuram at marvell.com>; Kiran Kumar Kokkilagadda
><kirankumark at marvell.com>; Sunil Kumar Kori <skori at marvell.com>; Satha
>Koteswara Rao Kottidi <skoteshwar at marvell.com>; Liron Himi
><lironh at marvell.com>; zr at semihalf.com; Radha Chintakuntla
><radhac at marvell.com>; Veerasenareddy Burru <vburru at marvell.com>;
>Sathesh B Edara <sedara at marvell.com>; matan at nvidia.com;
>viacheslavo at nvidia.com; sthemmin at microsoft.com; longli at microsoft.com;
>spinler at cesnet.cz; chaoyong.he at corigine.com;
>niklas.soderlund at corigine.com; hemant.agrawal at nxp.com;
>sachin.saxena at oss.nxp.com; g.singh at nxp.com; apeksha.gupta at nxp.com;
>sachin.saxena at nxp.com; aboyer at pensando.io; Rasesh Mody
><rmody at marvell.com>; Shahed Shaikh <shshaikh at marvell.com>; Devendra
>Singh Rawat <dsinghrawat at marvell.com>; jiawenwu at trustnetic.com;
>jianwang at trustnetic.com; jbehrens at vmware.com;
>maxime.coquelin at redhat.com; chenbo.xia at intel.com;
>steven.webster at windriver.com; matt.peters at windriver.com;
>bruce.richardson at intel.com; mtetsuyah at gmail.com; grive at u256.net;
>jasvinder.singh at intel.com; cristian.dumitrescu at intel.com;
>jgrajcia at cisco.com
>Subject: [EXT] Re: [PATCH 1/6] ethdev: add trace points
>
>External Email
>
>----------------------------------------------------------------------
>On 8/4/22 16:44, Ankur Dwivedi wrote:
>> Add trace points for ethdev functions.
>>
>> Signed-off-by: Ankur Dwivedi <adwivedi at marvell.com>
>> ---
>
>[snip]
>
>> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c index
>> 1979dc0850..a6fb370b22 100644
>> --- a/lib/ethdev/rte_ethdev.c
>> +++ b/lib/ethdev/rte_ethdev.c
>
>[snip]
>
>> @@ -525,6 +536,7 @@ rte_eth_dev_owner_delete(const uint64_t
>owner_id)
>>
>> rte_spinlock_unlock(ð_dev_shared_data->ownership_lock);
>>
>> + rte_ethdev_trace_owner_delete(owner_id, ret);
>
>I'm wondering why trace is sometimes added in the middle of the function,
>but in the majority of cases it is added as the first or the last action. Is there
>any logical/guidelines behind it?
In this case for printing the return value the trace was added at the end. I can change it if not required.
The logic which I used was to log at least the input arguments of a function and in some cases also log important information(according to me) if possible.For example in rte_eth_tx_buffer_count_callback() I was also logging the count at the end. Similar logic in rte_eth_link_get_nowait().
Please let me know your views.
>
>> return ret;
>> }
>>
>
>[snip]
>
>> diff --git a/lib/ethdev/rte_ethdev_trace.h
>> b/lib/ethdev/rte_ethdev_trace.h index 1491c815c3..de728d355d 100644
>> --- a/lib/ethdev/rte_ethdev_trace.h
>> +++ b/lib/ethdev/rte_ethdev_trace.h
>
>[snip]
>
>> +RTE_TRACE_POINT(
>
>Shouldn't it be RTE_TRACE_POINT_FP? Isn't it fast path?
Yes it is fastpath. Will make it as fastpath in v2.
>
>> + rte_eth_trace_call_rx_callbacks,
>> + RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>> + struct rte_mbuf **rx_pkts, uint16_t nb_rx,
>> + uint16_t nb_pkts, void *opaque),
>> + rte_trace_point_emit_u16(port_id);
>> + rte_trace_point_emit_u16(queue_id);
>> + rte_trace_point_emit_ptr(rx_pkts);
>> + rte_trace_point_emit_u16(nb_rx);
>> + rte_trace_point_emit_u16(nb_pkts);
>> + rte_trace_point_emit_ptr(opaque);
>> +)
>> +
>> +RTE_TRACE_POINT(
>
>same here
Yes it is fastpath. Will make it as fastpath in v2.
>
>> + rte_eth_trace_call_tx_callbacks,
>> + RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>> + struct rte_mbuf **tx_pkts, uint16_t nb_pkts,
>> + void *opaque),
>> + rte_trace_point_emit_u16(port_id);
>> + rte_trace_point_emit_u16(queue_id);
>> + rte_trace_point_emit_ptr(tx_pkts);
>> + rte_trace_point_emit_u16(nb_pkts);
>> + rte_trace_point_emit_ptr(opaque);
>> +)
>> +
>
>[snip]
>
>> +RTE_TRACE_POINT(
>> + rte_ethdev_trace_info_get,
>> + RTE_TRACE_POINT_ARGS(uint16_t port_id,
>> + struct rte_eth_dev_info *dev_info),
>> + rte_trace_point_emit_u16(port_id);
>> + rte_trace_point_emit_string(dev_info->driver_name);
>> + rte_trace_point_emit_u32(dev_info->if_index);
>> + rte_trace_point_emit_u16(dev_info->min_mtu);
>> + rte_trace_point_emit_u16(dev_info->max_mtu);
>> + rte_trace_point_emit_u32(dev_info->min_rx_bufsize);
>> + rte_trace_point_emit_u32(dev_info->max_rx_pktlen);
>> + rte_trace_point_emit_u64(dev_info->rx_offload_capa);
>> + rte_trace_point_emit_u64(dev_info->tx_offload_capa);
>> + rte_trace_point_emit_u64(dev_info->rx_queue_offload_capa);
>> + rte_trace_point_emit_u64(dev_info->tx_queue_offload_capa);
>> + rte_trace_point_emit_u16(dev_info->reta_size);
>> + rte_trace_point_emit_u8(dev_info->hash_key_size);
>> + rte_trace_point_emit_u16(dev_info->nb_rx_queues);
>> + rte_trace_point_emit_u16(dev_info->nb_tx_queues);
>
>How to make a choice which information should be included above?
In this case dev_info information is logged which might be of interest.
>
>> +)
>> +
>
>[snip]
More information about the dev
mailing list