linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Christophe LEROY <christophe.leroy@c-s.fr>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v2] powerpc/mm: Fix growth direction for hugepages mmaps with slice
Date: Fri, 19 Jan 2018 15:35:21 +0530	[thread overview]
Message-ID: <87mv1ayxi6.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <87y3kuz559.fsf@linux.vnet.ibm.com>


Did a reply instead of reply-all.

Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> writes:

> Christophe LEROY <christophe.leroy@c-s.fr> writes:
>
>> Le 17/01/2018 =C3=A0 04:19, Aneesh Kumar K.V a =C3=A9crit=C2=A0:
>>>=20
>>>=20
>>> On 01/16/2018 10:18 PM, Christophe LEROY wrote:
>>>>
>>>>
>>>> Le 16/01/2018 =C3=A0 17:03, Aneesh Kumar K.V a =C3=A9crit=C2=A0:
>>>>> Christophe Leroy <christophe.leroy@c-s.fr> writes:
>>>>>
>>>>>> An application running with libhugetlbfs fails to allocate
>>>>>> additional pages to HEAP due to the hugemap being done
>>>>>> inconditionally as topdown mapping:
>>>>>>
>>>>>> mmap(0x10080000, 1572864, PROT_READ|PROT_WRITE,=20
>>>>>> MAP_PRIVATE|MAP_ANONYMOUS|0x40000, -1, 0) =3D 0x73e80000
>>>>>> [...]
>>>>>> mmap(0x74000000, 1048576, PROT_READ|PROT_WRITE,=20
>>>>>> MAP_PRIVATE|MAP_ANONYMOUS|0x40000, -1, 0x180000) =3D 0x73d80000
>>>>>> munmap(0x73d80000, 1048576)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D 0
>>>>>> [...]
>>>>>> mmap(0x74000000, 1572864, PROT_READ|PROT_WRITE,=20
>>>>>> MAP_PRIVATE|MAP_ANONYMOUS|0x40000, -1, 0x180000) =3D 0x73d00000
>>>>>> munmap(0x73d00000, 1572864)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D 0
>>>>>> [...]
>>>>>> mmap(0x74000000, 1572864, PROT_READ|PROT_WRITE,=20
>>>>>> MAP_PRIVATE|MAP_ANONYMOUS|0x40000, -1, 0x180000) =3D 0x73d00000
>>>>>> munmap(0x73d00000, 1572864)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D 0
>>>>>> [...]
>>>>>>
>>>>>
>>>>> Can you explain the failure details above. I am not sure I understand
>>>>> what to read from the above output.
>>>>
>>>> libhugetlbfs first requests an area of size 1.5Mbytes, at address=20
>>>> 0x10080000
>>>> mmap() returns an area at address 0x73e80000
>>>>
>>>> Then libhugetlbfs requests an additional area on top of that, ie at=20
>>>> address 0x74000000, to expand the heap.
>>>> But mmap() returns an area at address 0x73d80000, ie under the=20
>>>> previous area.
>>>>
>>>=20
>>>=20
>>> Can you share the test details?. Why does it not fail on book3s64? We=20
>>> use topdown search with book3s64.
>>
>> I don't know about book3s64, I only have 8xx.
>>
>> Here is my test app:
>>
>
> The test ran fine on ppc64.
>
> kvaneesh@ltctulc6a-p1:[~]$ HUGETLB_MORECORE=3Dyes ./a.out=20
> 10000000-10010000 r-xp 00000000 fc:00 9044312                            =
/home/kvaneesh/a.out
> 10010000-10020000 r--p 00000000 fc:00 9044312                            =
/home/kvaneesh/a.out
> 10020000-10030000 rw-p 00010000 fc:00 9044312                            =
/home/kvaneesh/a.out
> 7ffff7d60000-7ffff7f10000 r-xp 00000000 fc:00 9250090                    =
/lib/powerpc64le-linux-gnu/libc-2.23.so
> 7ffff7f10000-7ffff7f20000 r--p 001a0000 fc:00 9250090                    =
/lib/powerpc64le-linux-gnu/libc-2.23.so
> 7ffff7f20000-7ffff7f30000 rw-p 001b0000 fc:00 9250090                    =
/lib/powerpc64le-linux-gnu/libc-2.23.so
> 7ffff7f40000-7ffff7f60000 r-xp 00000000 fc:00 10754812                   =
/usr/lib/libhugetlbfs.so.0
> 7ffff7f60000-7ffff7f70000 r--p 00010000 fc:00 10754812                   =
/usr/lib/libhugetlbfs.so.0
> 7ffff7f70000-7ffff7f80000 rw-p 00020000 fc:00 10754812                   =
/usr/lib/libhugetlbfs.so.0
> 7ffff7f80000-7ffff7fa0000 r-xp 00000000 00:00 0                          =
[vdso]
> 7ffff7fa0000-7ffff7fe0000 r-xp 00000000 fc:00 9250107                    =
/lib/powerpc64le-linux-gnu/ld-2.23.so
> 7ffff7fe0000-7ffff7ff0000 r--p 00030000 fc:00 9250107                    =
/lib/powerpc64le-linux-gnu/ld-2.23.so
> 7ffff7ff0000-7ffff8000000 rw-p 00040000 fc:00 9250107                    =
/lib/powerpc64le-linux-gnu/ld-2.23.so
> 7ffffffd0000-800000000000 rw-p 00000000 00:00 0                          =
[stack]
>
>
> Allocated 1Mbytes at 0x10000000010
>
>
> Allocated 1Mbytes at 0x10002000020
>
>
> Allocated 1Mbytes at 0x10004000030
>
> 10000000-10010000 r-xp 00000000 fc:00 9044312                            =
/home/kvaneesh/a.out
> 10010000-10020000 r--p 00000000 fc:00 9044312                            =
/home/kvaneesh/a.out
> 10020000-10030000 rw-p 00010000 fc:00 9044312                            =
/home/kvaneesh/a.out
> 10000000000-10003000000 rw-p 00000000 00:0d 1041435                      =
/anon_hugepage (deleted)
> 10003000000-10005000000 rw-p 03000000 00:0d 1041436                      =
/anon_hugepage (deleted)
> 10005000000-10007000000 rw-p 05000000 00:0d 1041437                      =
/anon_hugepage (deleted)
> 7ffff7d60000-7ffff7f10000 r-xp 00000000 fc:00 9250090                    =
/lib/powerpc64le-linux-gnu/libc-2.23.so
> 7ffff7f10000-7ffff7f20000 r--p 001a0000 fc:00 9250090                    =
/lib/powerpc64le-linux-gnu/libc-2.23.so
> 7ffff7f20000-7ffff7f30000 rw-p 001b0000 fc:00 9250090                    =
/lib/powerpc64le-linux-gnu/libc-2.23.so
> 7ffff7f40000-7ffff7f60000 r-xp 00000000 fc:00 10754812                   =
/usr/lib/libhugetlbfs.so.0
> 7ffff7f60000-7ffff7f70000 r--p 00010000 fc:00 10754812                   =
/usr/lib/libhugetlbfs.so.0
> 7ffff7f70000-7ffff7f80000 rw-p 00020000 fc:00 10754812                   =
/usr/lib/libhugetlbfs.so.0
> 7ffff7f80000-7ffff7fa0000 r-xp 00000000 00:00 0                          =
[vdso]
> 7ffff7fa0000-7ffff7fe0000 r-xp 00000000 fc:00 9250107                    =
/lib/powerpc64le-linux-gnu/ld-2.23.so
> 7ffff7fe0000-7ffff7ff0000 r--p 00030000 fc:00 9250107                    =
/lib/powerpc64le-linux-gnu/ld-2.23.so
> 7ffff7ff0000-7ffff8000000 rw-p 00040000 fc:00 9250107                    =
/lib/powerpc64le-linux-gnu/ld-2.23.so
> 7ffffffd0000-800000000000 rw-p 00000000 00:00 0                          =
[stack]
>
>
>
> So i am definitely missing something. I understand that generic hugetlb
> get unmapped area always search bottom up and 8xx used to depend on that
> callback. But on ppc64 slice based get unmapped area always did topdown
> and I am not sure whether we should change that. More over I don't think
> MAP_GROWSDOWN is the right flag for selecting topdown/bottom up search.
>
>
> Is it that libhugetlbfs does something specific for 32 bit? Other option
> is to add huget_get_unmapped_area for 8xx that does bottom up search?
>
> If you are on ppc64 irc on freenode we can discuss this there.
> -aneesh

  parent reply	other threads:[~2018-01-19 10:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-09 10:18 [PATCH v2] powerpc/mm: Fix growth direction for hugepages mmaps with slice Christophe Leroy
2018-01-16 16:03 ` Aneesh Kumar K.V
2018-01-16 16:48   ` Christophe LEROY
2018-01-17  3:19     ` Aneesh Kumar K.V
2018-01-17 11:11       ` Christophe LEROY
     [not found]         ` <87y3kuz559.fsf@linux.vnet.ibm.com>
2018-01-19 10:05           ` Aneesh Kumar K.V [this message]
2018-01-22  8:22             ` Christophe LEROY

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=87mv1ayxi6.fsf@linux.vnet.ibm.com \
    --to=aneesh.kumar@linux.vnet.ibm.com \
    --cc=christophe.leroy@c-s.fr \
    --cc=linuxppc-dev@lists.ozlabs.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 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).