public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE
@ 2010-06-19  8:47 Michael Kerrisk
  2010-06-19  8:58 ` Andi Kleen
  2010-06-20  0:02 ` Hugh Dickins
  0 siblings, 2 replies; 8+ messages in thread
From: Michael Kerrisk @ 2010-06-19  8:47 UTC (permalink / raw)
  To: hugh.dickins, ieidus; +Cc: Andi Kleen, lkml, Andrew Morton, linux-man

Hello Hugh, Izik

For the MADV_MERGEABLE + MADV_UNMERGEABLE changes added in 2.6.32,
I've written the following man-pages text. Could you please
review/fix/ACK.

Thanks to Andi and Andrew for pointers that this documentation was needed.

Thanks,

Michael


--- a/man2/madvise.2
+++ b/man2/madvise.2
@@ -156,6 +157,42 @@ and the page being unmapped.
 This feature is intended for memory testing.
 This feature is only available if the kernel was configured with
 .BR CONFIG_MEMORY_FAILURE .
+.TP
+.BR MADV_MERGEABLE " (since Linux 2.6.32)"
+Enable Kernel Samepage Merging (KSM) for the pages in the range specified by
+.I addr
+and
+.IR len .
+The KSM daemon
+.RI ( ksmd )
+periodically scans those areas of user memory that have
+been marked as mergeable,
+looking for pages with identical content.
+These are replaced by a single write-protected page (which is automatically
+copied if a process later wants to update the content of the page).
+KSM only merges private anonymous pages (see
+.BR mmap (2)).
+The KSM feature is intended for applications that generate many
+instances of the same data (e.g., virtualization systems such as KVM).
+It can consume a lot of processing power; use with care.
+See the kernel source file
+.I Documentation/vm/ksm.txt
+for more details.
+The
+.BR MADV_MERGEABLE
+and
+.BR MADV_UNMERGEABLE
+operations are only available if the kernel was configured with
+.BR CONFIG_KSM.
+.TP
+.BR MADV_UNMERGEABLE " (since Linux 2.6.32)"
+Undo the effect of an earlier
+.BR MADV_MERGEABLE
+operation on the specified address range;
+KSM unmerges whatever pages it had merged in the address rnage specified by
+.IR addr
+and
+.IR length .
 .SH "RETURN VALUE"
 On success
 .BR madvise ()
@@ -189,6 +226,14 @@ is not a valid value
 .IP *
 The application is attempting to release locked or shared pages (with
 .BR MADV_DONTNEED ).
+.IP *
+.BR MADV_MERGEABLE
+or
+.BR MADV_UNMERGEABLE
+was specified in
+.IR advice ,
+but the kernel was not configured with
+.BR CONFIG_KSM .
 .RE
 .TP
 .B EIO
@@ -221,8 +266,10 @@ for file access.
 .BR MADV_REMOVE ,
 .BR MADV_DONTFORK ,
 .BR MADV_DOFORK ,
+.BR MAD_HWPOISON ,
+.BR MADVISE_MERGEABLE ,
 and
-.BR MAD_HWPOISON
+.BR MADVISE_UNMERGEABLE
 are Linux-specific.
 .SH NOTES
 .SS "Linux Notes"

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE
  2010-06-19  8:47 man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE Michael Kerrisk
@ 2010-06-19  8:58 ` Andi Kleen
  2010-06-19 12:22   ` Michael Kerrisk
  2010-06-20  0:02 ` Hugh Dickins
  1 sibling, 1 reply; 8+ messages in thread
From: Andi Kleen @ 2010-06-19  8:58 UTC (permalink / raw)
  To: Michael Kerrisk
  Cc: hugh.dickins, ieidus, Andi Kleen, lkml, Andrew Morton, linux-man

> +.IR len .
> +The KSM daemon
> +.RI ( ksmd )

You should probably make clear it's a kernel thread, not a classic
daemon.

> +periodically scans those areas of user memory that have
> +been marked as mergeable,
> +looking for pages with identical content.

Overall it seems like an internal implementation detail.

-Andi
-- 
ak@linux.intel.com -- Speaking for myself only.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE
  2010-06-19  8:58 ` Andi Kleen
@ 2010-06-19 12:22   ` Michael Kerrisk
  2010-06-19 12:29     ` Andi Kleen
  0 siblings, 1 reply; 8+ messages in thread
From: Michael Kerrisk @ 2010-06-19 12:22 UTC (permalink / raw)
  To: Andi Kleen; +Cc: hugh.dickins, lkml, Andrew Morton, linux-man

Hi Andi,

On Sat, Jun 19, 2010 at 10:58 AM, Andi Kleen <andi@firstfloor.org> wrote:
>> +.IR len .
>> +The KSM daemon
>> +.RI ( ksmd )
>
> You should probably make clear it's a kernel thread, not a classic
> daemon.

