DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Dumitrescu, Cristian" <cristian.dumitrescu@intel.com>
To: Stephen Hemminger <stephen@networkplumber.org>,
	"dev@dpdk.org" <dev@dpdk.org>
Cc: Stephen Hemminger <shemming@brocade.com>
Subject: Re: [dpdk-dev] [PATCH v2 3/7] rte_sched: keep track of RED drops
Date: Fri, 20 Feb 2015 18:22:11 +0000	[thread overview]
Message-ID: <3EB4FA525960D640B5BDFFD6A3D891263231B26E@IRSMSX108.ger.corp.intel.com> (raw)
In-Reply-To: <1423116294-17080-3-git-send-email-stephen@networkplumber.org>



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Stephen
> Hemminger
> Sent: Thursday, February 5, 2015 6:05 AM
> To: dev@dpdk.org
> Cc: Stephen Hemminger
> Subject: [dpdk-dev] [PATCH v2 3/7] rte_sched: keep track of RED drops
> 
> From: Stephen Hemminger <shemming@brocade.com>
> 
> Add new statistic to keep track of drops due to RED.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  lib/librte_sched/rte_sched.c | 28 +++++++++++++++++++++++-----
>  lib/librte_sched/rte_sched.h |  6 ++++++
>  2 files changed, 29 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
> index 6928c98..8cb8bf1 100644
> --- a/lib/librte_sched/rte_sched.c
> +++ b/lib/librte_sched/rte_sched.c
> @@ -1028,7 +1028,9 @@ rte_sched_port_update_subport_stats(struct
> rte_sched_port *port, uint32_t qindex
>  }
> 
>  static inline void
> -rte_sched_port_update_subport_stats_on_drop(struct rte_sched_port
> *port, uint32_t qindex, struct rte_mbuf *pkt)
> +rte_sched_port_update_subport_stats_on_drop(struct rte_sched_port
> *port,
> +					    uint32_t qindex,
> +					    struct rte_mbuf *pkt, uint32_t red)
>  {
>  	struct rte_sched_subport *s = port->subport + (qindex /
> rte_sched_port_queues_per_subport(port));
>  	uint32_t tc_index = (qindex >> 2) & 0x3;
> @@ -1036,6 +1038,9 @@
> rte_sched_port_update_subport_stats_on_drop(struct rte_sched_port
> *port, uint32_
> 
>  	s->stats.n_pkts_tc_dropped[tc_index] += 1;
>  	s->stats.n_bytes_tc_dropped[tc_index] += pkt_len;
> +#ifdef RTE_SCHED_RED
> +	s->stats.n_pkts_red_dropped[tc_index] += red;
> +#endif
>  }
> 
>  static inline void
> @@ -1049,13 +1054,18 @@ rte_sched_port_update_queue_stats(struct
> rte_sched_port *port, uint32_t qindex,
>  }
> 
>  static inline void
> -rte_sched_port_update_queue_stats_on_drop(struct rte_sched_port
> *port, uint32_t qindex, struct rte_mbuf *pkt)
> +rte_sched_port_update_queue_stats_on_drop(struct rte_sched_port
> *port,
> +					  uint32_t qindex,
> +					  struct rte_mbuf *pkt, uint32_t red)
>  {
>  	struct rte_sched_queue_extra *qe = port->queue_extra + qindex;
>  	uint32_t pkt_len = pkt->pkt_len;
> 
>  	qe->stats.n_pkts_dropped += 1;
>  	qe->stats.n_bytes_dropped += pkt_len;
> +#ifdef RTE_SCHED_RED
> +	qe->stats.n_pkts_red_dropped += red;
> +#endif
>  }
> 
>  #endif /* RTE_SCHED_COLLECT_STATS */
> @@ -1206,12 +1216,20 @@ rte_sched_port_enqueue_qwa(struct
> rte_sched_port *port, uint32_t qindex, struct
>  	qlen = q->qw - q->qr;
> 
>  	/* Drop the packet (and update drop stats) when queue is full */
> -	if (unlikely(rte_sched_port_red_drop(port, pkt, qindex, qlen) ||
> (qlen >= qsize))) {
> +	if (unlikely(rte_sched_port_red_drop(port, pkt, qindex, qlen))) {
> +#ifdef RTE_SCHED_COLLECT_STATS
> +		rte_sched_port_update_subport_stats_on_drop(port,
> qindex, pkt, 1);
> +		rte_sched_port_update_queue_stats_on_drop(port,
> qindex, pkt, 1);
> +#endif
>  		rte_pktmbuf_free(pkt);
> +	}
> +
> +	if (qlen >= qsize) {
>  #ifdef RTE_SCHED_COLLECT_STATS
> -		rte_sched_port_update_subport_stats_on_drop(port,
> qindex, pkt);
> -		rte_sched_port_update_queue_stats_on_drop(port,
> qindex, pkt);
> +		rte_sched_port_update_subport_stats_on_drop(port,
> qindex, pkt, 0);
> +		rte_sched_port_update_queue_stats_on_drop(port,
> qindex, pkt, 0);
>  #endif
> +		rte_pktmbuf_free(pkt);
>  		return 0;
>  	}
> 
> diff --git a/lib/librte_sched/rte_sched.h b/lib/librte_sched/rte_sched.h
> index dda287f..e9bf18a 100644
> --- a/lib/librte_sched/rte_sched.h
> +++ b/lib/librte_sched/rte_sched.h
> @@ -140,6 +140,9 @@ struct rte_sched_subport_stats {
>  	                                      subport for each traffic class*/
>  	uint32_t
> n_bytes_tc_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE]; /**<
> Number of bytes dropped by the current
>                                            subport for each traffic class due to subport queues
> being full or congested */
> +#ifdef RTE_SCHED_RED
> +	uint32_t
> n_pkts_red_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE]; /**<
> Number of packets dropped by red */
> +#endif
>  };
> 
>  /** Pipe configuration parameters. The period and credits_per_period
> parameters are measured
> @@ -168,6 +171,9 @@ struct rte_sched_queue_stats {
>  	/* Packets */
>  	uint32_t n_pkts;                 /**< Number of packets successfully
> written to current queue */
>  	uint32_t n_pkts_dropped;         /**< Number of packets dropped due
> to current queue being full or congested */
> +#ifdef RTE_SCHED_RED
> +	uint32_t n_pkts_red_dropped;
> +#endif
> 
>  	/* Bytes */
>  	uint32_t n_bytes;                /**< Number of bytes successfully written
> to current queue */
> --
> 2.1.4

Acked by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>

--------------------------------------------------------------
Intel Shannon Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263
Business address: Dromore House, East Park, Shannon, Co. Clare

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.

  reply	other threads:[~2015-02-20 18:22 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-05  6:04 [dpdk-dev] [PATCH v2 1/7] rte_sched: make RED optional at runtime Stephen Hemminger
2015-02-05  6:04 ` [dpdk-dev] [PATCH v2 2/7] rte_sched: expand scheduler hierarchy for more VLAN's Stephen Hemminger
2015-02-05  9:57   ` Ananyev, Konstantin
2015-02-20 18:18   ` Dumitrescu, Cristian
2015-02-05  6:04 ` [dpdk-dev] [PATCH v2 3/7] rte_sched: keep track of RED drops Stephen Hemminger
2015-02-20 18:22   ` Dumitrescu, Cristian [this message]
2015-02-20 17:54 ` [dpdk-dev] [PATCH v2 1/7] rte_sched: make RED optional at runtime Dumitrescu, Cristian

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3EB4FA525960D640B5BDFFD6A3D891263231B26E@IRSMSX108.ger.corp.intel.com \
    --to=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    --cc=shemming@brocade.com \
    --cc=stephen@networkplumber.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).