
El 18/07/2013 14:45, Oodini escribió:
Hello,
I use Boost.Interprocess on Windows 2003 Server.
I am experiencing performances troubles. I am trying to understand what happens, and arrived on Microsoft web pages.
I seems that on Windows, shared memory is implemented only through mapped files, and that only a portion of the shared memory is physically in the RAM (this limited number of pages is called "working set").
The Windows API provides some functions for this working set : http://msdn.microsoft.com/en-us/library/windows/desktop/cc441804%28v=vs.85%2...
I would have liked Interprocess wraps the functions GetProcessMemoryInfo() and SetProcessWorkingSetSize(), so that the full shared memory is put in RAM.
Inteprocess can't do that because it's a portable library and POSIX systems don't know what a working set is. You can perfectly call those functions yourself as you don't need any internal Interprocess data to call them. Although shared memory is never guaranteed to be in RAM, you don't any any guarantee with your "process memory" (if memory pressure is detected the OS can swap you heap and/or executable pages to the swap file to free some RAM for other processes). Best, Ion