# ODP runtime configuration options # # This template configuration file (odp-linux-generic.conf) is hardcoded # during configure/build phase and the values defined here are used if # optional ODP_CONFIG_FILE is not set. This configuration file MUST # include all configuration options. # # ODP_CONFIG_FILE can be used to override default values and it doesn't # have to include all available options. The missing options are # replaced with hardcoded default values. # # The options defined here are implementation specific and valid option # values should be checked from the implementation code. # # See libconfig syntax: https://hyperrealm.github.io/libconfig/libconfig_manual.html#Configuration-Files # Mandatory fields odp_implementation = "linux-generic" config_file_version = "0.1.0" # Shared memory options shm: { # Number of cached default size huge pages. These pages are allocated # during odp_init_global() and freed back to the kernel in # odp_term_global(). A value of zero means no pages are cached. # No negative values should be used here, they are reserved for future # implementations. # # ODP will reserve as many huge pages as possible, which may be less # than requested here if the system does not have enough huge pages # available. # # When using process mode threads, this value should be set to 0 # because the current implementation won't work properly otherwise. num_cached_hp = 0 # Allocate internal shared memory using a single virtual address space. # Set to 1 to enable using process mode. single_va = 0 } # DPDK pktio options pktio_dpdk: { # Default options num_rx_desc = 128 num_tx_desc = 512 rx_drop_en = 0 # Driver specific options (use PMD names from DPDK) net_ixgbe: { rx_drop_en = 1 } } # netmap pktio options pktio_netmap: { # Interface specific options virt: { nr_rx_slots = 0 nr_tx_slots = 0 } } queue_basic: { # Maximum queue size. Value must be a power of two. max_queue_size = 8192 # Default queue size. Value must be a power of two. default_queue_size = 4096 } sched_basic: { # Priority level spread. Each priority level is spread into multiple # scheduler internal queues. A higher spread value typically improves # parallelism and thus is better for high thread counts, but causes # uneven service level for low thread counts. Typically, optimal # value is the number of threads using the scheduler. prio_spread = 4 # Burst size configuration per priority. The first array element # represents the highest queue priority. The scheduler tries to get # burst_size_default[prio] events from a queue and stashes those that # cannot be passed to the application immediately. More events than the # default burst size may be returned from application request, but no # more than burst_size_max[prio]. # # Large burst sizes improve throughput, but decrease application # responsiveness to higher priority events due to head of line blocking # caused by a burst of lower priority events. burst_size_default = [ 32, 32, 32, 32, 32, 16, 8, 4] burst_size_max = [255, 255, 255, 255, 255, 16, 16, 8] }