From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Jakub Kicinski <kuba@kernel.org>
Cc: Yannick Vignon <yannick.vignon@oss.nxp.com>,
Eric Dumazet <edumazet@google.com>,
Giuseppe Cavallaro <peppe.cavallaro@st.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Jose Abreu <joabreu@synopsys.com>,
"David S. Miller" <davem@davemloft.net>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Antoine Tenart <atenart@kernel.org>,
Alexander Lobakin <alexandr.lobakin@intel.com>,
Paolo Abeni <pabeni@redhat.com>, Wei Wang <weiwan@google.com>,
Kumar Kartikeya Dwivedi <memxor@gmail.com>,
Yunsheng Lin <linyunsheng@huawei.com>,
Arnd Bergmann <arnd@arndb.de>, netdev <netdev@vger.kernel.org>,
Vladimir Oltean <olteanv@gmail.com>,
Xiaoliang Yang <xiaoliang.yang_1@nxp.com>,
mingkai.hu@nxp.com, Joakim Zhang <qiangqing.zhang@nxp.com>,
sebastien.laveze@nxp.com, Yannick Vignon <yannick.vignon@nxp.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH net-next 1/2] net: napi: wake up ksoftirqd if needed after scheduling NAPI
Date: Tue, 8 Feb 2022 18:45:53 +0100 [thread overview]
Message-ID: <YgKsUYJra2vtpRNZ@linutronix.de> (raw)
In-Reply-To: <20220208073520.7197d638@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
On 2022-02-08 07:35:20 [-0800], Jakub Kicinski wrote:
> > If you enable threaded NAPI then you end up with a thread and the
> > softirq is no longer used. I don't know what the next action is but I
> > guess you search for that thread and pin it manually to CPU and assign a
> > RT priority (probably, otherwise it will compete with other tasks for
> > CPU resources).
>
> FWIW I don't think servers would want RT prio.
but then the NAPI thread is treated the same way like your xz -9.
> > Instead we could have
> > request_threaded_irq(, handler_irq, handler_napi);
> >
> > And we would have basically the same outcome. Except that handler_napi()
> > runs that SCHED_FIFO/50 and has the same CPU affinity as the IRQ (and
> > the CPU affinity is adjusted if the IRQ-affinity is changed).
> > We would still have to work out the details what handler_irq() is
> > allowed to do and how to handle one IRQ and multiple handler_napi().
> >
> > If you wrap request_threaded_irq() in something like request_napi_irq()
> > the you could switch between the former (softirq) and later (thread)
> > based NAPI handling (since you have all the needed details).
>
> One use case to watch out for is drivers which explicitly moved
> to threaded NAPI because they want to schedule multiple threads
> (NAPIs) from a single IRQ to spread processing across more cores.
the request_napi_irq() could have a sysfs switch (like we currently
have).
But you mentioned one IRQ and multiple NAPI threads, to distribute
across core. The usual case is that you have one IRQ for a network queue
and this network queue has one NAPI struct, right?
In the case where you would have one IRQ but two network queues, each
with one NAPI struct? And then you use the napi-threads and pin manually
queue-napi#1 to CPU#1 and queue-napi#2 to CPU#2 while the IRQ itself
fires on CPU#1?
Sebastian
next prev parent reply other threads:[~2022-02-08 17:45 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-03 18:40 [PATCH net-next 1/2] net: napi: wake up ksoftirqd if needed after scheduling NAPI Yannick Vignon
2022-02-03 18:40 ` [PATCH net-next 2/2] net: stmmac: move to threaded IRQ Yannick Vignon
2022-02-03 19:08 ` [PATCH net-next 1/2] net: napi: wake up ksoftirqd if needed after scheduling NAPI Eric Dumazet
2022-02-03 23:40 ` Yannick Vignon
2022-02-03 23:57 ` Eric Dumazet
2022-02-04 1:09 ` Jakub Kicinski
2022-02-04 8:19 ` Sebastian Andrzej Siewior
2022-02-04 15:43 ` Jakub Kicinski
2022-02-04 17:15 ` Yannick Vignon
2022-02-04 17:36 ` Jakub Kicinski
2022-02-04 17:45 ` Jakub Kicinski
2022-02-04 18:03 ` Sebastian Andrzej Siewior
2022-02-04 18:50 ` Jakub Kicinski
2022-02-04 18:52 ` Jakub Kicinski
2022-02-08 11:51 ` Sebastian Andrzej Siewior
2022-02-08 15:35 ` Jakub Kicinski
2022-02-08 17:45 ` Sebastian Andrzej Siewior [this message]
2022-02-09 0:16 ` Jakub Kicinski
2022-02-08 15:57 ` Paolo Abeni
2022-02-08 18:21 ` Sebastian Andrzej Siewior
2022-02-09 11:26 ` Marc Kleine-Budde
2022-02-03 19:41 ` Sebastian Andrzej Siewior
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YgKsUYJra2vtpRNZ@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=alexandr.lobakin@intel.com \
--cc=alexandre.torgue@foss.st.com \
--cc=arnd@arndb.de \
--cc=atenart@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=joabreu@synopsys.com \
--cc=kuba@kernel.org \
--cc=linyunsheng@huawei.com \
--cc=mcoquelin.stm32@gmail.com \
--cc=memxor@gmail.com \
--cc=mingkai.hu@nxp.com \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=peppe.cavallaro@st.com \
--cc=qiangqing.zhang@nxp.com \
--cc=sebastien.laveze@nxp.com \
--cc=tglx@linutronix.de \
--cc=weiwan@google.com \
--cc=xiaoliang.yang_1@nxp.com \
--cc=yannick.vignon@nxp.com \
--cc=yannick.vignon@oss.nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).