From: Vadim Kochan <vadi...@gmail.com> Trafgen uses all the online cpus even if number of packets specified by -n is less than numbers of selected cpus. Such behaviour leads to issues:
- trafgen re-calculates number of packets per cpu which leads to rounding it to 0 then no packets will be sent. - trafgen might send more packets than specified by -n because of using all the online cpus. Fixed by calculation the minimum number of cpus for generation number of packets specified by -n. Signed-off-by: Vadim Kochan <vadi...@gmail.com> --- cpus.h | 7 +++++++ trafgen.c | 3 +++ 2 files changed, 10 insertions(+) diff --git a/cpus.h b/cpus.h index 0626726..be33884 100644 --- a/cpus.h +++ b/cpus.h @@ -25,4 +25,11 @@ static inline unsigned int get_number_cpus_online(void) return ret; } +static inline unsigned int alloc_cpus_by_n_pkts(int npkts) +{ + unsigned int cpus = get_number_cpus_online(); + + return min_t(unsigned int, ((double)npkts / cpus) * cpus, cpus); +} + #endif /* CPUS_H */ diff --git a/trafgen.c b/trafgen.c index 9151b5d..5403d47 100644 --- a/trafgen.c +++ b/trafgen.c @@ -1038,6 +1038,9 @@ int main(int argc, char **argv) } } + if (ctx.num && ctx.num < ctx.cpus && ctx.cpus > 1) + ctx.cpus = alloc_cpus_by_n_pkts(ctx.num); + if (argc < 5) help(); if (ctx.device == NULL) -- 2.3.1 -- You received this message because you are subscribed to the Google Groups "netsniff-ng" group. To unsubscribe from this group and stop receiving emails from it, send an email to netsniff-ng+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.