All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Eric Dumazet <edumazet@google.com>
Cc: bpf <bpf@vger.kernel.org>, netdev <netdev@vger.kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Jesper Dangaard Brouer <hawk@kernel.org>,
	John Fastabend <john.fastabend@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH net-next 3/4] net: dev: Makes sure netif_rx() can be invoked in any context.
Date: Thu, 3 Feb 2022 18:45:22 +0100	[thread overview]
Message-ID: <YfwUskgPuOREd9hs@linutronix.de> (raw)
In-Reply-To: <YfwGcHv6XQytcq68@linutronix.de>

On 2022-02-03 17:44:33 [+0100], To Eric Dumazet wrote:
> > I guess the cost of the  local_bh_enable()/local_bh_disable() pair
> > will be roughly the same, please measure it :)
> 
> We would avoid that branch maybe that helps. Will measure.

|  BH OFF/ON     : 722922586
|  BH OFF/ON     : 722931661
|  BH OFF/ON     : 725341486
|  BH OFF/ON     : 725909591
|  BH OFF/ON     : 741705606
|  BH OFF/ON-OPT : 536683873
|  BH OFF/ON-OPT : 536933779
|  BH OFF/ON-OPT : 536967581
|  BH OFF/ON-OPT : 537109700
|  BH OFF/ON-OPT : 537148631

in a tight loop of 100000000 iterations:
BH OFF/ON = local_bh_disable(); local_bh_enable()
BH OFF/ON-OPT = local_bh_disable(); local_bh_enable_opt()
where local_bh_enable_opt() is the proposed function.

725341486 = ~7.3ns for one iteration.
536967581 = ~5.4ns for one iteration.

This is without tracing+lockdep. So I don't need to sell this to peterz
and focus one the previously suggested version.

Sebastian

  reply	other threads:[~2022-02-03 17:45 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-02 12:28 [PATCH net-next 0/4] net: dev: PREEMPT_RT fixups Sebastian Andrzej Siewior
2022-02-02 12:28 ` [PATCH net-next 1/4] net: dev: Remove the preempt_disable() in netif_rx_internal() Sebastian Andrzej Siewior
2022-02-02 17:10   ` Eric Dumazet
2022-02-03 12:00     ` Toke Høiland-Jørgensen
2022-02-03 12:17       ` Sebastian Andrzej Siewior
2022-02-03 12:41         ` Toke Høiland-Jørgensen
2022-02-03 15:50           ` Sebastian Andrzej Siewior
2022-02-04 15:20           ` [PATCH net-next v2 1/4] net: dev: Remove preempt_disable() and get_cpu() " Sebastian Andrzej Siewior
2022-02-04 16:31             ` Jakub Kicinski
2022-02-04 16:42               ` Sebastian Andrzej Siewior
2022-02-04 16:32             ` Eric Dumazet
2022-02-03 12:16     ` [PATCH net-next 1/4] net: dev: Remove the preempt_disable() " Sebastian Andrzej Siewior
2022-02-02 12:28 ` [PATCH net-next 2/4] net: dev: Remove get_cpu() " Sebastian Andrzej Siewior
2022-02-02 17:14   ` Eric Dumazet
2022-02-03 12:14   ` Toke Høiland-Jørgensen
2022-02-02 12:28 ` [PATCH net-next 3/4] net: dev: Makes sure netif_rx() can be invoked in any context Sebastian Andrzej Siewior
2022-02-02 16:50   ` Jakub Kicinski
2022-02-03 12:20     ` Sebastian Andrzej Siewior
2022-02-03 19:38       ` Jakub Kicinski
2022-02-02 17:43   ` Eric Dumazet
2022-02-03 12:19     ` Toke Høiland-Jørgensen
2022-02-03 15:10     ` Sebastian Andrzej Siewior
2022-02-03 15:25       ` Eric Dumazet
2022-02-03 15:40         ` Sebastian Andrzej Siewior
2022-02-03 16:18           ` Eric Dumazet
2022-02-03 16:44             ` Sebastian Andrzej Siewior
2022-02-03 17:45               ` Sebastian Andrzej Siewior [this message]
2022-02-04 13:00             ` [PATCH net-next v2 " Sebastian Andrzej Siewior
2022-02-04 18:46               ` Eric Dumazet
2022-02-02 12:28 ` [PATCH net-next 4/4] net: dev: Make rps_lock() disable interrupts Sebastian Andrzej Siewior
2022-02-02 16:47   ` Jakub Kicinski
2022-02-03 16:41     ` [PATCH net-next v2 " Sebastian Andrzej Siewior
2022-02-03 19:39       ` Jakub Kicinski
2022-02-02 16:14 ` [PATCH net-next 0/4] net: dev: PREEMPT_RT fixups Jakub Kicinski
2022-02-03 11:59   ` Toke Høiland-Jørgensen

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=YfwUskgPuOREd9hs@linutronix.de \
    --to=bigeasy@linutronix.de \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hawk@kernel.org \
    --cc=john.fastabend@gmail.com \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.