On Tue, 27 Mar 2018 18:59:19 +0200 Björn Töpel <bjorn.to...@gmail.com> wrote:
> +static void dump_stats(void) > +{ > + unsigned long stop_time = get_nsecs(); > + long dt = stop_time - start_time; > + int i; > + > + for (i = 0; i < num_socks; i++) { > + double rx_pps = xsks[i]->rx_npkts * 1000000000. / dt; > + double tx_pps = xsks[i]->tx_npkts * 1000000000. / dt; > + char *fmt = "%-15s %'-11.0f %'-11lu\n"; > + > + printf("\n sock%d@", i); > + print_benchmark(false); > + printf("\n"); > + > + printf("%-15s %-11s %-11s %-11.2f\n", "", "pps", "pkts", > + dt / 1000000000.); > + printf(fmt, "rx", rx_pps, xsks[i]->rx_npkts); > + printf(fmt, "tx", tx_pps, xsks[i]->tx_npkts); > + } > +} > + > +static void *poller(void *arg) > +{ > + (void)arg; > + for (;;) { > + sleep(1); > + dump_stats(); > + } > + > + return NULL; > +} You are printing the "pps" (packets per sec) as an average over the entire test run... could you please change that to, at least also, have an more up-to-date value like between the last measurement? The problem is that when you start the test, the first reading will be too low, and it takes time to average out/up. For ixgbe, first reading will be zero, because it does a link-down+up, which stops my pktgen. The second annoyance is that I like to change system/kernel setting during the run, and observe the effect. E.g change CPU sleep states (via tuned-adm) during the test-run to see the effect, which I cannot with this long average. -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer