Re: Memory Allocation

From: Robert Hancock
Date: Tue Apr 17 2007 - 01:09:31 EST


Brian D. McGrew wrote:
Good evening gents!

I need some help in allocating memory and understanding how the system
allocates memory with physical versus virtual page tables. Please
consider the following snippet of code. Please, no wisecracks about bad
code; it was written in 30 seconds in haste :-)

(snip)

My test machine is a Dell Precision 490 with dual 5140 processors and
3GB of RAM. If I reduced kMaxSize to (2048 * 2048 * 236) is works.
However, I need to allocate an array of char that is (2048 * 2048 * 256)
and maybe even as large at (2048 * 2048 * 512).

Obviously I have enough physical memory in the box to do this. However,
I suspect that I'm running out of page table entries. Please, correct
me if I'm wrong; but if I allocate (2048 * 2048 * 236) it work. When I

Pretty sure you're wrong.

increment to 256 or 512 it fails and it is my suspicion that I just
don't have enough more in kernel memory to allocate this much memory in
user space.

Are you using a 32-bit kernel? If so, most likely you're hitting a limit of the address space layout - there's just not enough room in the address space for an allocation of this size.


Because of a piece of 3rd party hardware, I'm forced to run the kernel
in the 4GB memory model. What I need to be able to do is allocate an
array of char (2048 * 2048 * (up to 512)) in user space *** AND *** I
need the addresses that I get back to be contiguous, that's just the way
my 3rd party hardware works.

I'm inclined to believe that this in not specifically a Linux problem
but maybe an architecture problem??? But maybe there is some kind of
work around in the kernel for it??? I'd find it hard to believe that
I'm the first one that ever needed to use this much memory.

I ran this same code on two difference Macs. One of them a Powerbook G4
with 4GB of RAM and it was successful. The other was a Macbook Pro with
4GB of RAM and it failed. Both running OS 10.4.9. And of course it
runs just lovely on my Sun workstation with Solaris. Thus, I'm thinking
it's an Intel/X86 issue!

How the heck to I get past this problem in Linux on the X86 plateform???

--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@xxxxxxxxxxxxx
Home Page: http://www.roberthancock.com/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/