env: add --huge-dir option
Allow specifying a custom hugetlbfs directory. This can be useful e.g. when trying to use hugepages with fixed size, different size limit, or different access permissions. Change-Id: I418cbab99ed183383300b3c3d9945095a03478db Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/432105 Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
5240cbbb9a
commit
3e75e90a8e
@ -44,6 +44,7 @@ Param | Long Param | Type | Default | Descript
|
||||
-B | --pci-blacklist | B:D:F | | @ref cmd_arg_pci_blacklist_whitelist.
|
||||
-W | --pci-whitelist | B:D:F | | @ref cmd_arg_pci_blacklist_whitelist.
|
||||
-R | --huge-unlink | flag | | @ref cmd_arg_huge_unlink
|
||||
| | --huge-dir | string | the first discovered | allocate hugepages from a specific mount
|
||||
-L | --traceflag | string | | @ref cmd_arg_debug_log_flags
|
||||
|
||||
|
||||
|
@ -82,6 +82,7 @@ struct spdk_env_opts {
|
||||
bool hugepage_single_segments;
|
||||
bool unlink_hugepage;
|
||||
size_t num_pci_addr;
|
||||
const char *hugedir;
|
||||
struct spdk_pci_addr *pci_blacklist;
|
||||
struct spdk_pci_addr *pci_whitelist;
|
||||
|
||||
|
@ -105,6 +105,7 @@ struct spdk_app_opts {
|
||||
bool no_pci;
|
||||
bool hugepage_single_segments;
|
||||
bool unlink_hugepage;
|
||||
const char *hugedir;
|
||||
enum spdk_log_level print_level;
|
||||
size_t num_pci_addr;
|
||||
struct spdk_pci_addr *pci_blacklist;
|
||||
|
@ -267,6 +267,14 @@ spdk_build_eal_cmdline(const struct spdk_env_opts *opts)
|
||||
}
|
||||
}
|
||||
|
||||
/* use a specific hugetlbfs mount */
|
||||
if (opts->hugedir) {
|
||||
args = spdk_push_arg(args, &argcount, _sprintf_alloc("--huge-dir=%s", opts->hugedir));
|
||||
if (args == NULL) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
#if RTE_VERSION >= RTE_VERSION_NUM(18, 05, 0, 0) && RTE_VERSION < RTE_VERSION_NUM(18, 5, 1, 0)
|
||||
/* Dynamic memory management is buggy in DPDK 18.05.0. Don't use it. */
|
||||
args = spdk_push_arg(args, &argcount, _sprintf_alloc("--legacy-mem"));
|
||||
|
@ -113,6 +113,8 @@ static const struct option g_cmdline_options[] = {
|
||||
{"silence-noticelog", no_argument, NULL, SILENCE_NOTICELOG_OPT_IDX},
|
||||
#define WAIT_FOR_RPC_OPT_IDX 258
|
||||
{"wait-for-rpc", no_argument, NULL, WAIT_FOR_RPC_OPT_IDX},
|
||||
#define HUGE_DIR_OPT_IDX 259
|
||||
{"huge-dir", no_argument, NULL, HUGE_DIR_OPT_IDX},
|
||||
};
|
||||
|
||||
/* Global section */
|
||||
@ -486,6 +488,7 @@ spdk_app_setup_env(struct spdk_app_opts *opts)
|
||||
env_opts.mem_size = opts->mem_size;
|
||||
env_opts.hugepage_single_segments = opts->hugepage_single_segments;
|
||||
env_opts.unlink_hugepage = opts->unlink_hugepage;
|
||||
env_opts.hugedir = opts->hugedir;
|
||||
env_opts.no_pci = opts->no_pci;
|
||||
env_opts.num_pci_addr = opts->num_pci_addr;
|
||||
env_opts.pci_blacklist = opts->pci_blacklist;
|
||||
@ -731,6 +734,7 @@ usage(void (*app_usage)(void))
|
||||
printf(" -R, --huge-unlink unlink huge files after initialization\n");
|
||||
printf(" -W, --pci-whitelist <bdf>\n");
|
||||
printf(" pci addr to whitelist (-B and -W cannot be used at the same time)\n");
|
||||
printf(" --huge-dir <path> use a specific hugetlbfs mount to reserve memory from\n");
|
||||
spdk_tracelog_usage(stdout, "-L");
|
||||
if (app_usage) {
|
||||
app_usage();
|
||||
@ -922,6 +926,9 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
|
||||
goto out;
|
||||
}
|
||||
break;
|
||||
case HUGE_DIR_OPT_IDX:
|
||||
opts->hugedir = optarg;
|
||||
break;
|
||||
case '?':
|
||||
/*
|
||||
* In the event getopt() above detects an option
|
||||
|
Loading…
Reference in New Issue
Block a user