Thanks. I changed it to "KSM kernel thread"

>> +periodically scans those areas of user memory that have
>> +been marked as mergeable,
>> +looking for pages with identical content.
>
> Overall it seems like an internal implementation detail.

Not sure how I could improve this. Did you have some specific idea in mind?

Thanks,

Michael


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Author of "The Linux Programming Interface" http://blog.man7.org/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE
  2010-06-19 12:22   ` Michael Kerrisk
@ 2010-06-19 12:29     ` Andi Kleen
  2010-06-19 12:38       ` Michael Kerrisk
  0 siblings, 1 reply; 8+ messages in thread
From: Andi Kleen @ 2010-06-19 12:29 UTC (permalink / raw)
  To: Michael Kerrisk; +Cc: Andi Kleen, hugh.dickins, lkml, Andrew Morton, linux-man

On Sat, Jun 19, 2010 at 02:22:33PM +0200, Michael Kerrisk wrote:
> Hi Andi,
> 
> On Sat, Jun 19, 2010 at 10:58 AM, Andi Kleen <andi@firstfloor.org> wrote:
> >> +.IR len .
> >> +The KSM daemon
> >> +.RI ( ksmd )
> >
> > You should probably make clear it's a kernel thread, not a classic
> > daemon.
> 
> Thanks. I changed it to "KSM kernel thread"
> 
> >> +periodically scans those areas of user memory that have
> >> +been marked as mergeable,
> >> +looking for pages with identical content.
> >
> > Overall it seems like an internal implementation detail.
> 
> Not sure how I could improve this. Did you have some specific idea in mind?

Just dropping the sentence or using soft language like "the kernel regularly
attempts to merge pages" 

-Andi

-- 
ak@linux.intel.com -- Speaking for myself only.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE
  2010-06-19 12:29     ` Andi Kleen
@ 2010-06-19 12:38       ` Michael Kerrisk
  0 siblings, 0 replies; 8+ messages in thread
From: Michael Kerrisk @ 2010-06-19 12:38 UTC (permalink / raw)
  To: Andi Kleen; +Cc: hugh.dickins, lkml, Andrew Morton, linux-man

Hi Andi,

On Sat, Jun 19, 2010 at 2:29 PM, Andi Kleen <andi@firstfloor.org> wrote:
> On Sat, Jun 19, 2010 at 02:22:33PM +0200, Michael Kerrisk wrote:
>> Hi Andi,
>>
>> On Sat, Jun 19, 2010 at 10:58 AM, Andi Kleen <andi@firstfloor.org> wrote:
>> >> +.IR len .
>> >> +The KSM daemon
>> >> +.RI ( ksmd )
>> >
>> > You should probably make clear it's a kernel thread, not a classic
>> > daemon.
>>
>> Thanks. I changed it to "KSM kernel thread"
>>
>> >> +periodically scans those areas of user memory that have
>> >> +been marked as mergeable,
>> >> +looking for pages with identical content.
>> >
>> > Overall it seems like an internal implementation detail.
>>
>> Not sure how I could improve this. Did you have some specific idea in mind?
>
> Just dropping the sentence or using soft language like "the kernel regularly
> attempts to merge pages"

Thanks. I reworded like as you suggest.

Cheers,

Michael


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Author of "The Linux Programming Interface" http://blog.man7.org/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE
  2010-06-19  8:47 man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE Michael Kerrisk
  2010-06-19  8:58 ` Andi Kleen
@ 2010-06-20  0:02 ` Hugh Dickins
  2010-06-20  5:36   ` Michael Kerrisk
  1 sibling, 1 reply; 8+ messages in thread
From: Hugh Dickins @ 2010-06-20  0:02 UTC (permalink / raw)
  To: Michael Kerrisk; +Cc: ieidus, Andi Kleen, lkml, Andrew Morton, linux-man

Hi Michael,

On Sat, 19 Jun 2010, Michael Kerrisk wrote:

> Hello Hugh, Izik
> 
> For the MADV_MERGEABLE + MADV_UNMERGEABLE changes added in 2.6.32,
> I've written the following man-pages text. Could you please
> review/fix/ACK.

Ah, good, thanks for writing this (but I recognize many of the words ;))

> 
> Thanks to Andi and Andrew for pointers that this documentation was needed.

