]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
time/timecounter: Inline timecounter_cyc2time()
authorEric Dumazet <edumazet@google.com>
Sat, 29 Nov 2025 09:57:40 +0000 (09:57 +0000)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 15 Dec 2025 19:16:49 +0000 (20:16 +0100)
commit4725344462362e2ce2645f354737a8ea4280fa57
treed36ff2113a472ffc82fff7d3b6d63a551cec3017
parent8f0b4cce4481fb22653697cced8d0d04027cb1e8
time/timecounter: Inline timecounter_cyc2time()

New network transport protocols want NIC drivers to get hardware timestamps
of all incoming packets, and possibly all outgoing packets.

One example is the upcoming 'Swift congestion control' which is used by TCP
transport and is the primary need for timecounter_cyc2time(). This means
timecounter_cyc2time() can be called more than 100 million times per second
on a busy server.

Inlining timecounter_cyc2time() brings a 12% improvement on a UDP receive
stress test on a 100Gbit NIC.

Note that FDO, LTO, PGO are unable to magically help for this case,
presumably because NIC drivers are almost exclusively shipped as modules.

Add an unlikely() around the cc_cyc2ns_backwards() case, even if FDO (when
used) is able to take care of this optimization.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://research.google/pubs/swift-delay-is-simple-and-effective-for-congestion-control-in-the-datacenter/
Link: https://patch.msgid.link/20251129095740.3338476-1-edumazet@google.com
include/linux/timecounter.h
kernel/time/timecounter.c