From: "孙世龙 sunshilong" <sunshilong369@gmail.com>
To: David Rientjes <rientjes@google.com>
Cc: David Hildenbrand <david@redhat.com>, linux-mm@kvack.org
Subject: Re: Are there still some methods that could be used by the Linux kernel to reduce memory fragmentation while both CONFIG-MIGRATION and CONFIG-COMPACTION are disabled?
Date: Thu, 25 Jun 2020 11:22:16 +0800 [thread overview]
Message-ID: <CAAvDm6YzPcMyqGJ5dLDSBjWe-gnZMBo+aJTjfAsxQo1kY9dXtw@mail.gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.22.394.2006241017580.261553@chino.kir.corp.google.com>
[-- Attachment #1: Type: text/plain, Size: 6039 bytes --]
Hi,David Rientjes, David Hildenbrand
Thanks a lot to both of you.
>Grouping pages by mobility simply means that we attempt (best
>effort) to allocate unmovable pages from the same pageblocks and movable
>pages from the same pageblocks.
How can I understand it in the right way, especially for "from the same
pageblocks"? Could you please explain that in more detail?
>Yes, you can use kernelcore= (or movablecore=) on the kernel command line
>to set this up: allocations from this zone must have __GFP_MOVABLE so
>they "should" be migratable. This is typically only useful when
>CONFIG_COMPACTION is enabled, however, to do that defragmentation work so
>that higher order memory becomes available.
I was very hopeful for this method(i.e. ZONE_MOVABLE).
It's really bad news. As the subject, I have no choice other than disabling
these options(i.e. CONFIG-MIGRATION and CONFIG-COMPACTION)
since I am using a real-time OS(i.e. it needs a patch to the Linux kernel
and some kconfig options should be disabled).
Are there still some methods that could be used by the Linux kernel
to reduce memory fragmentation?
>> Is there some potential problems that I should be aware of if I enable
>> "ZONE_MOVABLE" on real-time system?
>>
>Yes, if ZONE_MOVABLE is made too big then you can risk out of memory
>kills: movable allocations can fallback to ZONE_NORMAL but unmovable
>allocations cannot graduate to ZONE_MOVABLE. So if ZONE_NORMAL is full
>(either because you have too much unmovable memory in-use or too much
>movable fell back to ZONE_NORMAL), and you have more unmovable
>allocations, you'll get reclaim in ZONE_NORMAL and, at worst case, oom
>kills.
I can draw the conclusion that ZONE_NORMAL is only used to allocate
unmovable memory(i.e. no movable memory could be allocated from
ZONE_NORMAL) while "kernelcore= (or movablecore=)" option is set.
Am I right?
As the kernel without such option(i.e. kernelcore= or movablecore=), there
are
both movable memory and unmovable memory in ZONE_NORMAL.
For details, see the footnote.
It's different with the option and without the option:
Only unmovable memory could be allocated from ZONE_NORMAL while the option
is set whereas both unmovable and movable could be allocated from it
without
setting the option.
Am I right?
Here is part of the output when executing "sudo cat /proc/pagetypeinfo" on
the platform
without the option(i.e. kernelcore= or movablecore=):
Free pages count per migrate type at order
0 1 2 3 4 5 6 7 8 9 10
DMA, type Unmovable 0 1 1 0 2 1 1 0 1 0 0
DMA, type Movable 0 0 0 0 0 0 0 0 0 1 3
DMA, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0
DMA, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0
DMA, type Isolate 0 0 0 0 0 0 0 0 0 0 0
DMA32, type Unmovable 1 0 0 0 0 0 1 1 1 1 0
DMA32, type Movable 8 6 7 5 5 4 6 5 2 2 723
DMA32, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0
DMA32, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0
DMA32, type Isolate 0 0 0 0 0 0 0 0 0 0 0
Normal, type Unmovable 0 23 9 2 1 1 0 1 10 11 0
Normal, type Movable 1 791 767 630 111 11 5 5 2 0 929
Normal, type Reclaimable 0 2 4 2 2 1 1 1 1 1 0
Normal, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0
Normal, type Isolate 0 0 0 0 0 0 0 0 0 0 0
Number of blocks type Unmovable Movable Reclaimable HighAtomic Isolate
Node 0, zone DMA 1 7 0 0 0
Node 0, zone DMA32 2 1526 0 0 0
Node 0, zone Normal 160 2318 74 0 0
Best regards.
David Rientjes <rientjes@google.com> 于2020年6月25日周四 上午1:22写道:
> On Wed, 24 Jun 2020, 孙世龙 sunshilong wrote:
>
> > >> Are there still some methods that could be used by the Linux kernel
> > >> to reduce memory fragmentation while both CONFIG-MIGRATION
> > >> and CONFIG-COMPACTION are disabled?
> > >
> > >
> > >We do have mobility grouping on pageblock order.
> > >Also, I think you can use ZONE_MOVABLE without migration and compaction,
> > >to at least locally limit unmovable fragmentation.
> > It's a good news.
> >
> > Could you please explain that in more detail for me or suggest some
> documents
> > for me to go through.
> >
>
> /proc/buddyinfo and /proc/pagetypeinfo will show the various pageblocks on
> the system. Grouping pages by mobility simply means that we attempt (best
> effort) to allocate unmovable pages from the same pageblocks and movable
> pages from the same pageblocks.
>
> > As per the post(
> http://lkml.iu.edu/hypermail/linux/kernel/1703.1/06782.html),
> > I think it's something like ZONE_NORMAL. And I find that
> > "ZONE_MOVEABLE" is available on Linux-v4.9.
> >
>
> Yes, you can use kernelcore= (or movablecore=) on the kernel command line
> to set this up: allocations from this zone must have __GFP_MOVABLE so they
> "should" be migratable. This is typically only useful when
> CONFIG_COMPACTION is enabled, however, to do that defragmentation work so
> that higher order memory becomes available.
>
> > Is there some potential problems that I should be aware of if I enable
> > "ZONE_MOVABLE" on real-time system?
> >
>
> Yes, if ZONE_MOVABLE is made too big then you can risk out of memory
> kills: movable allocations can fallback to ZONE_NORMAL but unmovable
> allocations cannot graduate to ZONE_MOVABLE. So if ZONE_NORMAL is full
> (either because you have too much unmovable memory in-use or too much
> movable fell back to ZONE_NORMAL), and you have more unmovable
> allocations, you'll get reclaim in ZONE_NORMAL and, at worst case, oom
> kills.
[-- Attachment #2: Type: text/html, Size: 7311 bytes --]
next prev parent reply other threads:[~2020-06-25 3:22 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-23 15:52 Are there still some methods that could be used by the Linux kernel to reduce memory fragmentation while both CONFIG-MIGRATION and CONFIG-COMPACTION are disabled? 孙世龙 sunshilong
2020-06-24 9:53 ` David Hildenbrand
2020-06-24 11:16 ` 孙世龙 sunshilong
2020-06-24 17:22 ` David Rientjes
2020-06-25 3:22 ` 孙世龙 sunshilong [this message]
2020-06-28 3:27 ` David Rientjes
2020-06-28 5:15 ` 孙世龙 sunshilong
2020-06-28 20:39 ` David Rientjes
-- strict thread matches above, loose matches on Subject: below --
2020-06-23 15:39 孙世龙 sunshilong
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=CAAvDm6YzPcMyqGJ5dLDSBjWe-gnZMBo+aJTjfAsxQo1kY9dXtw@mail.gmail.com \
--to=sunshilong369@gmail.com \
--cc=david@redhat.com \
--cc=linux-mm@kvack.org \
--cc=rientjes@google.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).