The following assumes we use env_dpdk underneath. rte_mempools use rte_rings internally. When creating a mempool with capacity N, we internally try to create a ring with least N+1 size. That's because rte_rings need one extra empty element to differentiate between the full and empty state. To make it worse, the ring size has to be a power of two, so rte_mempools use `rte_align32pow2(mp->size + 1)` for the size calculation. And rte_ring memory has to be physically contiguous. Allocating a mempool of capacity 262144 requires at least (2 * 262144) * sizeof(void *) = 4MB memory. This made us require at least 2 physically contiguous 2MB hugepages. Change-Id: Iabc984a29a60c0b2cf5309a78cd1bcce28ac7b3d Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/408925 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> |
||
---|---|---|
.. | ||
rpc | ||
subsystems | ||
app.c | ||
Makefile | ||
reactor.c | ||
rpc.c | ||
subsystem.c |