From: Martin Karsten <mkarsten@uwaterloo.ca>
To: "Samudrala, Sridhar" <sridhar.samudrala@intel.com>,
Joe Damato <jdamato@fastly.com>,
netdev@vger.kernel.org, pabeni@redhat.com,
namangulati@google.com, edumazet@google.com,
amritha.nambiar@intel.com, sdf@fomichev.me, peter@typeblog.net,
m2shafiei@uwaterloo.ca, bjorn@rivosinc.com, hch@infradead.org,
willy@infradead.org, willemdebruijn.kernel@gmail.com,
skhawaja@google.com, kuba@kernel.org,
Bagas Sanjaya <bagasdotme@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Simon Horman <horms@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
"open list:DOCUMENTATION" <linux-doc@vger.kernel.org>,
open list <linux-kernel@vger.kernel.org>,
"open list:BPF [MISC] :Keyword:(?:b|_)bpf(?:b|_)"
<bpf@vger.kernel.org>
Subject: Re: [PATCH net-next v3 7/7] docs: networking: Describe irq suspension
Date: Fri, 1 Nov 2024 17:46:03 -0400 [thread overview]
Message-ID: <b75bec0d-e083-46e9-96fe-47abbf089cbd@uwaterloo.ca> (raw)
In-Reply-To: <f9cfcffb-203b-4ed1-82ba-14fed2252c7e@intel.com>
On 2024-11-01 17:01, Samudrala, Sridhar wrote:
>
>
> On 10/31/2024 11:39 PM, Joe Damato wrote:
>> On Thu, Oct 31, 2024 at 10:47:05PM -0500, Samudrala, Sridhar wrote:
>>>
>>>
>>> On 10/31/2024 7:48 PM, Joe Damato wrote:
>>>> Describe irq suspension, the epoll ioctls, and the tradeoffs of using
>>>> different gro_flush_timeout values.
[...]
>>>> +To use this mechanism:
>>>> +
>>>> + 1. The per-NAPI config parameter ``irq_suspend_timeout`` should
>>>> be set to the
>>>> + maximum time (in nanoseconds) the application can have its IRQs
>>>> + suspended. This is done using netlink, as described above.
>>>> This timeout
>>>> + serves as a safety mechanism to restart IRQ driver interrupt
>>>> processing if
>>>> + the application has stalled. This value should be chosen so
>>>> that it covers
>>>> + the amount of time the user application needs to process data
>>>> from its
>>>> + call to epoll_wait, noting that applications can control how
>>>> much data
>>>> + they retrieve by setting ``max_events`` when calling epoll_wait.
>>>> +
>>>> + 2. The sysfs parameter or per-NAPI config parameters
>>>> ``gro_flush_timeout``
>>>> + and ``napi_defer_hard_irqs`` can be set to low values. They
>>>> will be used
>>>> + to defer IRQs after busy poll has found no data.
>>>
>>> Is it required to set gro_flush_timeout and napi_defer_hard_irqs when
>>> irq_suspend_timeout is set? Doesn't it override any smaller
>>> gro_flush_timeout value?
>>
>> It is not required to use gro_flush_timeout or napi_defer_hard_irqs,
>> but if they are set they will take over when epoll finds no events.
>> Their usage is recommended. See the Usage section of the cover
>> letter for details.
>>
>> While gro_flush_timeout and napi_defer_hard_irqs are not strictly
>> required, it is difficult for the polling-based packet delivery loop
>> to gain control over packet delivery.
>>
>> Please see a previous email about this from the RFC for more
>> details:
>>
>> https://lore.kernel.org/netdev/2bb121dd-3dcd-4142-
>> ab87-02ccf4afd469@uwaterloo.ca/
>
> OK. Thanks for the clarification.
>>
>> In the cover letter, you can note the difference in performance when
>> gro_flush_timeout is set to different values. Note the explanation
>> of suspendX; each suspend case is testing a different
>> gro_flush_timeout.
>
> May be you can also include a test scenario in your perf results where
> gro_flush_timeout and napi_defer_hard_irqs are not set to show that a
> non-zero value of gro_flush_timeout and napi_defer_hard_irqs is
> recommended when using irq_suspend_timeout.
Thanks for your feedback. We've updated the cover letter as well as the
kernel documentation to explain this in more detail and to illustrate
why the parameter usage is recommended. We ran experiments with these
parameters set to zero and the results are as expected and essentially
the same as the base case, i.e., irq_suspend_timeout does not have an
effect in this case.
Thanks,
Martin
>
>>
>> Let us know if you have any other questions; both Martin and I are
>> happy to help or further explain anything that is not clear.
>>
>
prev parent reply other threads:[~2024-11-01 21:47 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-01 0:48 [PATCH net-next v3 0/7] Suspend IRQs during application busy periods Joe Damato
2024-11-01 0:48 ` [PATCH net-next v3 1/7] net: Add napi_struct parameter irq_suspend_timeout Joe Damato
2024-11-01 0:48 ` [PATCH net-next v3 2/7] net: Suspend softirq when prefer_busy_poll is set Joe Damato
2024-11-01 0:48 ` [PATCH net-next v3 3/7] net: Add control functions for irq suspension Joe Damato
2024-11-01 0:48 ` [PATCH net-next v3 4/7] eventpoll: Trigger napi_busy_loop, if prefer_busy_poll is set Joe Damato
2024-11-01 0:48 ` [PATCH net-next v3 5/7] eventpoll: Control irq suspension for prefer_busy_poll Joe Damato
2024-11-01 0:48 ` [PATCH net-next v3 6/7] selftests: net: Add busy_poll_test Joe Damato
2024-11-01 13:34 ` Jakub Kicinski
2024-11-01 20:15 ` Joe Damato
2024-11-01 0:48 ` [PATCH net-next v3 7/7] docs: networking: Describe irq suspension Joe Damato
2024-11-01 3:47 ` Samudrala, Sridhar
2024-11-01 4:39 ` Joe Damato
2024-11-01 21:01 ` Samudrala, Sridhar
2024-11-01 21:46 ` Martin Karsten [this message]
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=b75bec0d-e083-46e9-96fe-47abbf089cbd@uwaterloo.ca \
--to=mkarsten@uwaterloo.ca \
--cc=amritha.nambiar@intel.com \
--cc=bagasdotme@gmail.com \
--cc=bjorn@rivosinc.com \
--cc=bpf@vger.kernel.org \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hch@infradead.org \
--cc=horms@kernel.org \
--cc=jdamato@fastly.com \
--cc=kuba@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=m2shafiei@uwaterloo.ca \
--cc=namangulati@google.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=peter@typeblog.net \
--cc=sdf@fomichev.me \
--cc=skhawaja@google.com \
--cc=sridhar.samudrala@intel.com \
--cc=willemdebruijn.kernel@gmail.com \
--cc=willy@infradead.org \
/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).