1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# 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
}
# 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]
}
|