> -----Original Message----- > From: Don Wallwork <d...@xsightlabs.com> > Sent: Wednesday, May 4, 2022 03:47 > To: Wang, Haiyue <haiyue.w...@intel.com>; dev@dpdk.org > Cc: step...@networkplumber.org; m...@smartsharesystems.com; Burakov, Anatoly > <anatoly.bura...@intel.com>; > dmitry.kozl...@gmail.com; Richardson, Bruce <bruce.richard...@intel.com>; > honnappa.nagaraha...@arm.com; > n...@arm.com > Subject: Re: [PATCH] eal: allow worker lcore stacks to be allocated from > hugepage memory > > On 5/3/2022 9:08 AM, Wang, Haiyue wrote: > >> -----Original Message----- > >> From: Don Wallwork <d...@xsightlabs.com> > >> Sent: Monday, May 2, 2022 22:11 > >> To: dev@dpdk.org > >> Cc: d...@xsightlabs.com; step...@networkplumber.org; > >> m...@smartsharesystems.com; Burakov, Anatoly > >> <anatoly.bura...@intel.com>; dmitry.kozl...@gmail.com; Richardson, Bruce > <bruce.richard...@intel.com>; > >> honnappa.nagaraha...@arm.com; n...@arm.com > >> Subject: [PATCH] eal: allow worker lcore stacks to be allocated from > >> hugepage memory > >> > >> Add support for using hugepages for worker lcore stack memory. The > >> intent is to improve performance by reducing stack memory related TLB > >> misses and also by using memory local to the NUMA node of each lcore. > >> > >> EAL option '--huge-worker-stack [stack-size-kbytes]' is added to allow > >> the feature to be enabled at runtime. If the size is not specified, > >> the system pthread stack size will be used. > >> > >> Signed-off-by: Don Wallwork <d...@xsightlabs.com> > >> --- > >> lib/eal/common/eal_common_options.c | 31 ++++++++++++++ > >> lib/eal/common/eal_internal_cfg.h | 4 ++ > >> lib/eal/common/eal_options.h | 2 + > >> lib/eal/linux/eal.c | 65 ++++++++++++++++++++++++++++- > >> 4 files changed, 100 insertions(+), 2 deletions(-) > >> > >> diff --git a/lib/eal/common/eal_common_options.c > >> b/lib/eal/common/eal_common_options.c > >> index f247a42455..be9db9ee37 100644 > >> --- a/lib/eal/common/eal_common_options.c > >> +++ b/lib/eal/common/eal_common_options.c > >> @@ -103,6 +103,7 @@ eal_long_options[] = { > >> {OPT_TELEMETRY, 0, NULL, OPT_TELEMETRY_NUM }, > >> {OPT_NO_TELEMETRY, 0, NULL, OPT_NO_TELEMETRY_NUM }, > >> {OPT_FORCE_MAX_SIMD_BITWIDTH, 1, NULL, OPT_FORCE_MAX_SIMD_BITWIDTH_NUM}, > >> + {OPT_HUGE_WORKER_STACK, 2, NULL, OPT_HUGE_WORKER_STACK_NUM }, > >> > >> {0, 0, NULL, 0 } > >> }; > >> @@ -1618,6 +1619,22 @@ eal_parse_huge_unlink(const char *arg, struct > >> hugepage_file_discipline *out) > >> return -1; > >> } > >> > >> +static int > >> +eal_parse_huge_worker_stack(const char *arg, size_t > >> *huge_worker_stack_size) > >> +{ > >> + size_t worker_stack_size; > >> + if (arg == NULL) { > >> + *huge_worker_stack_size = USE_OS_STACK_SIZE; > >> + return 0; > >> + } > >> + worker_stack_size = atoi(arg); > >> + if (worker_stack_size == 0) > >> + return -1; > > Should we also to check "worker_stack_size *1024 < PTHREAD_STACK_MIN" ? > This may be too restrictive in certain environments. For example, > memory constrained platforms may require a smaller worker stack size > than this limit would allow.
Understood, thanks. > >> + > >> + *huge_worker_stack_size = worker_stack_size * 1024; > >> + return 0; > >> +} > >> + > > > >> -- > >> 2.17.1