Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Dec 2011 18:45:08 +0100
From:      Tijl Coosemans <tijl@coosemans.org>
To:        freebsd-stable@freebsd.org
Cc:        Andriy Gapon <avg@freebsd.org>, Ganael LAPLANCHE <ganael.laplanche@martymac.org>
Subject:   Re: Using mmap(2) with a hint address
Message-ID:  <201112201845.15578.tijl@coosemans.org>
In-Reply-To: <20111220142740.M29405@martymac.org>
References:  <20111220080437.M63044@martymac.org> <20111220134716.M62917@martymac.org> <20111220142740.M29405@martymac.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--nextPart2305471.X94DzsFhl4
Content-Type: Text/Plain;
  charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable

On Tuesday 20 December 2011 15:31:48 Ganael LAPLANCHE wrote:
> On Tue, 20 Dec 2011 15:02:01 +0100 (CET), Ganael LAPLANCHE wrote
>> But there is still something I don't understand : on the Linux
>> machine where I ran my test program, the current RLIMIT_DATA
>> is set to 0xffffffff/0xffffffff and I can manage to mmap at
>> address 0x20000000. If I set the same limit on FreeBSD, I
>> won't get the mapping at 0x20000000. So, there *is* a
>> difference of behaviour between the two systems, but I don't
>> understand why.
>=20
> Well, in fact, two things remain not very clear for me :
>=20
> - Why are mmap()s performed *after* data segment ?
>   =3D> It seems they can go within, on GNU/Linux and NetBSD.

I don't know about NetBSD but Linux maps from the stack downwards when
there's no hint and FreeBSD maps from the program upwards. That means
that on Linux brk and mmap grow toward each other and unless you
allocate a lot of memory they don't compete with each other. On FreeBSD
brk and mmap do compete for the same space and this was resolved by
preserving room for brk and moving mmap allocations further up.

The case with hint lazily follows from that. Linux doesn't have any
restrictions and FreeBSD preserves room for brk and moves the
allocation up.

> - Why do we have such a default value for datasize (8.2, amd64) :
>=20
> $ limits
> Resource limits (current):
>   cputime              infinity secs
>   filesize             infinity kB
>   datasize             33554432 kB
>=20
> this is HUGE !

malloc(3) used to be implemented on top of brk(2) so the size was
increased on amd64 so you could malloc more memory. Nowadays malloc
can use mmap(2) so a large datasize isn't really needed anymore.

> --

That should be "-- " (with space at the end).

> Ganael LAPLANCHE <ganael.laplanche@martymac.org>
> http://www.martymac.org | http://contribs.martymac.org
> FreeBSD: martymac <martymac@FreeBSD.org>, http://www.FreeBSD.org

--nextPart2305471.X94DzsFhl4
Content-Type: application/pgp-signature; name=signature.asc 
Content-Description: This is a digitally signed message part.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (FreeBSD)

iF4EABEIAAYFAk7wyasACgkQfoCS2CCgtitabQD6Ayfas4afLznwteFfMw7eF/6B
k+wSWCPpk37Tv6RrGdYA/iHew12MaB4/D/Pxe6riPrmXWcITn26mWnm0viVtvPP7
=CGLF
-----END PGP SIGNATURE-----

--nextPart2305471.X94DzsFhl4--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201112201845.15578.tijl>