Message ID | 20240827114916.223377-1-edumazet@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 0870b0d8b393dde53106678a1e2cec9dfa52f9b7 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net: busy-poll: use ktime_get_ns() instead of local_clock() | expand |
On Tue, Aug 27, 2024 at 11:49:16AM +0000, Eric Dumazet wrote: > Typically, busy-polling durations are below 100 usec. > > When/if the busy-poller thread migrates to another cpu, > local_clock() can be off by +/-2msec or more for small > values of HZ, depending on the platform. > > Use ktimer_get_ns() to ensure deterministic behavior, > which is the whole point of busy-polling. > > Fixes: 060212928670 ("net: add low latency socket poll") > Fixes: 9a3c71aa8024 ("net: convert low latency sockets to sched_clock()") > Fixes: 37089834528b ("sched, net: Fixup busy_loop_us_clock()") > Signed-off-by: Eric Dumazet <edumazet@google.com> > Cc: Mina Almasry <almasrymina@google.com> > Cc: Willem de Bruijn <willemb@google.com> > Cc: Joe Damato <jdamato@fastly.com> > --- > include/net/busy_poll.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/net/busy_poll.h b/include/net/busy_poll.h > index 9b09acac538eed8dbaa2576bf2af926ecd98eb44..522f1da8b747ac73578d8fd93301d31835a6dae0 100644 > --- a/include/net/busy_poll.h > +++ b/include/net/busy_poll.h > @@ -68,7 +68,7 @@ static inline bool sk_can_busy_loop(struct sock *sk) > static inline unsigned long busy_loop_current_time(void) > { > #ifdef CONFIG_NET_RX_BUSY_POLL > - return (unsigned long)(local_clock() >> 10); > + return (unsigned long)(ktime_get_ns() >> 10); > #else > return 0; > #endif > -- > 2.46.0.295.g3b9ea8a38a-goog Makes sense to me, thanks. Reviewed-by: Joe Damato <jdamato@fastly.com>
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Tue, 27 Aug 2024 11:49:16 +0000 you wrote: > Typically, busy-polling durations are below 100 usec. > > When/if the busy-poller thread migrates to another cpu, > local_clock() can be off by +/-2msec or more for small > values of HZ, depending on the platform. > > Use ktimer_get_ns() to ensure deterministic behavior, > which is the whole point of busy-polling. > > [...] Here is the summary with links: - [net] net: busy-poll: use ktime_get_ns() instead of local_clock() https://git.kernel.org/netdev/net/c/0870b0d8b393 You are awesome, thank you!
diff --git a/include/net/busy_poll.h b/include/net/busy_poll.h index 9b09acac538eed8dbaa2576bf2af926ecd98eb44..522f1da8b747ac73578d8fd93301d31835a6dae0 100644 --- a/include/net/busy_poll.h +++ b/include/net/busy_poll.h @@ -68,7 +68,7 @@ static inline bool sk_can_busy_loop(struct sock *sk) static inline unsigned long busy_loop_current_time(void) { #ifdef CONFIG_NET_RX_BUSY_POLL - return (unsigned long)(local_clock() >> 10); + return (unsigned long)(ktime_get_ns() >> 10); #else return 0; #endif
Typically, busy-polling durations are below 100 usec. When/if the busy-poller thread migrates to another cpu, local_clock() can be off by +/-2msec or more for small values of HZ, depending on the platform. Use ktimer_get_ns() to ensure deterministic behavior, which is the whole point of busy-polling. Fixes: 060212928670 ("net: add low latency socket poll") Fixes: 9a3c71aa8024 ("net: convert low latency sockets to sched_clock()") Fixes: 37089834528b ("sched, net: Fixup busy_loop_us_clock()") Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Mina Almasry <almasrymina@google.com> Cc: Willem de Bruijn <willemb@google.com> Cc: Joe Damato <jdamato@fastly.com> --- include/net/busy_poll.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)