@@ -74,6 +74,10 @@ rte_graph_obj_dump(FILE *f, struct rte_graph *g, bool all)
fprintf(f, " size=%d\n", n->size);
fprintf(f, " idx=%d\n", n->idx);
fprintf(f, " total_objs=%" PRId64 "\n", n->total_objs);
+ fprintf(f, " total_sched_objs=%" PRId64 "\n",
+ n->total_sched_objs);
+ fprintf(f, " total_sched_fail=%" PRId64 "\n",
+ n->total_sched_fail);
fprintf(f, " total_calls=%" PRId64 "\n", n->total_calls);
for (i = 0; i < n->nb_edges; i++)
fprintf(f, " edge[%d] <%s>\n", i,
@@ -41,15 +41,18 @@ struct rte_graph_cluster_stats {
#define boarder() \
fprintf(f, "+-------------------------------+---------------+--------" \
- "-------+---------------+---------------+---------------+-" \
+ "-------+---------------+---------------+---------------+"\
+ "---------------+---------------+-" \
"----------+\n")
static inline void
print_banner(FILE *f)
{
boarder();
- fprintf(f, "%-32s%-16s%-16s%-16s%-16s%-16s%-16s\n", "|Node", "|calls",
- "|objs", "|realloc_count", "|objs/call", "|objs/sec(10E6)",
+ fprintf(f, "%-32s%-16s%-16s%-16s%-16s%-16s%-16s%-16s%-16s\n",
+ "|Node", "|calls",
+ "|objs", "|sched objs", "|sched fail",
+ "|realloc_count", "|objs/call", "|objs/sec(10E6)",
"|cycles/call|");
boarder();
}
@@ -77,8 +80,10 @@ print_node(FILE *f, const struct rte_graph_cluster_node_stats *stat)
fprintf(f,
"|%-31s|%-15" PRIu64 "|%-15" PRIu64 "|%-15" PRIu64
+ "|%-15" PRIu64 "|%-15" PRIu64
"|%-15.3f|%-15.6f|%-11.4f|\n",
- stat->name, calls, objs, stat->realloc_count, objs_per_call,
+ stat->name, calls, objs, stat->sched_objs,
+ stat->sched_fail, stat->realloc_count, objs_per_call,
objs_per_sec, cycles_per_call);
}
@@ -331,6 +336,7 @@ static inline void
cluster_node_arregate_stats(struct cluster_node *cluster)
{
uint64_t calls = 0, cycles = 0, objs = 0, realloc_count = 0;
+ uint64_t sched_objs = 0, sched_fail = 0;
struct rte_graph_cluster_node_stats *stat = &cluster->stat;
struct rte_node *node;
rte_node_t count;
@@ -338,6 +344,9 @@ cluster_node_arregate_stats(struct cluster_node *cluster)
for (count = 0; count < cluster->nb_nodes; count++) {
node = cluster->nodes[count];
+ sched_objs += node->total_sched_objs;
+ sched_fail += node->total_sched_fail;
+
calls += node->total_calls;
objs += node->total_objs;
cycles += node->total_cycles;
@@ -347,6 +356,8 @@ cluster_node_arregate_stats(struct cluster_node *cluster)
stat->calls = calls;
stat->objs = objs;
stat->cycles = cycles;
+ stat->sched_objs = sched_objs;
+ stat->sched_fail = sched_fail;
stat->ts = rte_get_timer_cycles();
stat->realloc_count = realloc_count;
}
@@ -208,6 +208,9 @@ struct rte_graph_cluster_node_stats {
uint64_t objs; /**< Current number of objs processed. */
uint64_t cycles; /**< Current number of cycles. */
+ uint64_t sched_objs;
+ uint64_t sched_fail;
+
uint64_t prev_ts; /**< Previous call timestamp. */
uint64_t prev_calls; /**< Previous number of calls. */
uint64_t prev_objs; /**< Previous number of processed objs. */
@@ -80,6 +80,9 @@ struct rte_node {
/* Fast schedule area */
unsigned int lcore_id __rte_cache_aligned; /**< Node running Lcore. */
+ uint64_t total_sched_objs; /**< Number of objects scheduled. */
+ uint64_t total_sched_fail; /**< Number of scheduled failure. */
+
/* Fast path area */
#define RTE_NODE_CTX_SZ 16
uint8_t ctx[RTE_NODE_CTX_SZ] __rte_cache_aligned; /**< Node Context. */