> -----Original Message----- > From: Jerin Jacob [mailto:jerin.ja...@caviumnetworks.com] > Sent: Friday, June 30, 2017 4:31 AM > To: Kurakin, Ilia <ilia.kura...@intel.com> > Cc: dev@dpdk.org; Ananyev, Konstantin <konstantin.anan...@intel.com>; Wiles, > Keith <keith.wi...@intel.com>; Galanov, Dmitry > <dmitry.gala...@intel.com> > Subject: Re: [dpdk-dev] [PATCH] ether: add support for vtune task tracing > > -----Original Message----- > > Date: Tue, 27 Jun 2017 16:16:01 +0300 > > From: ilia.kura...@intel.com > > To: dev@dpdk.org > > CC: konstantin.anan...@intel.com, keith.wi...@intel.com, > > dmitry.gala...@intel.com, Ilia Kurakin <ilia.kura...@intel.com> > > Subject: [dpdk-dev] [PATCH] ether: add support for vtune task tracing > > X-Mailer: git-send-email 2.7.4 > > > > From: Ilia Kurakin <ilia.kura...@intel.com> > > > > diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h > > index f6e6c74..ee7cc42 100644 > > --- a/lib/librte_ether/rte_ethdev.h > > +++ b/lib/librte_ether/rte_ethdev.h > > @@ -186,6 +186,10 @@ extern "C" { > > #include "rte_eth_ctrl.h" > > #include "rte_dev_info.h" > > > > +#ifdef RTE_ETHDEV_TRACE_WASTED_RX_ITERATIONS > > +#include "rte_eth_itt.h" > > +#endif > > + > > struct rte_mbuf; > > > > /** > > @@ -2710,6 +2714,25 @@ rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id, > > int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id], > > rx_pkts, nb_pkts); > > > > +#ifdef RTE_ETHDEV_TRACE_WASTED_RX_ITERATIONS > > If we give the generic name like above then the solution should be generic > and it should not be tightly coupled with itt. > > Different architectures may have different profiling tools like x86 has > itt or it is possible to have generic perf based plugin in future. > > Considering the above points, IMO, we can not add code in > rte_eth_rx_burst() for each profiling variants.
+ 1 >I think, this code can > go in lib/librte_ether/rte_ethdev_profile.c and based on specific > conditional compilation flag(something like > RTE_ETHDEV_TRACE_ITT_WASTED_RX_ITERATIONS) > it can register a rx callback. > or any other scheme without directly modifying rte_eth_rx_burst() for > itt based profiling. Or might be even better to have some wrapper function/macro on top of rx_burst(): rx_burst_profle(...) or so. Then user can either replace rx_burst() with rx_burst_profile() by conditional compilation, or just call rx_burst_profile() directly. Konstantin > > > > + /* See rte_eth_itt.h to find comments on code below. */ > > + if (unlikely(nb_rx == 0)) { > > + if (!itt_aux_data[port_id].queue_is_wasting_iters[queue_id]) { > > + __itt_task_begin( > > + > > itt_aux_data[port_id].wasted_iter_domains[queue_id], > > + __itt_null, __itt_null, > > + > > itt_aux_data[port_id].wasted_iter_handles[queue_id]); > > + itt_aux_data[port_id].queue_is_wasting_iters[queue_id] > > = 1; > > + } > > + } else { > > + if > > (unlikely(itt_aux_data[port_id].queue_is_wasting_iters[queue_id])) { > > + __itt_task_end( > > + > > itt_aux_data[port_id].wasted_iter_domains[queue_id]); > > + itt_aux_data[port_id].queue_is_wasting_iters[queue_id] > > = 0; > > + } > > + } > > +#endif > > + > > #ifdef RTE_ETHDEV_RXTX_CALLBACKS > > struct rte_eth_rxtx_callback *cb = dev->post_rx_burst_cbs[queue_id]; > > > > -- > > 2.7.4 > > > > > > -------------------------------------------------------------------- > > Joint Stock Company Intel A/O > > Registered legal address: Krylatsky Hills Business Park, > > 17 Krylatskaya Str., Bldg 4, Moscow 121614, > > Russian Federation > > > > This e-mail and any attachments may contain confidential material for > > the sole use of the intended recipient(s). Any review or distribution > > by others is strictly prohibited. If you are not the intended > > recipient, please contact the sender and delete all copies. > >