Skip to content

Commit

Permalink
eal: add --in-memory option
Browse files Browse the repository at this point in the history
This command-line option will cause DPDK to operate entirely in
memory and not create any shared files at runtime, including any
shared configuration or hugetlbfs files. This is useful for debug
purposes, as well as for certain use cases like containers or
automatic memory cleanup.

Currently, this option acts as a strict superset of --no-shconf and
--huge-unlink commands.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
  • Loading branch information
anatolyburakov authored and tmonjalo committed Jul 13, 2018
1 parent d435aad commit 14de873
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 4 deletions.
18 changes: 14 additions & 4 deletions lib/librte_eal/common/eal_common_options.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ eal_long_options[] = {
{OPT_NO_HUGE, 0, NULL, OPT_NO_HUGE_NUM },
{OPT_NO_PCI, 0, NULL, OPT_NO_PCI_NUM },
{OPT_NO_SHCONF, 0, NULL, OPT_NO_SHCONF_NUM },
{OPT_IN_MEMORY, 0, NULL, OPT_IN_MEMORY_NUM },
{OPT_PCI_BLACKLIST, 1, NULL, OPT_PCI_BLACKLIST_NUM },
{OPT_PCI_WHITELIST, 1, NULL, OPT_PCI_WHITELIST_NUM },
{OPT_PROC_TYPE, 1, NULL, OPT_PROC_TYPE_NUM },
Expand Down Expand Up @@ -1170,6 +1171,13 @@ eal_parse_common_option(int opt, const char *optarg,
conf->no_shconf = 1;
break;

case OPT_IN_MEMORY_NUM:
conf->in_memory = 1;
/* in-memory is a superset of noshconf and huge-unlink */
conf->no_shconf = 1;
conf->hugepage_unlink = 1;
break;

case OPT_PROC_TYPE_NUM:
conf->process_type = eal_parse_proc_type(optarg);
break;
Expand Down Expand Up @@ -1321,21 +1329,21 @@ eal_check_common_options(struct internal_config *internal_cfg)
"be specified together with --"OPT_NO_HUGE"\n");
return -1;
}

if (internal_cfg->no_hugetlbfs && internal_cfg->hugepage_unlink) {
if (internal_cfg->no_hugetlbfs && internal_cfg->hugepage_unlink &&
!internal_cfg->in_memory) {
RTE_LOG(ERR, EAL, "Option --"OPT_HUGE_UNLINK" cannot "
"be specified together with --"OPT_NO_HUGE"\n");
return -1;
}
if (internal_config.force_socket_limits && internal_config.legacy_mem) {
RTE_LOG(ERR, EAL, "Option --"OPT_SOCKET_LIMIT
" is only supported in non-legacy memory mode\n");
return -1;
}
if (internal_cfg->single_file_segments &&
internal_cfg->hugepage_unlink) {
RTE_LOG(ERR, EAL, "Option --"OPT_SINGLE_FILE_SEGMENTS" is "
"not compatible with --"OPT_HUGE_UNLINK"\n");
"not compatible with neither --"OPT_IN_MEMORY" nor "
"--"OPT_HUGE_UNLINK"\n");
return -1;
}

Expand Down Expand Up @@ -1386,6 +1394,8 @@ eal_common_usage(void)
" Set specific log level\n"
" -v Display version information on startup\n"
" -h, --help This help\n"
" --"OPT_IN_MEMORY" Operate entirely in memory. This will\n"
" disable secondary process support\n"
"\nEAL options for DEBUG use only:\n"
" --"OPT_HUGE_UNLINK" Unlink hugepage files after init\n"
" --"OPT_NO_HUGE" Use malloc instead of hugetlbfs\n"
Expand Down
4 changes: 4 additions & 0 deletions lib/librte_eal/common/eal_internal_cfg.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ struct internal_config {
volatile unsigned vmware_tsc_map; /**< true to use VMware TSC mapping
* instead of native TSC */
volatile unsigned no_shconf; /**< true if there is no shared config */
volatile unsigned in_memory;
/**< true if DPDK should operate entirely in-memory and not create any
* shared files or runtime data.
*/
volatile unsigned create_uio_dev; /**< true to create /dev/uioX devices */
volatile enum rte_proc_type_t process_type; /**< multi-process proc type */
/** true to try allocating memory on specific sockets */
Expand Down
2 changes: 2 additions & 0 deletions lib/librte_eal/common/eal_options.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ enum {
OPT_NO_PCI_NUM,
#define OPT_NO_SHCONF "no-shconf"
OPT_NO_SHCONF_NUM,
#define OPT_IN_MEMORY "in-memory"
OPT_IN_MEMORY_NUM,
#define OPT_SOCKET_MEM "socket-mem"
OPT_SOCKET_MEM_NUM,
#define OPT_SOCKET_LIMIT "socket-limit"
Expand Down

0 comments on commit 14de873

Please sign in to comment.