From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 27408B793 for ; Fri, 20 Feb 2015 19:22:57 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP; 20 Feb 2015 10:22:12 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,616,1418112000"; d="scan'208";a="654930510" Received: from irsmsx107.ger.corp.intel.com ([163.33.3.99]) by orsmga001.jf.intel.com with ESMTP; 20 Feb 2015 10:22:12 -0800 Received: from irsmsx108.ger.corp.intel.com ([169.254.11.218]) by IRSMSX107.ger.corp.intel.com ([169.254.10.35]) with mapi id 14.03.0195.001; Fri, 20 Feb 2015 18:22:11 +0000 From: "Dumitrescu, Cristian" To: Stephen Hemminger , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v2 3/7] rte_sched: keep track of RED drops Thread-Index: AQHQQQoKdfDNu7iSx0+NhkOxbaSL9pz58e7Q Date: Fri, 20 Feb 2015 18:22:11 +0000 Message-ID: <3EB4FA525960D640B5BDFFD6A3D891263231B26E@IRSMSX108.ger.corp.intel.com> References: <1423116294-17080-1-git-send-email-stephen@networkplumber.org> <1423116294-17080-3-git-send-email-stephen@networkplumber.org> In-Reply-To: <1423116294-17080-3-git-send-email-stephen@networkplumber.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Cc: Stephen Hemminger Subject: Re: [dpdk-dev] [PATCH v2 3/7] rte_sched: keep track of RED drops X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Feb 2015 18:22:58 -0000 > -----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 > = > Add new statistic to keep track of drops due to RED. > = > Signed-off-by: Stephen Hemminger > --- > 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 =3D port->subport + (qindex / > rte_sched_port_queues_per_subport(port)); > uint32_t tc_index =3D (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] +=3D 1; > s->stats.n_bytes_tc_dropped[tc_index] +=3D pkt_len; > +#ifdef RTE_SCHED_RED > + s->stats.n_pkts_red_dropped[tc_index] +=3D 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 =3D port->queue_extra + qindex; > uint32_t pkt_len =3D pkt->pkt_len; > = > qe->stats.n_pkts_dropped +=3D 1; > qe->stats.n_bytes_dropped +=3D pkt_len; > +#ifdef RTE_SCHED_RED > + qe->stats.n_pkts_red_dropped +=3D 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 =3D 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 >=3D 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 >=3D 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 writ= ten > to current queue */ > -- > 2.1.4 Acked by: Cristian Dumitrescu -------------------------------------------------------------- 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 s= ole use of the intended recipient(s). Any review or distribution by others = is strictly prohibited. If you are not the intended recipient, please conta= ct the sender and delete all copies.