madvise.2: MADV_WIPEONFORK affects semantics
PATCH 1/1 madvise.2: MADV_WIPEONFORK affects semantics
Include MADV_WIPEONFORK in the list of advice values that have a semantic impact on the calling process.
--- man2/madvise.2 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
man2/madvise.2 +3 -1
@@ -84,21 +84,23 @@ values have been added. The .I advice values listed below allow an application to tell the kernel how it expects to use some mapped or shared memory areas, so that the kernel can choose appropriate read-ahead and caching techniques. These .I advice values do not influence the semantics of the application (except in the case of -.BR MADV_DONTNEED ), +.BR MADV_DONTNEED +and +.BR MADV_WIPEONFORK ), but may influence its performance. All of the .I advice values listed here have analogs in the POSIX-specified .BR posix_madvise (3) function, and the values have the same meanings, with the exception of .BR MADV_DONTNEED . .PP The advice is indicated in the .I advice
Signature · 1 line
2.26.0
Hi Adam!
* Adam Langley <[email protected]>, 2020-04-28, 17:40:
Quoted 9 lines
These
.I advice
values do not influence the semantics of the application (except in the case of
-.BRMADV_DONTNEED),
+.BRMADV_DONTNEED
+and
+.BRMADV_WIPEONFORK),
but may influence its performance.
This sentence is in the "Conventional advice value" subsection, which defines only MADV_NORMAL, MADV_RANDOM, MADV_SEQUENTIAL, MADV_WILLNEED, and MADV_DONTNEED.
MADV_WIPEONFORK is defined in the "Linux-specific advice values" subsection, which already notes that "some of these operations change the semantics of memory accesses". (Perhaps s/some/most/ would be better wording.)
Signature · 1 line
Jakub Wilk
Hello Jakub (and Adam),
Quoted 14 lines · Jakub Wilk
Hi Adam!
* Adam Langley <[email protected]>, 2020-04-28, 17:40:
Quoted 9 lines
These
.I advice
values do not influence the semantics of the application (except in the case of
-.BRMADV_DONTNEED),
+.BRMADV_DONTNEED
+and
+.BRMADV_WIPEONFORK),
but may influence its performance.
Quoted 3 lines
This sentence is in the "Conventional advice value" subsection, which defines only
MADV_NORMAL,MADV_RANDOM,MADV_SEQUENTIAL,MADV_WILLNEED, andMADV_DONTNEED.
(Good catch.)
Quoted 3 lines
MADV_WIPEONFORKis defined in the "Linux-specific advice values" subsection, which already notes that "some of these operations change the semantics of memory accesses".
<nod>
Quoted 2 lines
(Perhaps s/some/most/ would be better
wording.)
Perhaps you are right. Here's my take:
Do change memory semantics:MADV_REMOVEMADV_DONTFORK / MADV_DOFORKMADV_HWPOISONMADV_FREEMADV_WIPEONFORK
Don't change memory semantics:MADV_MERGEABLE / MADV_UNMERGEABLEMADV_SOFT_OFFLINEMADV_HUGEPAGE / MADV_NOHUGEPAGEMADV_DONTDUMP / MADV_DODUMP
Do you agree?
"Some" is perhaps a little loose, but perhaps "most" is overstating it, so I'm not quite sure what to do here. Perhaps ad a line to each of the operations in the first category noting that the operations change memory semantics. THoughts?
Cheers,
Michael
Signature · 3 lines
Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/
Quoted 8 lines · Jakub Wilk
This sentence is in the "Conventional advice value" subsection, which defines only
MADV_NORMAL,MADV_RANDOM,MADV_SEQUENTIAL,MADV_WILLNEED, andMADV_DONTNEED.
MADV_WIPEONFORKis defined in the "Linux-specific advice values" subsection, which already notes that "some of these operations change the semantics of memory accesses". (Perhaps s/some/most/ would be better wording.)
Ah, thank you! Now that I look with that in mind, it makes sense.
AGL