Skip to content

Commit

Permalink
Fix the number of elements in mempool
Browse files Browse the repository at this point in the history
the second parameter of function rte_mempool_create should
be "n modulo cache_size == 0" but not (2^q - 1).

The issue is some elements will always stay in the pool and
will never be used if "n modulo cache_size != 0".

Change-Id: I34555faffb09efb744dc34a384eaff152dc675b8
Closes-Bug: #1786767
Signed-off-by: Yi Yang <yi.y.yang@intel.com>
  • Loading branch information
yi-y-yang committed Aug 13, 2018
1 parent fd383bf commit c2c9835
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 18 deletions.
15 changes: 1 addition & 14 deletions dpdk/dpdk_vrouter.c
Expand Up @@ -178,15 +178,10 @@ vr_dpdk_pktmbuf_init(struct rte_mempool *mp, void *opaque_arg, void *_m, unsigne
static int
dpdk_mempools_create(void)
{
#if (RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 0))
unsigned int rss_mempool_sz = vr_mempool_sz - 1;
unsigned int frag_direct_mempool_sz = VR_DPDK_FRAG_DIRECT_MEMPOOL_SZ - 1;
unsigned int frag_indirect_mempool_sz = VR_DPDK_FRAG_INDIRECT_MEMPOOL_SZ - 1;
#else
unsigned int rss_mempool_sz = vr_mempool_sz;
unsigned int frag_direct_mempool_sz = VR_DPDK_FRAG_DIRECT_MEMPOOL_SZ;
unsigned int frag_indirect_mempool_sz = VR_DPDK_FRAG_INDIRECT_MEMPOOL_SZ;
#endif

/* Create the mbuf pool used for RSS */
vr_dpdk.rss_mempool = rte_mempool_create("rss_mempool",
rss_mempool_sz,
Expand Down Expand Up @@ -226,11 +221,7 @@ dpdk_mempools_create(void)
#if VR_DPDK_USE_HW_FILTERING
int ret, i;
char mempool_name[RTE_MEMPOOL_NAMESIZE];
#if (RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 0))
unsigned int vm_mempool_sz = VR_DPDK_VM_MEMPOOL_SZ - 1;
#else
unsigned int vm_mempool_sz = VR_DPDK_VM_MEMPOOL_SZ;
#endif

/* Create a list of free mempools */
vr_dpdk.nb_free_mempools = 0;
Expand Down Expand Up @@ -509,11 +500,7 @@ dpdk_argv_update(void)
char *io_core_mask_str;
char *fwd_core_mask_str;
static char lcores_string[VR_DPDK_STR_BUF_SZ];
#if (RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 0))
unsigned int rss_mempool_sz = vr_mempool_sz - 1;
#else
unsigned int rss_mempool_sz = vr_mempool_sz;
#endif

/* get number of available CPUs */
system_cpus_count = sysconf(_SC_NPROCESSORS_CONF);
Expand Down
4 changes: 0 additions & 4 deletions dpdk/vr_dpdk_usocket.c
Expand Up @@ -703,11 +703,7 @@ __usock_read(struct vr_usocket *usockp)
static struct vr_usocket *
usock_alloc(unsigned short proto, unsigned short type)
{
#if (RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 0))
unsigned int pkt0_mempool_sz = PKT0_MBUF_POOL_SIZE - 1;
#else
unsigned int pkt0_mempool_sz = PKT0_MBUF_POOL_SIZE;
#endif
int sock_fd = -1, domain, ret;
/* socket TX buffer size = (hold flow table entries * size of jumbo frame) */
int setsocksndbuff = vr_flow_hold_limit * vr_packet_sz;
Expand Down

0 comments on commit c2c9835

Please sign in to comment.