On Tue, Dec 17, 2024 at 10:00 AM David Marchand <david.march...@redhat.com> wrote: > > 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.
While I have not done code review of this series, I can confirm that building Open vSwitch against DPDK built with this set of patches resolves the issue outlined in https://bugs.launchpad.net/ubuntu/+source/dpdk/+bug/2090931 as in just linking against DPDK no longer make a program increase its resident size. Acked-by: Frode Nordahl <frode.nord...@canonical.com> Thanks alot for addressing the issue! -- Frode Nordahl > -- > 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 >