dpdkstat: fix retrieval of statistics
authorPrzemyslaw Szczerbik <przemyslawx.szczerbik@intel.com>
Tue, 14 Feb 2017 13:02:43 +0000 (13:02 +0000)
committerPrzemyslaw Szczerbik <przemyslawx.szczerbik@intel.com>
Fri, 24 Feb 2017 15:08:39 +0000 (15:08 +0000)
commit98df65fb8d8f5dd67f596f7f3a411c56fab80458
tree8a3e8c8ea29be41fc5e54d86e4316013912ca2bb
parentd492192a5ebb0042b8d2e8370d7789e049dfbb8d
dpdkstat: fix retrieval of statistics

This change forces dpdkstat plugin to check if memory needs to be resized on
every DPDK_CMD_GET_STATS command, rather than resizing it only once at
initialization. Additionally it fixes incorrect metric retrieval logic, which
allows plugin to dispatch metrics only if number of retrieved extended statistics
is equal to allocated stats array size for port. Based on DPDK API documentation
rte_eth_xstats_get (and rte_eth_xstats_get_names) function can return positive
value lower than array size, which isn't considered a failure.

If primary DPDK process is restarted with a greater number of ports bound to
DPDK driver while collectd dpdkstat plugin is running, then memory isn't resized.
Due to insufficient memory allocation dpdkstat plugin is unable to gather metrics
from new ports.

Change-Id: I25c8995105a322474653bf7065c2228047f886b1
Signed-off-by: Przemyslaw Szczerbik <przemyslawx.szczerbik@intel.com>
src/dpdkstat.c
src/utils_dpdk.c
src/utils_dpdk.h