From: Vadim Kochan <[email protected]>
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 <[email protected]>
---
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 [email protected].
For more options, visit https://groups.google.com/d/optout.