On Thu, Sep 02, 2021 at 10:48:05PM +0800, Kefu Chai wrote: > RTE_MAX_MEMSEG_LISTS = 128 is not enough for some use cases, so add an > option so user can override it.
How big a value do you need? Can you share anything about the use-case where you are hitting this limit? > RTE_MBUF_REFCNT_ATOMIC = 0 is enough for applications like Seastar, > where it's safe to assume that the mbuf refcnt is only updated by a single > core only. > > Signed-off-by: Kefu Chai <tchai...@gmail.com> > --- > config/meson.build | 5 ++++- > config/rte_config.h | 2 -- > meson_options.txt | 5 +++++ > 3 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/config/meson.build b/config/meson.build > index 3b5966ec2f..72dd461198 100644 > --- a/config/meson.build > +++ b/config/meson.build > @@ -301,7 +301,10 @@ if dpdk_conf.get('RTE_ARCH_64') > else # for 32-bit we need smaller reserved memory areas > dpdk_conf.set('RTE_MAX_MEM_MB', 2048) > endif > - > +dpdk_conf.set('RTE_MAX_MEMSEG_LISTS', get_option('max_memseg_lists')) > +if get_option('mbuf_refcnt_atomic') > + dpdk_conf.set('RTE_MBUF_REFCNT_ATOMIC', true) > +endif > > compile_time_cpuflags = [] > subdir(arch_subdir) > diff --git a/config/rte_config.h b/config/rte_config.h > index 590903c07d..0a659f5e1a 100644 > --- a/config/rte_config.h > +++ b/config/rte_config.h > @@ -29,7 +29,6 @@ > > /* EAL defines */ > #define RTE_MAX_HEAPS 32 > -#define RTE_MAX_MEMSEG_LISTS 128 > #define RTE_MAX_MEMSEG_PER_LIST 8192 > #define RTE_MAX_MEM_MB_PER_LIST 32768 > #define RTE_MAX_MEMSEG_PER_TYPE 32768 > @@ -50,7 +49,6 @@ > > /* mbuf defines */ > #define RTE_MBUF_DEFAULT_MEMPOOL_OPS "ring_mp_mc" > -#define RTE_MBUF_REFCNT_ATOMIC 1 > #define RTE_PKTMBUF_HEADROOM 128 > > /* ether defines */ > diff --git a/meson_options.txt b/meson_options.txt > index 0e92734c49..c0e8958797 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -38,6 +38,11 @@ option('max_lcores', type: 'integer', value: 128, > description: > 'maximum number of cores/threads supported by EAL') > option('max_numa_nodes', type: 'integer', value: 32, description: > 'maximum number of NUMA nodes supported by EAL') > +option('max_memseg_lists', type: 'integer', value: 128, description: > + 'maximum number of dynamic arrays holding memsegs') > +option('mbuf_refcnt_atomic', type: 'boolean', value: true, description: > + 'atomically access the mbuf refcnt') > + No blank line after the option. I'd suggest renaming it to "atomic_mbuf_ref_counts" to make the entry name more readable - at the cost of it being longer, unfortunately. /Bruce