Re: MADV_DONTNEED semantics? Was: [RFC PATCH] mm: madvise: Ignore repeated MADV_DONTNEED hints
From: Minchan Kim <hidden>
Date: 2015-02-09 06:50:59
Also in:
linux-man, linux-mm, lkml
On Fri, Feb 06, 2015 at 04:57:50PM +0100, Michael Kerrisk (man-pages) wrote:
Hi Michael On 02/05/2015 04:41 PM, Michal Hocko wrote:quoted
On Wed 04-02-15 20:24:27, Michael Kerrisk wrote: [...]quoted
So, how about this text: After a successful MADV_DONTNEED operation, the seman‐ tics of memory access in the specified region are changed: subsequent accesses of pages in the range will succeed, but will result in either reloading of the memory contents from the underlying mapped file" result in either providing the up-to-date contents of the underlying mapped file "Thanks! I did something like that. See below.quoted
Would be more precise IMO because reload might be interpreted as a major fault which is not necessarily the case (see below).quoted
(for shared file mappings, shared anonymous mappings, and shmem-based techniques such as System V shared memory segments) or zero-fill-on-demand pages for anonymous private mappings.Yes, this wording is better because many users are not aware of MAP_ANON|MAP_SHARED being file backed in fact and mmap man page doesn't mention that.(Michal, would you have a text to propose to add to the mmap(2) page? Maybe it would be useful to add something there.)quoted
I am just wondering whether it makes sense to mention that MADV_DONTNEED for shared mappings might be surprising and not freeing the backing pages thus not really freeing memory until there is a memory pressure. But maybe this is too implementation specific for a man page. What about the following wording on top of yours? " Please note that the MADV_DONTNEED hint on shared mappings might not lead to immediate freeing of pages in the range. The kernel is free to delay this until an appropriate moment. RSS of the calling process will be reduced however. "Thanks! I added this, but dropped in the word "immediately" in the last sentence, since I assume that was implied. So now we have: After a successful MADV_DONTNEED operation, the seman‐ tics of memory access in the specified region are changed: subsequent accesses of pages in the range will succeed, but will result in either repopulating the mem‐ ory contents from the up-to-date contents of the under‐ lying mapped file (for shared file mappings, shared anonymous mappings, and shmem-based techniques such as System V shared memory segments) or zero-fill-on-demand pages for anonymous private mappings. Note that, when applied to shared mappings, MADV_DONT‐ NEED might not lead to immediate freeing of the pages in the range. The kernel is free to delay freeing the pages until an appropriate moment. The resident set size (RSS) of the calling process will be immediately reduced however.
Looks good. So, I can parse it that anonymous private mappings will lead to immediate freeing of the pages in the range so it's clearly different with MADV_FREE.
The current draft of the page can be found in a branch, http://git.kernel.org/cgit/docs/man-pages/man-pages.git/log/?h=draft_madvise Thanks, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/
-- Kind regards, Minchan Kim -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html