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