Subject: Re: [Boost-bugs] [Boost C++ Libraries] #1975: windows_shared_memory implicitly commits virtual memory
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2008-05-30 17:40:14
#1975: windows_shared_memory implicitly commits virtual memory
----------------------------------------------------+-----------------------
Reporter: Jason Sachs <jsachs_at_[hidden]> | Owner: igaztanaga
Type: Bugs | Status: reopened
Milestone: Boost 1.36.0 | Component: interprocess
Version: Boost 1.35.0 | Severity: Problem
Resolution: | Keywords:
----------------------------------------------------+-----------------------
Changes (by Jason Sachs <jsachs_at_[hidden]>):
* status: closed => reopened
* resolution: invalid =>
Comment:
Replying to [comment:1 igaztanaga]:
> I don't consider this a bug, but a feature. Managing pages on-demand is
not a feature currently provided by Interprocess and I find difficult this
to be managed by Interprocess.
>
> As mentioned, an alternative would be to use several managed segments
created on demand by the user.
I hope you won't take offense if I reopen this. I do agree that managing
arbitrary pages on demand is something unreasonable. However, the problem
I'm facing, and the only thing I'm looking for a resolution, is the
implications of (a) having to specify a fixed maximum size for the
segment, despite possible/probable usage that is much smaller and (b) the
Boost library's only option is to commit all that virtual memory at once
in Windows.
I've looked around a little bit at the source files for
boost::interprocess and it looks like there some facilities in
http://svn.boost.org/svn/boost/trunk/boost/interprocess/detail/managed_memory_impl.hpp
to grow() file sizes. The memory reserved by
CreateFileMapping/MapViewOfFile can't grow, but what if there were a
separate "size" and "max_size" in
http://svn.boost.org/svn/boost/trunk/boost/interprocess/mapped_region.hpp
? (which appears to be the class that calls MapViewOfFile via
map_view_of_file_ex()) "max_size" would represent the argument passed to
CreateFileMapping (with the SEC_RESERVE flag) / MapViewOfFile, and "size"
representing the portion of that memory allocated; calls to grow() would
call VirtualAlloc, not in a haphazard random-access per-page way, but
merely to increase the size used by the shared memory segment, in a
sequential, linear (or exponential if that makes sense) fashion.
--
Ticket URL: <http://svn.boost.org/trac/boost/ticket/1975#comment:3>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:49:57 UTC