This patch modifies to use apistats by proc-info app. - change on main.c to call apistats functions - change on Makefile to include experimental API
Signed-off-by: Hideyuki Yamashita <yamashtia.hidey...@ntt-tx.co.jp> --- app/proc-info/main.c | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index d743209..d384b13 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -37,6 +37,7 @@ #include <rte_cryptodev.h> #include <rte_tm.h> #include <rte_hexdump.h> +#include <rte_apistats.h> /* Maximum long option length for option parsing. */ #define MAX_LONG_OPT_SZ 64 @@ -93,6 +94,8 @@ static char *mempool_name; /**< Enable iter mempool. */ static uint32_t enable_iter_mempool; static char *mempool_iter_name; +/**< Enable api stats. */ +static uint32_t enable_apistats; /**< display usage */ static void @@ -109,6 +112,7 @@ proc_info_usage(const char *prgname) " --xstats-name NAME: to display single xstat id by NAME\n" " --xstats-ids IDLIST: to display xstat values by id. " "The argument is comma-separated list of xstat ids to print out.\n" + " --apistats: to display api statistics, disabled by default\n" " --stats-reset: to reset port statistics\n" " --xstats-reset: to reset port extended statistics\n" " --collectd-format: to print statistics to STDOUT in expected by collectd format\n" @@ -218,6 +222,7 @@ proc_info_parse_args(int argc, char **argv) {"xstats-name", required_argument, NULL, 1}, {"collectd-format", 0, NULL, 0}, {"xstats-ids", 1, NULL, 1}, + {"apistats", 0, NULL, 0}, {"host-id", 0, NULL, 0}, {"show-port", 0, NULL, 0}, {"show-tm", 0, NULL, 0}, @@ -266,6 +271,9 @@ proc_info_parse_args(int argc, char **argv) else if (!strncmp(long_option[option_index].name, "xstats-reset", MAX_LONG_OPT_SZ)) reset_xstats = 1; + else if (!strncmp(long_option[option_index].name, "apistats", + MAX_LONG_OPT_SZ)) + enable_apistats = 1; else if (!strncmp(long_option[option_index].name, "show-port", MAX_LONG_OPT_SZ)) enable_shw_port = 1; @@ -1349,6 +1357,40 @@ iter_mempool(char *name) } } +static void +display_apistats(void) +{ + static const char *api_stats_border = "########################"; + uint16_t i; + struct rte_apistats t0_count, t1_count; + memcpy(&t0_count, rte_apicounts, sizeof(struct rte_apistats)); + sleep(1); + memcpy(&t1_count, rte_apicounts, sizeof(struct rte_apistats)); + for (i = 0; i < RTE_MAX_LCORE; i++) { + if (t1_count.lcoreid_list[i] != 0) { + uint64_t rx_count_delta = t1_count.rx_burst_counts[i] + - t0_count.rx_burst_counts[i]; + uint64_t tx_count_delta = t1_count.tx_burst_counts[i] + - t0_count.tx_burst_counts[i]; + printf("\n %s api statistics for lcoreid: %d %s\n", + api_stats_border, i, api_stats_border); + printf(" rx_burst_count: %13"PRIu64"" + " rx_burst_count_delta: %13"PRIu64"\n", + t1_count.rx_burst_counts[i], + rx_count_delta); + printf(" tx_burst_count: %13"PRIu64"" + " tx_burst_count_delta: %13"PRIu64"\n", + t1_count.tx_burst_counts[i], + tx_count_delta); + printf(" tx/rx_rate: %3.2f\n", + (rx_count_delta) ? (double)tx_count_delta + / rx_count_delta : 0.0); + printf(" %s################################%s\n", + api_stats_border, api_stats_border); + } + } +} + int main(int argc, char **argv) { @@ -1389,6 +1431,8 @@ main(int argc, char **argv) if (!rte_eal_primary_proc_alive(NULL)) rte_exit(EXIT_FAILURE, "No primary DPDK process is running.\n"); + rte_apistats_init(); + /* parse app arguments */ ret = proc_info_parse_args(argc, argv); if (ret < 0) @@ -1454,6 +1498,8 @@ main(int argc, char **argv) show_mempool(mempool_name); if (enable_iter_mempool) iter_mempool(mempool_iter_name); + if (enable_apistats) + display_apistats(); RTE_ETH_FOREACH_DEV(i) rte_eth_dev_close(i); -- 2.18.0