On Wednesday 30 April 2008, Edward Ruggeri wrote: > I have recently been writing an implementation of the sieve of > Eratosthenes in C. To find all primes less than N, I dynamically > create an array of chars (relatively small datatype) of length N+1 (I > know I don't need to represent evens).
When I wrote my version a long time ago, I made it possible to split the set of possible prime numbers in blocks of managable sizes to avoid this problem :) this ofcourse made the algorithm somewhat slower. (Also I stored the state of 8 odd numbers in one byte, reducing memory usage significantly) > > Everything works great up until around 600 million, at which case > memory allocation fails. At this point, I am asking for 600M chars, > which is about 572MB (I might be failing to take account of offset?). > > My system has about 2GB of memory. Top says: Mem: 159M Active, 1113M > Inact, 185M Wired, 56M Cache, 112M Buf, 481M Free. > > >From the man page, I am not completely clear what these values mean. > > However, I have read elsewhere that memory labeled as inactive should > be available for the heap Yes, it is. > > Is there a limit to how much memory may be allocated to a process? > Any other reasons someone might think of? Yes, there is the datasize limit. limits(1) will show you how much memory each process can allocate. To increase "datasize", set the tunable kern.maxdsiz (more info in tuning(7)). I guess the system is running FreeBSD/i386, because I think the default limit is about ~500MB on FreeBSD/i386. Note that it isn't possible to allow processes to use more than ~3GB of memory on FreeBSD/i386 because of that platform's constraints. More is possible on for example FreeBSD/amd64. > > I am using FreeBSD 6.3-prerelease, with SMP for a Athlon X2 4200+ (if > it makes a difference). Sorry if this is a RTFM question ... > > Sincerely, > > -- Ned Ruggeri Good luck, Pieter de Goeje _______________________________________________ email@example.com mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"