include/linux/rbtree.h | 32 ++++++++++++++++++++++++++++++-- lib/rbtree.c | 29 ----------------------------- 2 files changed, 30 insertions(+), 31 deletions(-)
Inline these two small helpers, heavily used in TCP and FQ packet scheduler, and in many other places. This reduces kernel text size, and brings an 1.5 % improvement on network TCP stress test. Eric Dumazet (2): rbtree: inline rb_first() rbtree: inline rb_last() include/linux/rbtree.h | 32 ++++++++++++++++++++++++++++++-- lib/rbtree.c | 29 ----------------------------- 2 files changed, 30 insertions(+), 31 deletions(-) -- 2.52.0.rc1.455.g30608eb744-goog
Hi Eric, On Fri, Nov 14, 2025 at 02:06:44PM +0000, Eric Dumazet wrote: > Inline these two small helpers, heavily used in TCP and FQ packet scheduler, > and in many other places. > > This reduces kernel text size, and brings an 1.5 % improvement on network > TCP stress test. Thanks for the patch! Just out of curiosity, do you think rb_first() and rb_last() would be worth marking with __always_inline? Regardless, for the series: Reviewed-by: Kuan-Wei Chiu <visitorckw@gmail.com> Regards, Kuan-Wei > > Eric Dumazet (2): > rbtree: inline rb_first() > rbtree: inline rb_last() > > include/linux/rbtree.h | 32 ++++++++++++++++++++++++++++++-- > lib/rbtree.c | 29 ----------------------------- > 2 files changed, 30 insertions(+), 31 deletions(-) > > -- > 2.52.0.rc1.455.g30608eb744-goog > >
On Sun, Nov 16, 2025 at 10:00 AM Kuan-Wei Chiu <visitorckw@gmail.com> wrote: > > Hi Eric, > > On Fri, Nov 14, 2025 at 02:06:44PM +0000, Eric Dumazet wrote: > > Inline these two small helpers, heavily used in TCP and FQ packet scheduler, > > and in many other places. > > > > This reduces kernel text size, and brings an 1.5 % improvement on network > > TCP stress test. > > Thanks for the patch! > > Just out of curiosity, do you think rb_first() and rb_last() would be > worth marking with __always_inline? I have not seen any difference, what compilers are you using that would not inline this ?
On Sun, Nov 16, 2025 at 10:41:31AM -0800, Eric Dumazet wrote: > On Sun, Nov 16, 2025 at 10:00 AM Kuan-Wei Chiu <visitorckw@gmail.com> wrote: > > > > Hi Eric, > > > > On Fri, Nov 14, 2025 at 02:06:44PM +0000, Eric Dumazet wrote: > > > Inline these two small helpers, heavily used in TCP and FQ packet scheduler, > > > and in many other places. > > > > > > This reduces kernel text size, and brings an 1.5 % improvement on network > > > TCP stress test. > > > > Thanks for the patch! > > > > Just out of curiosity, do you think rb_first() and rb_last() would be > > worth marking with __always_inline? > > I have not seen any difference, what compilers are you using that > would not inline this ? I haven't specifically measured the difference. I was curious if using __always_inline would be better to guarantee the compiler inlines the function, given that the inline keyword is only a suggestion, and this optimization is important for performance in a hot path. Also, FWIW, I tried building an arm64 defconfig with LLVM both with and without __always_inline. I got the same results from size vmlinux, but scripts/bloat-o-meter output is as follows: add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8 (-8) Function old new delta __aarch32_sigret_code_end 24 16 -8 Total: Before=129127208516005098430, After=129127208516005098422, chg -0.00% Regards, Kuan-Wei
© 2016 - 2026 Red Hat, Inc.