Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Feb 2004 14:00:39 +0000
From:      ml@fruitbat.demon.co.uk
To:        "Brooks Davis" <brooks@one-eyed-alien.net>
Cc:        freebsd-amd64@freebsd.org
Subject:   Re: malloc() over 4Gb
Message-ID:  <E1AsjId-0007tY-0V@anchor-post-31.mail.demon.net>
In-Reply-To: <20040126175234.GA28717@Odin.AC.HMC.Edu>

next in thread | previous in thread | raw e-mail | index | archive | help
brooks@one-eyed-alien.net wrote:
> On Sun, Jan 25, 2004 at 01:37:47PM +0000, ml@fruitbat.demon.co.uk wrote:
> > Hi. Could someone clarify whether or not it's possible to malloc()
> > and mmap() chunks of memory > 4Gb in size using FreeBSD/AMD64 and
> > that FreeBSD/AMD64 isn't susceptible to the 4Gb process boundary that
> > 32-bit OSs are restricted by?
>
> It works fine (just remember to set your malloc options to aj before
> mallocing that much memory, it takes a loooong time if you done :-):
> [9:52am] brooks@brimstone (~): uname -a
> FreeBSD brimstone 5.2-CURRENT FreeBSD 5.2-CURRENT #0: Tue Jan  6 13:18:20 P=
> ST 2004     brooks@brimstone:/usr/obj/usr/p4/xname/sys/GENERIC  amd64
> [9:52am] brooks@brimstone (~): ./a
> a.out*    aeroauth*=20
> [9:52am] brooks@brimstone (~): cat foo.c
> #include <stdio.h>
> #include <stdlib.h>
> #include <stdint.h>
> #define GB      (1024*1024*1024)
> int
> main (int argc, char **argv)
> {
>         void *foo;
>         printf("Trying to malloc %zd bytesn", (size_t)7*GB);        foo =3D malloc((size_t)7*GB);
>         foo =3D malloc((size_t)7*GB);        if (foo !=3D NULL)
>         if (foo !=3D NULL)
>                 printf("Successn");        else
>         else
>                 printf("failuren");}
> }
> [9:52am] brooks@brimstone (~): gcc -o foo foo.c
> [9:52am] brooks@brimstone (~): ./foo=20
> Trying to malloc 7516192768 bytes
> Success
> [9:52am] brooks@brimstone (~):=20

Hi. Thanks for that information!

I went out and bought the box and it does indeed seem to malloc() over
4Gb. However, if you change the allocation from 7*GB to 8*GB in your
sample program, it still keels over inside malloc()!

Do you know if there's any sort of 8Gb clamp in this OS?! Cheers!

> -- Brooks

A.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1AsjId-0007tY-0V>