Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Apr 2020 13:00:22 +0300
From:      =?UTF-8?B?w5Z6a2FuIEtJUklL?= <ozkan.kirik@gmail.com>
To:        Luigi Rizzo <rizzo@iet.unipi.it>
Cc:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>, freebsd-ipfw <freebsd-ipfw@freebsd.org>,  "Andrey V. Elsukov" <bu7cher@yandex.ru>
Subject:   Re: dummynet performance
Message-ID:  <CAAcX-AFcZYHN7CCsCOuvtXsD_0ta8eHKFzi_9QQUrSJTBpRO4w@mail.gmail.com>
In-Reply-To: <CA%2BhQ2%2BiFTwvug9TrRme%2BCY0J%2B29yyPhwNrqqEf2hHTeXPehgAA@mail.gmail.com>
References:  <CAAcX-AEamLFbAucFXYJ0k3FePddYC7M-OtQRsTgQ3UWz_z%2BBBA@mail.gmail.com> <CA%2BhQ2%2BiFTwvug9TrRme%2BCY0J%2B29yyPhwNrqqEf2hHTeXPehgAA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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@iet.unipi.it> wrote:

> On Thu, Apr 9, 2020 at 2:18 AM =C3=96zkan KIRIK <ozkan.kirik@gmail.com> w=
rote:
> >
> > 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 assigne=
d
> 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
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAAcX-AFcZYHN7CCsCOuvtXsD_0ta8eHKFzi_9QQUrSJTBpRO4w>