[dpdk-dev] [PATCH] ether: add support for vtune task tracing

Jerin Jacob jerin.jacob at caviumnetworks.com
Fri Jun 30 05:30:47 CEST 2017


-----Original Message-----
> Date: Tue, 27 Jun 2017 16:16:01 +0300
> From: ilia.kurakin at intel.com
> To: dev at dpdk.org
> CC: konstantin.ananyev at intel.com, keith.wiles at intel.com,
>  dmitry.galanov at intel.com, Ilia Kurakin <ilia.kurakin at 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.kurakin at 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. 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.


> +	/* 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.
> 


More information about the dev mailing list