Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 05 Jun 2002 23:56:57 -0500
From:      Stephen Montgomery-Smith <stephen@math.missouri.edu>
To:        freebsd-hackers@freebsd.org
Subject:   allocating memory
Message-ID:  <3CFEEB99.AEDC5DB9@math.missouri.edu>

next in thread | raw e-mail | index | archive | help
I have access to a rather large computer (3GB of RAM) and I would like
to write a program to access most of this memory.  I find that I am
unable to malloc more than about 0.5 GB of memory, even if I do it in
small increments.  Now I am trying mmap, and this lets me get to about
2.5 GB of memory (again I ask for the memory in small increments).  What
is it that causes these limitations?

Here is the kind of program I used to find these limits:

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/mman.h>

#define size 100000000
#define nr 100

main() {
  char *a[nr];
  unsigned int i, j;

  for (j=0;j<nr;j++) {
    fprintf(stderr,"Mallocing a[%d] with %d bytes\n",j,size);
    a[j] =
mmap(NULL,size,PROT_READ|PROT_WRITE,MAP_ANON|MAP_NOCORE,-1,0);
    fprintf(stderr,"%d\n",(int)(a[j]));
    if (a[j]==MAP_FAILED) {
      perror("malloc error");
      exit(EXIT_FAILURE);
    }
    fprintf(stderr,"Filling a[%d]\n",j);
    for(i=0;i<size;i++) a[j][i] = i;
    fprintf(stderr,"Done\n");
  }

  while(1){} /* so the program doesn't stop and stays at the top of top
*/
}

-- 
Stephen Montgomery-Smith
stephen@math.missouri.edu
http://www.math.missouri.edu/~stephen

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




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