In general, DPDK application consumes CPU usage because it polls incoming packets using rx_burst API in infinite loop. This makes difficult to estimate how much CPU usage is really used to send/receive packets by the DPDK application.
For example, even if no incoming packets arriving, CPU usage looks nearly 100% when observed by top command. It is beneficial if developers can observe real CPU usage of the DPDK application. Such information can be exported to monitoring application like prometheus/graphana and shows CPU usage graphically. To achieve above, this patch set provides apistats functionality. apistats provides the followiing two counters for each lcore. - rx_burst_counts[RTE_MAX_LCORE] - tx_burst_counts[RTE_MAX_LCORE] Those accumulates rx_burst/tx_burst counts since the application starts. By using those values, developers can roughly estimate CPU usage. Let us assume a DPDK application is simply forwarding packets. It calls tx_burst only if it receive packets. If rx_burst_counts=1000 and tx_burst_count=1000 during certain period of time, one can assume CPU usage is 100%. If rx_burst_counts=1000 and tx_burst_count=100 during certain period of time, one can assume CPU usage is 10%. Here we assumes that tx_burst_count equals counts which rx_burst function really receives incoming packets. This patch set provides the following. - basic API counting functionality(apistats) into librte_ethdev - add code to testpmd to accumulate counter information - add code to proc-info to retrieve above mentioned counter information - add description in proc-info document about --apistats parameter - modify MAINTAINERS file for apistats.c and apistats.h Hideyuki Yamashita (5): maintainers: update maintainers file for apistats app/proc-info: add to use apistats app/test-pmd: add to use apistats docs: add description of apistats parameter into proc-info librte_ethdev: add to use apistats MAINTAINERS | 3 ++ app/proc-info/main.c | 46 +++++++++++++++++++++++ app/test-pmd/testpmd.c | 4 ++ doc/guides/tools/proc_info.rst | 10 ++++- lib/librte_ethdev/meson.build | 6 ++- lib/librte_ethdev/rte_apistats.c | 64 ++++++++++++++++++++++++++++++++ lib/librte_ethdev/rte_apistats.h | 64 ++++++++++++++++++++++++++++++++ lib/librte_ethdev/rte_ethdev.h | 7 ++++ lib/librte_ethdev/version.map | 5 +++ 9 files changed, 205 insertions(+), 4 deletions(-) create mode 100644 lib/librte_ethdev/rte_apistats.c create mode 100644 lib/librte_ethdev/rte_apistats.h -- 2.18.0