Soft Patch Panel
 help / color / mirror / Atom feed
From: yasufum.o@gmail.com
To: spp@dpdk.org, ferruh.yigit@intel.com, yasufum.o@gmail.com
Subject: [spp] [PATCH 3/9] shared: rename struct for ring latency stats
Date: Thu, 12 Sep 2019 19:48:18 +0900	[thread overview]
Message-ID: <20190912104824.21519-4-yasufum.o@gmail.com> (raw)
In-Reply-To: <20190912104824.21519-1-yasufum.o@gmail.com>

From: Yasufumi Ogawa <yasufum.o@gmail.com>

Struct `spp_ringlatencystats_ring_latency_stats` is for containing stats
as a histgram like data. It is only used in `latency_stats.c` and its
header locally, so no need to such a long name. This update is to rename
it to `ring_latency_stats_t`.

This update also includes revising name of vars and comments.

Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
 .../secondary/spp_worker_th/latency_stats.c   | 28 ++++++++-----------
 .../secondary/spp_worker_th/latency_stats.h   | 22 +++++++++------
 2 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/src/shared/secondary/spp_worker_th/latency_stats.c b/src/shared/secondary/spp_worker_th/latency_stats.c
index 036a360..0a5e5a7 100644
--- a/src/shared/secondary/spp_worker_th/latency_stats.c
+++ b/src/shared/secondary/spp_worker_th/latency_stats.c
@@ -27,10 +27,9 @@
 
 /** ring latency statistics information */
 struct ring_latency_stats_info {
-	uint64_t timer_tsc;     /**< sampling interval counter */
-	uint64_t prev_tsc;      /**< previous time */
-	struct spp_ringlatencystats_ring_latency_stats stats;
-				/**< ring latency statistics list */
+	uint64_t timer_tsc;  /**< sampling interval */
+	uint64_t prev_tsc;   /**< previous time */
+	struct ring_latency_stats_t stats;  /**< list of stats */
 };
 
 /** sampling interval */
@@ -133,16 +132,13 @@ sppwk_calc_ring_latency(int ring_id,
 		if (likely(pkts[i]->timestamp == 0))
 			continue;
 
-		/* when mbuf::timestamp is not zero */
-		/* calculate latency */
+		/* calc latency if mbuf `timestamp` is non-zero. */
 		latency = (uint64_t)floor((now - pkts[i]->timestamp) /
 				cycles_per_ns());
-		if (likely(latency < SPP_RINGLATENCYSTATS_STATS_SLOT_COUNT-1))
-			stats_info->stats.slot[latency]++;
+		if (likely(latency < TOTAL_LATENCY_ENT-1))
+			stats_info->stats.distr[latency]++;
 		else
-			stats_info->stats.slot[
-					SPP_RINGLATENCYSTATS_STATS_SLOT_COUNT
-					-1]++;
+			stats_info->stats.distr[TOTAL_LATENCY_ENT-1]++;
 	}
 }
 
@@ -154,12 +150,12 @@ spp_ringlatencystats_get_count(void)
 
 void
 spp_ringlatencystats_get_stats(int ring_id,
-		struct spp_ringlatencystats_ring_latency_stats *stats)
+		struct ring_latency_stats_t *stats)
 {
 	struct ring_latency_stats_info *stats_info = &g_stats_info[ring_id];
 
 	rte_memcpy(stats, &stats_info->stats,
-			sizeof(struct spp_ringlatencystats_ring_latency_stats));
+			sizeof(struct ring_latency_stats_t));
 }
 
 /* Print statistics of time for packet processing in ring interface */
@@ -172,7 +168,7 @@ print_ring_latency_stats(struct iface_info *if_info)
 	printf("%s%s", clr, topLeft);
 
 	int ring_cnt, stats_cnt;
-	struct spp_ringlatencystats_ring_latency_stats stats[RTE_MAX_ETHPORTS];
+	struct ring_latency_stats_t stats[RTE_MAX_ETHPORTS];
 	memset(&stats, 0x00, sizeof(stats));
 
 	printf("RING Latency\n");
@@ -186,14 +182,14 @@ print_ring_latency_stats(struct iface_info *if_info)
 	}
 	printf("\n");
 
