buffers: bring back cache occupancy improvement 91/40291/3
authorVratko Polak <vrpolak@cisco.com>
Tue, 6 Feb 2024 11:45:59 +0000 (12:45 +0100)
committerDamjan Marion <dmarion@0xa5.net>
Mon, 12 Feb 2024 16:20:31 +0000 (16:20 +0000)
The improvement was removed in 40129,
causing 5-40% regressions in AVF tests.

There is a memory-speed trade-off,
this change prefers speed over memory efficiency.

Ideally, the choice should be configurable,
but that is not easy to achieve, considering
how early is vlib_buffer_main_init called.

Type: fix
Fixes: 038dad7ef29b0b724071edb5f8cc7a9845584454

Change-Id: I4746f3634abe6d233c9d092a372de05b3d1ae4b6
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
src/vlib/buffer.c

index 82fe641..b5200ba 100644 (file)
@@ -473,6 +473,10 @@ vlib_buffer_alloc_size (uword ext_hdr_size, uword data_size)
   uword alloc_size = ext_hdr_size + sizeof (vlib_buffer_t) + data_size;
   alloc_size = round_pow2 (alloc_size, VLIB_BUFFER_ALIGN);
 
+  /* in case when we have even number of 'cachelines', we add one more for
+   * better cache occupancy */
+  alloc_size |= VLIB_BUFFER_ALIGN;
+
   return alloc_size;
 }