Re: MADV_DONTNEED semantics? Was: [RFC PATCH] mm: madvise: Ignore repeated MADV_DONTNEED hints

From: Michal Hocko
Date: Thu Feb 05 2015 - 10:41:13 EST


On Wed 04-02-15 20:24:27, Michael Kerrisk wrote:
[...]
> 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
"

Would be more precise IMO because reload might be interpreted as a major
fault which is not necessarily the case (see below).

> (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.

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.
"
--
Michal Hocko
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/