e1187407b4
Two new sync modes were introduced into rte_ring: relaxed tail sync (RTS) and head/tail sync (HTS). This change provides user with ability to select these modes for ring based mempool via mempool ops API. Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Acked-by: Gage Eads <gage.eads@intel.com>
53 lines
1.8 KiB
ReStructuredText
53 lines
1.8 KiB
ReStructuredText
.. SPDX-License-Identifier: BSD-3-Clause
|
|
Copyright(c) 2020 Intel Corporation.
|
|
|
|
Ring Mempool Driver
|
|
===================
|
|
|
|
**rte_mempool_ring** is a pure software mempool driver based on the
|
|
``rte_ring`` DPDK library. This is a default mempool driver.
|
|
The following modes of operation are available for the ring mempool driver
|
|
and can be selected via mempool ops API:
|
|
|
|
- ``ring_mp_mc``
|
|
|
|
The underlying **rte_ring** operates in multi-thread producer,
|
|
multi-thread consumer sync mode. For more information please refer to:
|
|
:ref:`Ring_Library_MPMC_Mode`.
|
|
|
|
- ``ring_sp_sc``
|
|
|
|
The underlying **rte_ring** operates in single-thread producer,
|
|
single-thread consumer sync mode. For more information please refer to:
|
|
:ref:`Ring_Library_SPSC_Mode`.
|
|
|
|
- ``ring_sp_mc``
|
|
|
|
The underlying **rte_ring** operates in single-thread producer,
|
|
multi-thread consumer sync mode.
|
|
|
|
- ``ring_mp_sc``
|
|
|
|
The underlying **rte_ring** operates in multi-thread producer,
|
|
single-thread consumer sync mode.
|
|
|
|
- ``ring_mt_rts``
|
|
|
|
For underlying **rte_ring** both producer and consumer operate in
|
|
multi-thread Relaxed Tail Sync (RTS) mode. For more information please
|
|
refer to: :ref:`Ring_Library_MT_RTS_Mode`.
|
|
|
|
- ``ring_mt_hts``
|
|
|
|
For underlying **rte_ring** both producer and consumer operate in
|
|
multi-thread Head-Tail Sync (HTS) mode. For more information please
|
|
refer to: :ref:`Ring_Library_MT_HTS_Mode`.
|
|
|
|
|
|
For 'classic' DPDK deployments (with one thread per core) the ``ring_mp_mc``
|
|
mode is usually the most suitable and the fastest one. For overcommitted
|
|
scenarios (multiple threads share same set of cores) the ``ring_mt_rts`` or
|
|
``ring_mt_hts`` modes usually provide a better alternative.
|
|
For more information about ``rte_ring`` structure, behaviour and available
|
|
synchronisation modes please refer to: :doc:`../prog_guide/ring_lib`.
|