(We did Cc you when ksm.txt went into Andrew's tree, and when it went
on into Linus's tree: is there something more we should have done?)

> 
> Thanks,
> 
> Michael
> 
> 
> --- a/man2/madvise.2
> +++ b/man2/madvise.2
> @@ -156,6 +157,42 @@ and the page being unmapped.
>  This feature is intended for memory testing.
>  This feature is only available if the kernel was configured with
>  .BR CONFIG_MEMORY_FAILURE .
> +.TP
> +.BR MADV_MERGEABLE " (since Linux 2.6.32)"
> +Enable Kernel Samepage Merging (KSM) for the pages in the range specified by
> +.I addr
> +and
> +.IR len .
> +The KSM daemon
> +.RI ( ksmd )
> +periodically scans those areas of user memory that have
> +been marked as mergeable,
> +looking for pages with identical content.

I was rather puzzled by Andi calling that an internal implementation
detail.  Okay, I suppose the "KSM daemon periodically scans" is an
internal implementation detail, though I think it helps to warn the
programmer of the overhead of MADV_MERGEABLE; but without "pages
with identical content", aren't we left mystified as to just what
this "merging" is all about?

> +These are replaced by a single write-protected page (which is automatically
> +copied if a process later wants to update the content of the page).
> +KSM only merges private anonymous pages (see
> +.BR mmap (2)).
> +The KSM feature is intended for applications that generate many
> +instances of the same data (e.g., virtualization systems such as KVM).
> +It can consume a lot of processing power; use with care.

                                           :

> +See the kernel source file
> +.I Documentation/vm/ksm.txt
> +for more details.
> +The
> +.BR MADV_MERGEABLE
> +and
> +.BR MADV_UNMERGEABLE
> +operations are only available if the kernel was configured with
> +.BR CONFIG_KSM.
> +.TP
> +.BR MADV_UNMERGEABLE " (since Linux 2.6.32)"
> +Undo the effect of an earlier
> +.BR MADV_MERGEABLE
> +operation on the specified address range;
> +KSM unmerges whatever pages it had merged in the address rnage specified by

                                                            range

> +.IR addr
> +and
> +.IR length .
>  .SH "RETURN VALUE"
>  On success
>  .BR madvise ()
> @@ -189,6 +226,14 @@ is not a valid value
>  .IP *
>  The application is attempting to release locked or shared pages (with
>  .BR MADV_DONTNEED ).
> +.IP *
> +.BR MADV_MERGEABLE
> +or
> +.BR MADV_UNMERGEABLE
> +was specified in
> +.IR advice ,
> +but the kernel was not configured with
> +.BR CONFIG_KSM .
>  .RE
>  .TP
>  .B EIO
> @@ -221,8 +266,10 @@ for file access.
>  .BR MADV_REMOVE ,
>  .BR MADV_DONTFORK ,
>  .BR MADV_DOFORK ,
> +.BR MAD_HWPOISON ,

Oh, I absolutely agree with you, MAD_HWPOISON indeed;
but Andi might prefer MADV_HWPOISON.

> +.BR MADVISE_MERGEABLE,

       MADV_MERGEABLE,

>  and
> -.BR MAD_HWPOISON
> +.BR MADVISE_UNMERGEABLE

       MADV_UNMERGEABLE

>  are Linux-specific.
>  .SH NOTES
>  .SS "Linux Notes"

Thanks!
Hugh

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE
  2010-06-20  0:02 ` Hugh Dickins
@ 2010-06-20  5:36   ` Michael Kerrisk
  2010-06-21 16:11     ` Hugh Dickins
  0 siblings, 1 reply; 8+ messages in thread
From: Michael Kerrisk @ 2010-06-20  5:36 UTC (permalink / raw)
  To: Hugh Dickins; +Cc: ieidus, Andi Kleen, lkml, Andrew Morton, linux-man

Hi Hugh,

On Sun, Jun 20, 2010 at 2:02 AM, Hugh Dickins <hughd@google.com> wrote:
> Hi Michael,
>
> On Sat, 19 Jun 2010, Michael Kerrisk wrote:
>
>> Hello Hugh, Izik
>>
>> For the MADV_MERGEABLE + MADV_UNMERGEABLE changes added in 2.6.32,
>> I've written the following man-pages text. Could you please
>> review/fix/ACK.
>
> Ah, good, thanks for writing this (but I recognize many of the words ;))

(Yes ;-).)

>> Thanks to Andi and Andrew for pointers that this documentation was needed.
>
> (We did Cc you when ksm.txt went into Andrew's tree, and when it went
> on into Linus's tree: is there something more we should have done?)

Ahh -- I missed that the CC came from you. (There is currently a big backlog.)

>> --- a/man2/madvise.2
>> +++ b/man2/madvise.2
>> @@ -156,6 +157,42 @@ and the page being unmapped.
>>  This feature is intended for memory testing.
>>  This feature is only available if the kernel was configured with
>>  .BR CONFIG_MEMORY_FAILURE .
>> +.TP
>> +.BR MADV_MERGEABLE " (since Linux 2.6.32)"
>> +Enable Kernel Samepage Merging (KSM) for the pages in the range specified by
>> +.I addr
>> +and
>> +.IR len .
>> +The KSM daemon
>> +.RI ( ksmd )
>> +periodically scans those areas of user memory that have
>> +been marked as mergeable,
>> +looking for pages with identical content.
>
> I was rather puzzled by Andi calling that an internal implementation
> detail.  Okay, I suppose the "KSM daemon periodically scans" is an
> internal implementation detail, though I think it helps to warn the
> programmer of the overhead of MADV_MERGEABLE; but without "pages
> with identical content", aren't we left mystified as to just what
> this "merging" is all about?

I agree. All I had changed was to remove mention of the KSM daemon --
I just say "the kernel".

>> +These are replaced by a single write-protected page (which is automatically
>> +copied if a process later wants to update the content of the page).
>> +KSM only merges private anonymous pages (see
>> +.BR mmap (2)).
>> +The KSM feature is intended for applications that generate many
>> +instances of the same data (e.g., virtualization systems such as KVM).
>> +It can consume a lot of processing power; use with care.
>
>                                           :
>
>> +See the kernel source file
>> +.I Documentation/vm/ksm.txt
>> +for more details.
>> +The
>> +.BR MADV_MERGEABLE
>> +and
>> +.BR MADV_UNMERGEABLE
>> +operations are only available if the kernel was configured with
>> +.BR CONFIG_KSM.
>> +.TP
>> +.BR MADV_UNMERGEABLE " (since Linux 2.6.32)"
>> +Undo the effect of an earlier
>> +.BR MADV_MERGEABLE
>> +operation on the specified address range;
>> +KSM unmerges whatever pages it had merged in the address rnage specified by
>
>                                                            range

Thanks.

>> +.IR addr
>> +and
>> +.IR length .
>>  .SH "RETURN VALUE"
>>  On success
>>  .BR madvise ()
>> @@ -189,6 +226,14 @@ is not a valid value
>>  .IP *
>>  The application is attempting to release locked or shared pages (with
>>  .BR MADV_DONTNEED ).
>> +.IP *
>> +.BR MADV_MERGEABLE
>> +or
>> +.BR MADV_UNMERGEABLE
>> +was specified in
>> +.IR advice ,
>> +but the kernel was not configured with
>> +.BR CONFIG_KSM .
>>  .RE
>>  .TP
>>  .B EIO
>> @@ -221,8 +266,10 @@ for file access.
>>  .BR MADV_REMOVE ,
>>  .BR MADV_DONTFORK ,
>>  .BR MADV_DOFORK ,
>> +.BR MAD_HWPOISON ,
>
> Oh, I absolutely agree with you, MAD_HWPOISON indeed;
> but Andi might prefer MADV_HWPOISON.
>
>> +.BR MADVISE_MERGEABLE,
>
>       MADV_MERGEABLE,
>
>>  and
>> -.BR MAD_HWPOISON
>> +.BR MADVISE_UNMERGEABLE
>
>       MADV_UNMERGEABLE

D'oh!  All of the above fixed now.

Thanks!

Michael



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Author of "The Linux Programming Interface" http://blog.man7.org/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE
  2010-06-20  5:36   ` Michael Kerrisk
@ 2010-06-21 16:11     ` Hugh Dickins
  0 siblings, 0 replies; 8+ messages in thread
From: Hugh Dickins @ 2010-06-21 16:11 UTC (permalink / raw)
  To: mtk.manpages; +Cc: Andi Kleen, lkml, Andrew Morton, linux-man

On Sat, Jun 19, 2010 at 10:36 PM, Michael Kerrisk
<mtk.manpages@gmail.com> wrote:
> On Sun, Jun 20, 2010 at 2:02 AM, Hugh Dickins <hughd@google.com> wrote:
>> On Sat, 19 Jun 2010, Michael Kerrisk wrote:
>>> +The KSM daemon
>>> +.RI ( ksmd )
>>> +periodically scans those areas of user memory that have
>>> +been marked as mergeable,
>>> +looking for pages with identical content.
>>
>> I was rather puzzled by Andi calling that an internal implementation
>> detail.  Okay, I suppose the "KSM daemon periodically scans" is an
>> internal implementation detail, though I think it helps to warn the
>> programmer of the overhead of MADV_MERGEABLE; but without "pages
>> with identical content", aren't we left mystified as to just what
>> this "merging" is all about?
>
> I agree. All I had changed was to remove mention of the KSM daemon --
> I just say "the kernel".

Great, that's just right: thanks.

Hugh

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-06-21 16:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-19  8:47 man-pages text for MAV_MERGEABLE and MADV_UNMERGEABLE Michael Kerrisk
2010-06-19  8:58 ` Andi Kleen
2010-06-19 12:22   ` Michael Kerrisk
2010-06-19 12:29     ` Andi Kleen
2010-06-19 12:38       ` Michael Kerrisk
2010-06-20  0:02 ` Hugh Dickins
2010-06-20  5:36   ` Michael Kerrisk
2010-06-21 16:11     ` Hugh Dickins

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox