Hi,
I was wondering if some functionality existed in Linux. Specifically,
in Solaris, you can mmap the null device in order to reserve part of the
address space without otherwise consuming resources. This is detailed
in the Solaris manpage null(7D). The same functionality is also
available under Windows NT/XP/2K by calling the VirtualAlloc function
with the MEM_RESERVE flag omitting the MEM_COMMIT flag. Does Linux have
a similar mechanism buried somewhere whereby I can reserve a part of the
address space and not increase the "virtual size" of the process or the
system's idea of the amount of memory in use? I could not find one by
using the source.
Regards,
Rob
On Mon, 2005-01-10 at 15:52 -0500, Robert W. Fuller wrote:
> Hi,
>
> I was wondering if some functionality existed in Linux. Specifically,
> in Solaris, you can mmap the null device in order to reserve part of the
> address space without otherwise consuming resources. This is detailed
> in the Solaris manpage null(7D). The same functionality is also
> available under Windows NT/XP/2K by calling the VirtualAlloc function
> with the MEM_RESERVE flag omitting the MEM_COMMIT flag. Does Linux have
> a similar mechanism buried somewhere whereby I can reserve a part of the
> address space and not increase the "virtual size" of the process or the
> system's idea of the amount of memory in use? I could not find one by
> using the source.
malloc() already does this...
what you describe is the default behavior of linux; only when you
actually write to the memory does it get backed by ram.
This is not quite the same thing. This still does a check for whether
or not there is enough memory and includes this in the virtual size of
the process. I simply want to reserve a part of the address space so
I'm guaranteed I can map something else over a contiguous portion of the
address space. I don't want it to check for available memory or
increase the virtual size of the process because I will be using this
region sparsely. That is why Solaris and Windows have separate
interfaces for this.
Arjan van de Ven wrote:
> On Mon, 2005-01-10 at 15:52 -0500, Robert W. Fuller wrote:
>
>>Hi,
>>
>>I was wondering if some functionality existed in Linux. Specifically,
>>in Solaris, you can mmap the null device in order to reserve part of the
>>address space without otherwise consuming resources. This is detailed
>>in the Solaris manpage null(7D). The same functionality is also
>>available under Windows NT/XP/2K by calling the VirtualAlloc function
>>with the MEM_RESERVE flag omitting the MEM_COMMIT flag. Does Linux have
>>a similar mechanism buried somewhere whereby I can reserve a part of the
>>address space and not increase the "virtual size" of the process or the
>>system's idea of the amount of memory in use? I could not find one by
>>using the source.
>
>
> malloc() already does this...
> what you describe is the default behavior of linux; only when you
> actually write to the memory does it get backed by ram.
Arjan van de Ven wrote:
> On Mon, 2005-01-10 at 15:52 -0500, Robert W. Fuller wrote:
>
>>Hi,
>>
>>I was wondering if some functionality existed in Linux. Specifically,
>>in Solaris, you can mmap the null device in order to reserve part of the
>>address space without otherwise consuming resources. This is detailed
>>in the Solaris manpage null(7D). The same functionality is also
>>available under Windows NT/XP/2K by calling the VirtualAlloc function
>>with the MEM_RESERVE flag omitting the MEM_COMMIT flag. Does Linux have
>>a similar mechanism buried somewhere whereby I can reserve a part of the
>>address space and not increase the "virtual size" of the process or the
>>system's idea of the amount of memory in use? I could not find one by
>>using the source.
>
>
> malloc() already does this...
> what you describe is the default behavior of linux; only when you
> actually write to the memory does it get backed by ram.
>
>
Sorry about the top posting. This is a resend without it.
This is not quite the same thing. This still does a check for whether
or not there is enough memory and includes this in the virtual size of
the process. I simply want to reserve a part of the address space so
I'm guaranteed I can map something else over a contiguous portion of the
address space. I don't want it to check for available memory or
increase the virtual size of the process because I will be using this
region sparsely. That is why Solaris and Windows have separate
interfaces for this.
> >
>
> Sorry about the top posting. This is a resend without it.
>
> This is not quite the same thing. This still does a check for whether
> or not there is enough memory
no it doesn't
> and includes this in the virtual size of
> the process.
because the virtual size is taken.... by the reservation
> I simply want to reserve a part of the address space so
> I'm guaranteed I can map something else over a contiguous portion of the
> address space. I don't want it to check for available memory or
> increase the virtual size of the process because I will be using this
> region sparsely. That is why Solaris and Windows have separate
> interfaces for this.
well you can mmap /dev/zero.. but that's about the same as malloc.