* [patch] perf_event_open.2 clarify description of overflow events
@ 2015-01-21 5:35 Vince Weaver
[not found] ` <alpine.DEB.2.11.1501210028030.21805-6xBS8L8d439fDsnSvq7Uqyn2WXadKZNJe7X0jjDqjFGHXe+LvDLADg@public.gmane.org>
0 siblings, 1 reply; 2+ messages in thread
From: Vince Weaver @ 2015-01-21 5:35 UTC (permalink / raw)
To: linux-man-u79uwXL29TY76Z2rM5mHXA
Cc: Michael Kerrisk (man-pages), Peter Zijlstra, Ingo Molnar,
Jiri Olsa
Update the perf_event_open manpage to be more consistent when
discussing overflow events. It merges the discussion of
poll-type notifications with those generated by SIGIO
signal handlers.
This addresses the remaining FIXMEs is the document.
Signed-off-by: Vince Weaver <vincent.weaver-e7X0jjDqjFGHXe+LvDLADg@public.gmane.org>
diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2
index cccb880..aed1449 100644
--- a/man2/perf_event_open.2
+++ b/man2/perf_event_open.2
@@ -591,16 +591,16 @@ Its parameters are set in other places.
.RE
.TP
.IR sample_period ", " sample_freq
-A "sampling" counter is one that generates an interrupt
+A "sampling" event is one that generates an overflow notification
every N events, where N is given by
.IR sample_period .
-A sampling counter has
+A sampling event has
.IR sample_period " > 0."
-When an overflow interrupt occurs, requested data is recorded
+When an overflow occurs, requested data is recorded
in the mmap buffer.
The
.I sample_type
-field controls what data is recorded on each interrupt.
+field controls what data is recorded on each overflow.
.I sample_freq
can be used if you wish to use frequency rather than period.
@@ -900,10 +900,10 @@ If this bit is set, then
fork/exit notifications are included in the ring buffer.
.TP
.IR "watermark"
-If set, have a sampling interrupt happen when we cross the
+If set, have an overflow notification happen when we cross the
.I wakeup_watermark
boundary.
-Otherwise, interrupts happen after
+Otherwise, overflow notifications happen after
.I wakeup_events
samples.
.TP
@@ -1019,7 +1019,7 @@ This union sets how many samples
.RI ( wakeup_events )
or bytes
.RI ( wakeup_watermark )
-happen before an overflow signal happens.
+happen before an overflow notification happens.
Which one is used is selected by the
.I watermark
bit flag.
@@ -1028,11 +1028,16 @@ bit flag.
only counts
.B PERF_RECORD_SAMPLE
record types.
-To receive a signal for every incoming
+To receive overflow notification for all
.B PERF_RECORD
-type set
+types choose watermark and set
.I wakeup_watermark
to 1.
+
+Prior to Linux 3.0 setting
+.I wakeup_events
+to 0 resulted in no overflow notifications;
+more recent kernels treat 0 the same as 1.
.TP
.IR "bp_type" " (since Linux 2.6.33)"
This chooses the breakpoint type.
@@ -2244,52 +2249,52 @@ is the flags information.
is a string describing the backing of the allocated memory.
.RE
.RE
-.SS Signal overflow
-Events can be set to deliver a signal when a threshold is crossed.
-.\" FIXME .
-.\" The following sentence doesn't seem to make sense.
-.\" These system calls do not set up signal handlers.
-The signal handler is set up using the
+.SS Overflow handling
+Events can be set to notify when a threshold is crossed,
+indicating an overflow.
+Overflow conditions can be captured by monitoring the
+event file descriptor with
.BR poll (2),
.BR select (2),
-.BR epoll (2)
-and
-.BR fcntl (2),
-system calls.
+or
+.BR epoll (2).
+Alternately, a SIGIO signal handler can be created and
+the event configured with
+.BR fcntl (2)
+to generate SIGIO signals.
-To generate signals, sampling must be enabled
+Overflows are only generated by sampling events
.RI ( sample_period
must have a nonzero value).
-There are two ways to generate signals.
+There are two ways to generate overflow notifications.
The first is to set a
.I wakeup_events
or
.I wakeup_watermark
-value that will generate a signal if a certain number of samples
+value that will trigger if a certain number of samples
or bytes have been written to the mmap ring buffer.
-In this case, a signal of type
+In this case
.B POLL_IN
-is sent.
+is indicated.
The other way is by use of the
.B PERF_EVENT_IOC_REFRESH
ioctl.
This ioctl adds to a counter that decrements each time the event overflows.
-When nonzero, a
+When nonzero,
.B POLL_IN
-signal is sent on overflow, but
-once the value reaches 0, a signal is sent of type
+is indicated, but
+once the counter reaches 0
.B POLL_HUP
-and
+is indicated and
the underlying event is disabled.
-Note: on newer kernels (since at least as early as Linux 3.2),
-.\" FIXME . Find out when this was introduced
-a signal is provided for every overflow, even if
-.I wakeup_events
-is not set.
+Starting with Linux 3.18
+.B POLL_HUP
+is indicated if the event being monitored is attached to a different
+process and that process exits.
.SS rdpmc instruction
Starting with Linux 3.4 on x86, you can use the
.I rdpmc
@@ -2341,11 +2346,11 @@ to enable a counter for a number of overflows specified by the argument,
after which it is disabled.
Subsequent calls of this ioctl add the argument value to the current
count.
-A signal with
+An overflow notification with
.B POLL_IN
set will happen on each overflow until the
-count reaches 0; when that happens a signal with
-POLL_HUP
+count reaches 0; when that happens a notification with
+.B POLL_HUP
set is sent and the event is disabled.
Using an argument of 0 is considered undefined behavior.
.TP
--
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
^ permalink raw reply related [flat|nested] 2+ messages in thread[parent not found: <alpine.DEB.2.11.1501210028030.21805-6xBS8L8d439fDsnSvq7Uqyn2WXadKZNJe7X0jjDqjFGHXe+LvDLADg@public.gmane.org>]
* Re: [patch] perf_event_open.2 clarify description of overflow events [not found] ` <alpine.DEB.2.11.1501210028030.21805-6xBS8L8d439fDsnSvq7Uqyn2WXadKZNJe7X0jjDqjFGHXe+LvDLADg@public.gmane.org> @ 2015-01-21 7:57 ` Michael Kerrisk (man-pages) 0 siblings, 0 replies; 2+ messages in thread From: Michael Kerrisk (man-pages) @ 2015-01-21 7:57 UTC (permalink / raw) To: Vince Weaver, linux-man-u79uwXL29TY76Z2rM5mHXA Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w, Peter Zijlstra, Ingo Molnar, Jiri Olsa Hello Vince, On 01/21/2015 06:35 AM, Vince Weaver wrote: > > Update the perf_event_open manpage to be more consistent when > discussing overflow events. It merges the discussion of > poll-type notifications with those generated by SIGIO > signal handlers. Thanks for that. > This addresses the remaining FIXMEs is the document. And especially for that, thanks. Applied. Cheers, Michael > Signed-off-by: Vince Weaver <vincent.weaver-e7X0jjDqjFGHXe+LvDLADg@public.gmane.org> > > diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2 > index cccb880..aed1449 100644 > --- a/man2/perf_event_open.2 > +++ b/man2/perf_event_open.2 > @@ -591,16 +591,16 @@ Its parameters are set in other places. > .RE > .TP > .IR sample_period ", " sample_freq > -A "sampling" counter is one that generates an interrupt > +A "sampling" event is one that generates an overflow notification > every N events, where N is given by > .IR sample_period . > -A sampling counter has > +A sampling event has > .IR sample_period " > 0." > -When an overflow interrupt occurs, requested data is recorded > +When an overflow occurs, requested data is recorded > in the mmap buffer. > The > .I sample_type > -field controls what data is recorded on each interrupt. > +field controls what data is recorded on each overflow. > > .I sample_freq > can be used if you wish to use frequency rather than period. > @@ -900,10 +900,10 @@ If this bit is set, then > fork/exit notifications are included in the ring buffer. > .TP > .IR "watermark" > -If set, have a sampling interrupt happen when we cross the > +If set, have an overflow notification happen when we cross the > .I wakeup_watermark > boundary. > -Otherwise, interrupts happen after > +Otherwise, overflow notifications happen after > .I wakeup_events > samples. > .TP > @@ -1019,7 +1019,7 @@ This union sets how many samples > .RI ( wakeup_events ) > or bytes > .RI ( wakeup_watermark ) > -happen before an overflow signal happens. > +happen before an overflow notification happens. > Which one is used is selected by the > .I watermark > bit flag. > @@ -1028,11 +1028,16 @@ bit flag. > only counts > .B PERF_RECORD_SAMPLE > record types. > -To receive a signal for every incoming > +To receive overflow notification for all > .B PERF_RECORD > -type set > +types choose watermark and set > .I wakeup_watermark > to 1. > + > +Prior to Linux 3.0 setting > +.I wakeup_events > +to 0 resulted in no overflow notifications; > +more recent kernels treat 0 the same as 1. > .TP > .IR "bp_type" " (since Linux 2.6.33)" > This chooses the breakpoint type. > @@ -2244,52 +2249,52 @@ is the flags information. > is a string describing the backing of the allocated memory. > .RE > .RE > -.SS Signal overflow > -Events can be set to deliver a signal when a threshold is crossed. > -.\" FIXME . > -.\" The following sentence doesn't seem to make sense. > -.\" These system calls do not set up signal handlers. > -The signal handler is set up using the > +.SS Overflow handling > +Events can be set to notify when a threshold is crossed, > +indicating an overflow. > +Overflow conditions can be captured by monitoring the > +event file descriptor with > .BR poll (2), > .BR select (2), > -.BR epoll (2) > -and > -.BR fcntl (2), > -system calls. > +or > +.BR epoll (2). > +Alternately, a SIGIO signal handler can be created and > +the event configured with > +.BR fcntl (2) > +to generate SIGIO signals. > > -To generate signals, sampling must be enabled > +Overflows are only generated by sampling events > .RI ( sample_period > must have a nonzero value). > > -There are two ways to generate signals. > +There are two ways to generate overflow notifications. > > The first is to set a > .I wakeup_events > or > .I wakeup_watermark > -value that will generate a signal if a certain number of samples > +value that will trigger if a certain number of samples > or bytes have been written to the mmap ring buffer. > -In this case, a signal of type > +In this case > .B POLL_IN > -is sent. > +is indicated. > > The other way is by use of the > .B PERF_EVENT_IOC_REFRESH > ioctl. > This ioctl adds to a counter that decrements each time the event overflows. > -When nonzero, a > +When nonzero, > .B POLL_IN > -signal is sent on overflow, but > -once the value reaches 0, a signal is sent of type > +is indicated, but > +once the counter reaches 0 > .B POLL_HUP > -and > +is indicated and > the underlying event is disabled. > > -Note: on newer kernels (since at least as early as Linux 3.2), > -.\" FIXME . Find out when this was introduced > -a signal is provided for every overflow, even if > -.I wakeup_events > -is not set. > +Starting with Linux 3.18 > +.B POLL_HUP > +is indicated if the event being monitored is attached to a different > +process and that process exits. > .SS rdpmc instruction > Starting with Linux 3.4 on x86, you can use the > .I rdpmc > @@ -2341,11 +2346,11 @@ to enable a counter for a number of overflows specified by the argument, > after which it is disabled. > Subsequent calls of this ioctl add the argument value to the current > count. > -A signal with > +An overflow notification with > .B POLL_IN > set will happen on each overflow until the > -count reaches 0; when that happens a signal with > -POLL_HUP > +count reaches 0; when that happens a notification with > +.B POLL_HUP > set is sent and the event is disabled. > Using an argument of 0 is considered undefined behavior. > .TP > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ -- 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 ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-01-21 7:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-21 5:35 [patch] perf_event_open.2 clarify description of overflow events Vince Weaver
[not found] ` <alpine.DEB.2.11.1501210028030.21805-6xBS8L8d439fDsnSvq7Uqyn2WXadKZNJe7X0jjDqjFGHXe+LvDLADg@public.gmane.org>
2015-01-21 7:57 ` Michael Kerrisk (man-pages)
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.