From: Stephen Hemminger <stephen@networkplumber.org>
To: "Mattias Rönnblom" <hofors@lysator.liu.se>
Cc: "Morten Brørup" <mb@smartsharesystems.com>,
dev@dpdk.org, "Mattias Rönnblom" <mattias.ronnblom@ericsson.com>,
"David Marchand" <david.marchand@redhat.com>,
thomas@monjalon.net,
"Bruce Richardson" <bruce.richardson@intel.com>,
"Chengwen Feng" <fengchengwen@huawei.com>,
"Konstantin Ananyev" <konstantin.ananyev@huawei.com>
Subject: Re: [PATCH] config: limit lcore variable maximum size to 4k
Date: Mon, 11 Nov 2024 08:54:26 -0800 [thread overview]
Message-ID: <20241111085426.484fc96e@hermes.local> (raw)
In-Reply-To: <be04aae3-5f31-4288-80f3-90c539b9e30f@lysator.liu.se>
On Mon, 11 Nov 2024 08:22:46 +0100
Mattias Rönnblom <hofors@lysator.liu.se> wrote:
> On 2024-11-09 00:52, Morten Brørup wrote:
> >> From: Mattias Rönnblom [mailto:hofors@lysator.liu.se]
> >> Sent: Friday, 8 November 2024 23.23
> >>
> >> On 2024-11-08 20:53, Morten Brørup wrote:
> >>>> From: Morten Brørup [mailto:mb@smartsharesystems.com]
> >>>> Sent: Friday, 8 November 2024 19.35
> >>>>
> >>>>> From: David Marchand [mailto:david.marchand@redhat.com]
> >>>>> Sent: Friday, 8 November 2024 19.18
> >>>>>
> >>>>> OVS locks all pages to avoid page faults while processing packets.
> >>>
> >>> It sounds smart, so I just took a look at how it does this. I'm not
> >> sure, but it seems like it only locks pages that are actually mapped
> >> (current and future).
> >>>
> >>
> >> mlockall(MLOCK_CURRENT) will bring in the whole BSS, it seems. Plus all
> >> the rest like unused parts of the execution stacks, the data section
> >> and
> >> unused code (text) in the binary and all libraries it has linked to.
> >>
> >> It makes a simple (e.g., a unit test) DPDK 24.07 program use ~33x more
> >> residential memory. After lcore variables, the same MLOCK_CURRENT-ed
> >> program is ~30% larger than before. So, a relatively modest increase.
> >
> > Thank you for testing this, Mattias.
> > What are the absolute numbers, i.e. in KB, to get an idea of the numbers I should be looking for?
> >
>
> Hello world type program with static linking. Default DPDK config. x86_64.
>
> DPDK version MAX_LCORE_VAR EAL params mlock RSS [MB]
> 22.11 - --no-huge -m 1000 no 22
> 24.11 1048576 --no-huge -m 1000 no 22
> 24.11 1048576 --no-huge -m 1000 yes 1576
> 24.11 4096 --no-huge -m 1000 yes 1445
> 22.11 - - yes 333*
> 24.11 1048576 - yes 542*
> 24.11 4096 - yes 411*
>
> * Excluding huge pages
>
> If you are more selective what libraries you bring in, the footprint
> will be lower. How large a fraction is effectively unavoidable, I don't
> know. The relative increase will depends on how much memory the
> application uses, obviously. The hello world app doesn't have any
> app-level state.
>
> > I wonder why the footprint grows at all... Intuitively the same variables should consume approximately the same amount of RAM, regardless how they are allocated.
> > Speculating...
>
> lcore variables use malloc(), which in turn does not bring in memory
> pages unless they are needed. Much of the lcore buffer will be unused,
> and not resident. I covered this, including some example calculation of
> the space savings, in an earlier thread. It may be in the programmer's
> guide as well, I don't remember.
I suspect that glibc malloc assumes a virtual memory backed model.
It is lazy about reclaiming memory and grows in large chunks.
This is one of the reasons malloc() is faster than rte_malloc()
for allocation.
https://sourceware.org/glibc/wiki/MallocInternals
next prev parent reply other threads:[~2024-11-11 16:54 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-08 18:17 [PATCH] config: limit lcore variable maximum size to 4k David Marchand
2024-11-08 18:35 ` Morten Brørup
2024-11-08 19:53 ` Morten Brørup
2024-11-08 22:13 ` Thomas Monjalon
2024-11-08 22:34 ` Mattias Rönnblom
2024-11-08 23:11 ` Thomas Monjalon
2024-11-11 6:31 ` Mattias Rönnblom
2024-11-08 22:49 ` Morten Brørup
2024-11-08 22:23 ` Mattias Rönnblom
2024-11-08 23:52 ` Morten Brørup
2024-11-11 7:22 ` Mattias Rönnblom
2024-11-11 16:54 ` Stephen Hemminger [this message]
2024-11-08 22:02 ` Mattias Rönnblom
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241111085426.484fc96e@hermes.local \
--to=stephen@networkplumber.org \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=fengchengwen@huawei.com \
--cc=hofors@lysator.liu.se \
--cc=konstantin.ananyev@huawei.com \
--cc=mattias.ronnblom@ericsson.com \
--cc=mb@smartsharesystems.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.