Traditionally, DPDK has had a direct mapping of internal lcore-ids, to the actual core numbers in use. With higher core count servers becoming more prevalent the issue becomes one of increasing memory footprint when using such a scheme, due to the need to have all arrays dimensioned for all cores on the system, whether or not those cores are in use by the app.
Therefore, the decision was made in the past to not expand the build-time RTE_MAX_LCORE value beyond 128. Instead, it was recommended that users use the "--lcores" EAL parameter to take the high-numbered cores they wish to use and map them to lcore-ids within the 0 - 128 range. While this works, this is a little clunky as it means that instead of just passing, for example, "-l 130-139", the user must instead pass "--lcores 0@130,1@131,2@132,3@133,...." This patchset attempts to simplify the situation by adding a new flag to do this mapping automatically. To use cores 130-139 and map them to ids 0-9 internally, the EAL args now become: "-l 130-139 --map-lcore-ids". Adding this new parameter required some rework of the existing arg parsing code, because in current DPDK the args are parsed and checked in the order they appear on the commandline. This means that using the example above, the core parameter 130-139 will be rejected immediately before the "map-lcore-ids" parameter is seen. To work around this, the core (and service core) parameters are not parsed when seen, instead they are only saved off and parsed after all arguments are parsed. The "-l" and "-c" parameters are converted into "--lcores" arguments, so all assigning of lcore ids is done there in all cases. TODOs and requests-for-feedback: - is there a suitable single-letter abbreviation we could use for this mapping option. For example, if using "x" it would mean we could use e.g. "-xl 130-139" for core options. - still printfs in the code. This is to make it clearer for anyone testing what is happening. - doc updates - will be done if feedback is positive to move from RFC to proper patch. Bruce Richardson (3): eal: centralize core parameter parsing eal: convert core masks and lists to core sets eal: allow automatic mapping of high lcore ids drivers/event/dlb2/dlb2_priv.h | 2 - drivers/event/dlb2/pf/base/dlb2_resource.c | 48 +-- lib/eal/common/eal_common_options.c | 338 +++++++-------------- lib/eal/common/eal_options.h | 2 + lib/eal/include/rte_eal.h | 2 +- 5 files changed, 126 insertions(+), 266 deletions(-) -- 2.43.0