lkml.org 
[lkml]   [2017]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/2] kernel/events: Add option to enable counting sideband events in wakeup_events
    On 2017/07/12 12:48PM, Jiri Olsa wrote:
    > On Mon, Jun 19, 2017 at 08:01:08PM +0530, Naveen N. Rao wrote:
    >
    > SNIP
    >
    > > - if (!event->attr.watermark) {
    > > + if (!event->attr.count_sb_events && !event->attr.watermark) {
    > > int wakeup_events = event->attr.wakeup_events;
    > >
    > > if (wakeup_events) {
    > > diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
    > > index 4e7c728569a8..f43a6081141f 100644
    > > --- a/kernel/events/ring_buffer.c
    > > +++ b/kernel/events/ring_buffer.c
    > > @@ -197,6 +197,19 @@ __perf_output_begin(struct perf_output_handle *handle,
    > > * none of the data stores below can be lifted up by the compiler.
    > > */
    > >
    > > + if (event->attr.count_sb_events && !event->attr.watermark) {
    > > + int wakeup_events = event->attr.wakeup_events;
    > > +
    > > + if (wakeup_events) {
    > > + int events = local_inc_return(&rb->events);
    > > +
    > > + if (events >= wakeup_events) {
    > > + local_sub(wakeup_events, &rb->events);
    > > + local_inc(&rb->wakeup);
    > > + }
    > > + }
    > > + }
    >
    > hum, so there's the same wakeup code in perf_output_sample,
    > but it's not called for non-sample (sideband) events

    Good point.

    >
    > it'd be nice to have this wakeup only once in __perf_output_begin,
    > but it'd change the behaviour for sideband events, which would start to
    > follow the wakeup_events logic.. and possibly disturb Vince's tests?

    I suppose you meant 'change the behaviour for _sample_ events'. Yes, the
    problem with having the check here is that it will now start firing for
    all events, rather than just the sampling events. I am not sure if we
    can differentiate sample events from sideband events in
    __perf_output_begin(). The other aspect is also Peter's concerns around
    performance.

    Thanks,
    Naveen

    \
     
     \ /
      Last update: 2017-07-13 16:36    [W:5.797 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site