Linux – what is the size limit for mmap

linuxmmap

I am using mmap() to map a shared memory object to a process. My question has two parts:

1) what is the size limit for mmap() to a linux process? (is there such limit?)

2) after the process running a while, I think the process virtual memory address space will be somehow fragmented. Will this impact the max size I can do mmap() in this process?

The linux kernel used is 2.6.27. The size of the shared memory object is around 32MB. I am trying to access what is the possibility that mmap() fails with such shared memory object due to no enough virtual address space.

Best Answer

There is no restriction on mmap size but would depend on the existing address space used by the given process. But it is highly suggested that you dont mmap to a large contiguous virtual address space. Another suggestion would be to use the mmap "just-in-time" when a specific physical address (or a device address) is accessed and unmap once done

Related Topic