dummynet performance

Özkan KIRIK ozkan.kirik at gmail.com
Thu Apr 9 10:00:36 UTC 2020


In my production environment there are many schedulers and pipes & queues
belongs to this scheds.
dummynet uses %90-100 percent of single cpu. (ie. 20 scheds, 30 pipes, 35
queues total. Each pipe has max 30-100Mbps)

In my idea, by distributing schedulers to different threads, all pipes that
belongs to same scheduler also should run on same thread.
By this way, dummynet can manage much higher total bandwidths.

Thanks for greate explanation.

In another way, for each scheduler we can create a new taskqueue_thread,
Is it possible if dummnet_io() function will stay as is (in main thread),
and it should call the right schedulers enqueue function that runs
different thread?

cheers
Ozkan

On Thu, Apr 9, 2020 at 12:43 PM Luigi Rizzo <rizzo at iet.unipi.it> wrote:

> On Thu, Apr 9, 2020 at 2:18 AM Özkan KIRIK <ozkan.kirik at gmail.com> wrote:
> >
> > Hello,
> >
> > I wonder if it is possible to update dummynet code multi-threading
> capable
> > practically?
> > My idea is below:
> > - A new sysctl tunable will be defined as
> > "net.inet.ip.dummynet.thread_count" (default 1)
> > - To distribute tasks along threads, each sched instance can be assigned
> to
> > different thread.
> > ...
>
> What are you trying to achieve ? In general, the scheduler needs to
> know the state of all flows to perform correct scheduling of traffic.
> You could in principle split the load on multiple threads under specific,
> very restrictive conditions (each thread runs a different scheduler, they
> cannot share the excess bandwidth, and the total bw does not exceed the
> link's capacity, each scheduler has a different queue on the NIC).
>
> cheers
> luigi
>


More information about the freebsd-net mailing list