As I had reported in rc2, the lcore variables allocation have a noticeable impact on applications consuming DPDK, even when such applications does not use DPDK, or use features associated to some lcore variables.
While the amount has been reduced in a rush before rc2, there are still cases when the increased memory footprint is noticed like in scaling tests. See https://bugs.launchpad.net/ubuntu/+source/dpdk/+bug/2090931 lcore variable allocations in constructor is a bad idea, as the application consuming DPDK has no control over such allocation: linking some code does not mean that all of it will be used at runtime. The general question on whether lcore variables in constructor should be forbidden, is left to a later discussion. For now, this series only focus on fixing subsystems using lcore variables so that those allocations are deferred either in rte_eal_init() or in the path that does require such lcore variables. -- David Marchand Changes since v1: - added a check on lcore handle, - fixed lcore variable size in lib/power, - renamed/introduced allocation helpers, David Marchand (5): eal: check lcore variable handle random: defer seeding to EAL init power: defer lcore variable allocation power: reduce memory footprint of per-lcore state eal/x86: defer power intrinsics variable allocation lib/eal/common/eal_private.h | 6 ++++++ lib/eal/common/rte_random.c | 7 +++++-- lib/eal/freebsd/eal.c | 2 ++ lib/eal/include/rte_lcore_var.h | 2 ++ lib/eal/linux/eal.c | 2 ++ lib/eal/windows/eal.c | 2 ++ lib/eal/x86/rte_power_intrinsics.c | 15 +++++++++++++-- lib/power/rte_power_pmd_mgmt.c | 29 ++++++++++++++++++++--------- 8 files changed, 52 insertions(+), 13 deletions(-) -- 2.47.0