ring: introduce RTS ring mode
authorKonstantin Ananyev <konstantin.ananyev@intel.com>
Mon, 20 Apr 2020 12:28:24 +0000 (13:28 +0100)
committerDavid Marchand <david.marchand@redhat.com>
Tue, 21 Apr 2020 10:52:55 +0000 (12:52 +0200)
commite6ba4731c0f3a0aa27873ec301d5e9305f1986fd
treeb25cdacb29f4aace14209c97c339b1524ed45377
parentebff988d0c70f13eb40973f81c0939842f41abb2
ring: introduce RTS ring mode

Introduce relaxed tail sync (RTS) mode for MT ring synchronization.
Aim to reduce stall times in case when ring is used on
overcommited cpus (multiple active threads on the same cpu).
The main difference from original MP/MC algorithm is that
tail value is increased not by every thread that finished enqueue/dequeue,
but only by the last one.
That allows threads to avoid spinning on ring tail value,
leaving actual tail value change to the last thread in the update queue.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
devtools/libabigail.abignore
doc/guides/prog_guide/ring_lib.rst
doc/guides/rel_notes/release_20_05.rst
lib/librte_ring/Makefile
lib/librte_ring/meson.build
lib/librte_ring/rte_ring.c
lib/librte_ring/rte_ring.h
lib/librte_ring/rte_ring_core.h
lib/librte_ring/rte_ring_elem.h
lib/librte_ring/rte_ring_rts.h [new file with mode: 0644]
lib/librte_ring/rte_ring_rts_c11_mem.h [new file with mode: 0644]