Messages in this thread | | | From | Linus Torvalds <> | Date | Tue, 27 Jun 2023 16:02:40 -0700 | Subject | Re: [GIT PULL] x86/misc for 6.5 |
| |
On Tue, 27 Jun 2023 at 15:51, Arjan van de Ven <arjan@linux.intel.com> wrote: > > I'm not surprised though; running 2 parallel streams (where one stream has a fixed zero as input, > so can run OOO any time) .. can really have a performance change like this
How much do people care?
One of the advantages of just having that single "update_csum_40b()" function is that it's trivial to then manually unroll.
With a 4-way unrolling, I get
02: 184.0 / 184.5 cycles (8b414316) Upcoming linux kernel version 04: 184.0 / 184.2 cycles (8b414316) Specialized to size 40 06: 89.4 / 102.5 cycles (512daed6) New version 22: 184.6 / 184.4 cycles (8b414316) Odd-alignment handling removed
but doesn't most network hardware do the csum on its own anyway? How critical is csum_partial(), really?
(The above is obviously your test thing modified for 1500 byte packets, still. With 40-byte packets, the 4-way unrolling obvious doesn't help, although it doesn't noticeably hurt either - it's just one more compare and branch)
Linus
| |