examples: use mempool cache for vector pool
authorPavan Nikhilesh <pbhagavatula@marvell.com>
Mon, 23 May 2022 09:59:54 +0000 (15:29 +0530)
committerJerin Jacob <jerinj@marvell.com>
Mon, 13 Jun 2022 05:58:25 +0000 (07:58 +0200)
Use mempool cache for vector mempool as vectors are freed by the Tx
routine, also increase the minimum pool size to 512 to avoid resource
contention on Rx.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
examples/ipsec-secgw/event_helper.c
examples/l2fwd-event/main.c
examples/l3fwd/main.c

index 172ab8e..b36f20a 100644 (file)
@@ -820,12 +820,12 @@ eh_rx_adapter_configure(struct eventmode_conf *em_conf,
                                   em_conf->ext_params.vector_size) + 1;
                        if (per_port_pool)
                                nb_elem = nb_ports * nb_elem;
+                       nb_elem = RTE_MAX(512U, nb_elem);
                }
-
+               nb_elem += rte_lcore_count() * 32;
                vector_pool = rte_event_vector_pool_create(
-                       "vector_pool", nb_elem, 0,
-                       em_conf->ext_params.vector_size,
-                       socket_id);
+                       "vector_pool", nb_elem, 32,
+                       em_conf->ext_params.vector_size, socket_id);
                if (vector_pool == NULL) {
                        EH_LOG_ERR("failed to create event vector pool");
                        return -ENOMEM;
index dcc72f3..44303d1 100644 (file)
@@ -678,8 +678,10 @@ main(int argc, char **argv)
 
                vec_size = rsrc->evt_vec.size;
                nb_vec = (nb_mbufs + vec_size - 1) / vec_size;
+               nb_vec = RTE_MAX(512U, nb_vec);
+               nb_vec += rte_lcore_count() * 32;
                rsrc->evt_vec_pool = rte_event_vector_pool_create(
-                       "vector_pool", nb_vec, 0, vec_size, rte_socket_id());
+                       "vector_pool", nb_vec, 32, vec_size, rte_socket_id());
                if (rsrc->evt_vec_pool == NULL)
                        rte_panic("Cannot init event vector pool\n");
        }
index 38091aa..e090328 100644 (file)
@@ -1049,9 +1049,11 @@ init_mem(uint16_t portid, unsigned int nb_mbuf)
 
                        nb_vec = (nb_mbuf + evt_rsrc->vector_size - 1) /
                                 evt_rsrc->vector_size;
+                       nb_vec = RTE_MAX(512U, nb_vec);
+                       nb_vec += rte_lcore_count() * 32;
                        snprintf(s, sizeof(s), "vector_pool_%d", portid);
                        vector_pool[portid] = rte_event_vector_pool_create(
-                               s, nb_vec, 0, evt_rsrc->vector_size, socketid);
+                               s, nb_vec, 32, evt_rsrc->vector_size, socketid);
                        if (vector_pool[portid] == NULL)
                                rte_exit(EXIT_FAILURE,
                                         "Failed to create vector pool for port %d\n",