-	for (stats_cnt = 0; stats_cnt < SPP_RINGLATENCYSTATS_STATS_SLOT_COUNT;
+	for (stats_cnt = 0; stats_cnt < TOTAL_LATENCY_ENT;
 			stats_cnt++) {
 		printf("%3dns", stats_cnt);
 		for (ring_cnt = 0; ring_cnt < RTE_MAX_ETHPORTS; ring_cnt++) {
 			if (if_info->ring[ring_cnt].iface_type == UNDEF)
 				continue;
 
-			printf(", 0x%-16lx", stats[ring_cnt].slot[stats_cnt]);
+			printf(", 0x%-16lx", stats[ring_cnt].distr[stats_cnt]);
 		}
 		printf("\n");
 	}
diff --git a/src/shared/secondary/spp_worker_th/latency_stats.h b/src/shared/secondary/spp_worker_th/latency_stats.h
index 4a7abb4..de9ee5d 100644
--- a/src/shared/secondary/spp_worker_th/latency_stats.h
+++ b/src/shared/secondary/spp_worker_th/latency_stats.h
@@ -9,19 +9,25 @@
  * @file
  * SPP RING latency statistics
  *
- * Measure the latency through ring-PMD.
+ * Util functions for measuring latency of ring-PMD.
  */
 
 #include <rte_mbuf.h>
 #include "cmd_utils.h"
 
-/** number of slots to save latency. 0ns~99ns and 100ns over */
-#define SPP_RINGLATENCYSTATS_STATS_SLOT_COUNT 101
+/**
+ * Statistics of latency of ring is counted with histgram like data structure.
+ * To count frequency of each of time in nano sec, this data is implemented as
+ * an array in which frequency counts of 1-100[ns] are contained. If the
+ * latency is larger than 100[ns], it is added to the last entry. It means
+ * this array has 101 entries, 100 entries for 1-100[ns] and 1 entry for over
+ * 100[ns].
+ */
+#define TOTAL_LATENCY_ENT 101
 
-/** ring latency statistics */
-struct spp_ringlatencystats_ring_latency_stats {
-	/** slots to save latency */
-	uint64_t slot[SPP_RINGLATENCYSTATS_STATS_SLOT_COUNT];
+/** statistics of latency of ring */
+struct ring_latency_stats_t {
+	uint64_t distr[TOTAL_LATENCY_ENT]; /* distribution of time */
 };
 
 
@@ -88,7 +94,7 @@ int spp_ringlatencystats_get_count(void);
  *  The statistics values.
  */
 void spp_ringlatencystats_get_stats(int ring_id,
-		struct spp_ringlatencystats_ring_latency_stats *stats);
+		struct ring_latency_stats_t *stats);
 
 /* Print statistics of time for packet processing in ring interface */
 void print_ring_latency_stats(struct iface_info *if_info);
-- 
2.17.1


  parent reply	other threads:[~2019-09-12 10:48 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-12 10:48 [spp] [PATCH 0/9] Refactor ringlatencystats yasufum.o
2019-09-12 10:48 ` [spp] [PATCH 1/9] shared: rename file ringlatencystats to be short yasufum.o
2019-09-12 10:48 ` [spp] [PATCH 2/9] shared: rename func for calc latency of ring yasufum.o
2019-09-12 10:48 ` yasufum.o [this message]
2019-09-12 10:48 ` [spp] [PATCH 4/9] shared: rename func for init latency stats yasufum.o
2019-09-12 10:48 ` [spp] [PATCH 5/9] shared: renaem util funcs of ring latency yasufum.o
2019-09-12 10:48 ` [spp] [PATCH 6/9] spp_vf: revise util func for status command yasufum.o
2019-09-12 10:48 ` [spp] [PATCH 7/9] spp_mirror: " yasufum.o
2019-09-12 10:48 ` [spp] [PATCH 8/9] spp_pcap: " yasufum.o
2019-09-12 10:48 ` [spp] [PATCH 9/9] shared: add TODO to fix bug in latency stats yasufum.o

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=20190912104824.21519-4-yasufum.o@gmail.com \
    --to=yasufum.o@gmail.com \
    --cc=ferruh.yigit@intel.com \
    --cc=spp@dpdk.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).