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