From: "Gonzalez Monroy, Sergio" <sergio.gonzalez.monroy-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Jay Rolette <rolette-bIuJOMs36aleGPcbtGPokg@public.gmane.org>
Cc: DPDK <dev-VfR2kkLFssw@public.gmane.org>
Subject: Re: [PATCH] eal: decrease the memory init time with many hugepages setup
Date: Fri, 03 Apr 2015 10:04:38 +0100 [thread overview]
Message-ID: <551E57A6.9070405@intel.com> (raw)
In-Reply-To: <CADNuJVpPYTx5eJW9rLqp2GcoHN3AqHyrGs-H5GMjGd=8emicBg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On 02/04/2015 14:41, Jay Rolette wrote:
> On Thu, Apr 2, 2015 at 7:55 AM, Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
> wrote:
>
>> 2015-04-02 19:30, jerry.lilijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org:
>>> From: Lilijun <jerry.lilijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
>>>
>>> In the function map_all_hugepages(), hugepage memory is truly allocated
>> by
>>> memset(virtaddr, 0, hugepage_sz). Then it costs about 40s to finish the
>>> dpdk memory initialization when 40000 2M hugepages are setup in host os.
>> Yes it's something we should try to reduce.
>>
> I have a patch in my tree that does the same opto, but it is commented out
> right now. In our case, 2/3's of the startup time for our entire app was
> due to that particular call - memset(virtaddr, 0, hugepage_sz). Just
> zeroing 1 byte per huge page reduces that by 30% in my tests.
>
> The only reason I have it commented out is that I didn't have time to make
> sure there weren't side-effects for DPDK or my app. For normal shared
> memory on Linux, pages are initialized to zero automatically once they are
> touched, so the memset isn't required but I wasn't sure whether that
> applied to huge pages. Also wasn't sure how hugetlbfs factored into the
> equation.
>
> Hopefully someone can chime in on that. Would love to uncomment the opto :)
>
I think the opto/patch is good ;)
I had a look at the Linux kernel sources (mm/hugetlb.c)and at least
since 2.6.32 (minimum
Linux kernel version supported by DPDK) the kernel clears the hugepage
(clear_huge_page)
when it faults (hugetlb_no_page).
Primary DPDK apps do clear_hugedir, clearing previously allocated
hugepages, thus triggering
hugepage faults (hugetlb_no_page) during map_all_hugepages.
Note that even when we exit a primary DPDK app, hugepages remain
allocated, reason why
apps such as dump_cfg are able to retrieve config/memory information.
Sergio
>> In fact we can only write one byte to finish the allocation.
>>
>> Isn't it a security hole?
>>
> Not necessarily. If the kernel pre-zeros the huge pages via CoW like normal
> pages, then definitely not.
>
> Even if the kernel doesn't pre-zero the pages, if DPDK takes care of
> properly initializing memory structures on startup as they are carved out
> of the huge pages, then it isn't a security hole. However, that approach is
> susceptible to bit rot... You can audit the code and make sure everything
> is kosher at first, but you have to worry about new code making assumptions
> about how memory is initialized.
>
>
>> This article speaks about "prezeroing optimizations" in Linux kernel:
>> http://landley.net/writing/memory-faq.txt
>
> I read through that when I was trying to figure out what whether huge pages
> were pre-zeroed or not. It doesn't talk about huge pages much beyond why
> they are useful for reducing TLB swaps.
>
> Jay
>
>
next prev parent reply other threads:[~2015-04-03 9:04 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-02 11:30 [PATCH] eal: decrease the memory init time with many hugepages setup jerry.lilijun-hv44wF8Li93QT0dZR+AlfA
[not found] ` <1427974230-8572-1-git-send-email-jerry.lilijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2015-04-02 12:55 ` Thomas Monjalon
2015-04-02 13:41 ` Jay Rolette
[not found] ` <CADNuJVpPYTx5eJW9rLqp2GcoHN3AqHyrGs-H5GMjGd=8emicBg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-03 9:04 ` Gonzalez Monroy, Sergio [this message]
[not found] ` <551E57A6.9070405-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-04-03 9:14 ` Thomas Monjalon
2015-04-03 9:37 ` Lilijun
2015-04-03 12:00 ` Gonzalez Monroy, Sergio
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=551E57A6.9070405@intel.com \
--to=sergio.gonzalez.monroy-ral2jqcrhueavxtiumwx3w@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=rolette-bIuJOMs36aleGPcbtGPokg@public.gmane.org \
/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.