From: Jason Xing Date: Fri, 12 Apr 2024 03:07:18 +0000 (+0800) Subject: net: save some cycles when doing skb_attempt_defer_free() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=4d0470b9ad73e965f5a1e52f1deb0edbb6d03c89;p=linux.git net: save some cycles when doing skb_attempt_defer_free() Normally, we don't face these two exceptions very often meanwhile we have some chance to meet the condition where the current cpu id is the same as skb->alloc_cpu. One simple test that can help us see the frequency of this statement 'cpu == raw_smp_processor_id()': 1. running iperf -s and iperf -c [ip] -P [MAX CPU] 2. using BPF to capture skb_attempt_defer_free() I can see around 4% chance that happens to satisfy the statement. So moving this statement at the beginning can save some cycles in most cases. Signed-off-by: Jason Xing Reviewed-by: Alexander Lobakin Signed-off-by: David S. Miller --- diff --git a/net/core/skbuff.c b/net/core/skbuff.c index ea052fa710d89..37c858dc11a6e 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -6965,9 +6965,9 @@ void skb_attempt_defer_free(struct sk_buff *skb) unsigned int defer_max; bool kick; - if (WARN_ON_ONCE(cpu >= nr_cpu_ids) || - !cpu_online(cpu) || - cpu == raw_smp_processor_id()) { + if (cpu == raw_smp_processor_id() || + WARN_ON_ONCE(cpu >= nr_cpu_ids) || + !cpu_online(cpu)) { nodefer: kfree_skb_napi_cache(skb); return; }