On Mon, Mar 30, 2015 at 02:00:25PM +0200, Tobias Klauser wrote:
> On 2015-03-24 at 12:20:39 +0100, Vadim Kochan wrote:
> > From: Vadim Kochan
> >
> > 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.
>
> Good catch!
>
> > Fixed by calculation the minimum number of cpus for generation
> > number of packets specified by -n.
> >
> > Signed-off-by: Vadim Kochan
> > ---
> > 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);
>
> Why the divide & multiply? Wouldn't min_t(unsigned int, npkt, cpus) be
> enough?
> > +}
> > +
> > #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);
>
> I'd rather just inline the min_t here instead of having an own function.
> Maybe put a short comment outlining the two issue you mention in the
> patch description.
>
> Thanks a lot!
> Tobias
> > +
> > if (argc < 5)
> > help();
> > if (ctx.device == NULL)
> > --
> > 2.3.1
> >
I will follow all your suggestions and I'll re-send a new patch.
Thanks,
--
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.