Date: Wed, 23 Nov 2005 15:15:18 -0500 From: Michael Conlen <m@obmail.net> To: =?ISO-8859-1?Q?Arne_W=F6rner?= <arne_woerner@yahoo.com> Cc: freebsd-performance@freebsd.org Subject: Re: mmap() Message-ID: <61C1776C-7192-41D8-AE6E-65319B141259@obmail.net> In-Reply-To: <20051123195647.27712.qmail@web30307.mail.mud.yahoo.com> References: <20051123195647.27712.qmail@web30307.mail.mud.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Nov 23, 2005, at 2:56 PM, Arne W=F6rner wrote: > --- Michael Conlen <m@obmail.net> wrote: >> On Nov 23, 2005, at 1:20 PM, Arne W=F6rner wrote: >>> Maybe the stack size matters in ur case somehow? I can see, >> that >>> it is limited to 1GB, isn't it? >>> >>> I found something funny, too: >>>> limit >>> cputime unlimited >>> filesize unlimited >>> datasize 524288 kbytes >>> stacksize 65536 kbytes >>> coredumpsize unlimited >>> memoryuse unlimited >>> vmemoryuse unlimited >>> descriptors 6861 >>> memorylocked unlimited >>> maxproc 3430 >>> sbsize unlimited >>>> c++ -o mmap mmap.c >>>> ./mmap 757254143 >>> sz2d22c7ff00000 r673435648 errno0 >>>> cat mmap.c >>> #include <sys/mman.h> >>> #include <stdio.h> >>> #include <errno.h> >>> #include <stdlib.h> >>> >>> int main(const int argc, char ** argv) { >>> void * r =3D >>> >> > mmap(0,atoi(argv[argc-1])*1024LL*1024,0,MAP_ANON|MAP_PRIVATE,-1,0); >>> printf("sz%llx r%d >>> errno%d\n",atoi(argv[argc-1])*1024LL*1024,r,errno); >>> return 0; >>> } >>> <EOF> >>> >>> -Arne >>> >> >> At this point I have updated the kernel to include >> 2 GB for stack and data size and edited the >> loader.conf to include those options as well >> with the same result. I really believe the system is >> being limited elsewhere. >> > But why can I get so much memory (722TB) with mmap (even with the > default MAXDSIZ in my kernel)? > > Maybe we use mmap(2) the wrong way (I just used it with files: I > found it fancier to write to a file via mmap(2)'ed memory)? Well, I'm not trying to use mmap() this way per say, java 1.4.2 and =20 1.5.0 built from ports is. I have verified that I can malloc() much more memory that I can mmap=20 (). I'm looking at the code for mmap() and I can't find a resource =20 limit that would normally return ENOMEM that is set too low. -- Michael Conlen=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?61C1776C-7192-41D8-AE6E-65319B141259>