xref: /dpdk/doc/guides/mempool/ring.rst (revision 68a03efeed657e6e05f281479b33b51102797e15)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright(c) 2020 Intel Corporation.
3
4Ring Mempool Driver
5===================
6
7**rte_mempool_ring** is a pure software mempool driver based on the
8``rte_ring`` DPDK library. This is a default mempool driver.
9The following modes of operation are available for the ring mempool driver
10and can be selected via mempool ops API:
11
12- ``ring_mp_mc``
13
14  The underlying **rte_ring** operates in multi-thread producer,
15  multi-thread consumer sync mode. For more information please refer to:
16  :ref:`Ring_Library_MPMC_Mode`.
17
18- ``ring_sp_sc``
19
20  The underlying **rte_ring** operates in single-thread producer,
21  single-thread consumer sync mode. For more information please refer to:
22  :ref:`Ring_Library_SPSC_Mode`.
23
24- ``ring_sp_mc``
25
26  The underlying **rte_ring** operates in single-thread producer,
27  multi-thread consumer sync mode.
28
29- ``ring_mp_sc``
30
31  The underlying **rte_ring** operates in multi-thread producer,
32  single-thread consumer sync mode.
33
34- ``ring_mt_rts``
35
36  For underlying **rte_ring** both producer and consumer operate in
37  multi-thread Relaxed Tail Sync (RTS) mode. For more information please
38  refer to: :ref:`Ring_Library_MT_RTS_Mode`.
39
40- ``ring_mt_hts``
41
42  For underlying **rte_ring** both producer and consumer operate in
43  multi-thread Head-Tail Sync (HTS) mode. For more information please
44  refer to: :ref:`Ring_Library_MT_HTS_Mode`.
45
46
47For 'classic' DPDK deployments (with one thread per core) the ``ring_mp_mc``
48mode is usually the most suitable and the fastest one. For overcommitted
49scenarios (multiple threads share same set of cores) the ``ring_mt_rts`` or
50``ring_mt_hts`` modes usually provide a better alternative.
51For more information about ``rte_ring`` structure, behaviour and available
52synchronisation modes please refer to: :doc:`../prog_guide/ring_lib`.
53