2009-07-22 13:09:58

by Anton Blanchard

[permalink] [raw]
Subject: [PATCH] perf_counter: Fix throttle/unthrottle event logging


Right now we only print PERF_EVENT_THROTTLE + 1 (ie PERF_EVENT_UNTHROTTLE).
Fix this to print both a throttle and unthrottle event.

Signed-off-by: Anton Blanchard <[email protected]>
---

Index: linux.trees.git/kernel/perf_counter.c
===================================================================
--- linux.trees.git.orig/kernel/perf_counter.c 2009-07-22 22:43:36.000000000 +1000
+++ linux.trees.git/kernel/perf_counter.c 2009-07-22 22:55:10.000000000 +1000
@@ -3195,7 +3195,7 @@ static void perf_log_throttle(struct per
u64 stream_id;
} throttle_event = {
.header = {
- .type = PERF_EVENT_THROTTLE + 1,
+ .type = PERF_EVENT_THROTTLE,
.misc = 0,
.size = sizeof(throttle_event),
},
@@ -3204,6 +3204,9 @@ static void perf_log_throttle(struct per
.stream_id = counter->id,
};

+ if (enable)
+ throttle_event.header.type = PERF_EVENT_UNTHROTTLE;
+
ret = perf_output_begin(&handle, counter, sizeof(throttle_event), 1, 0);
if (ret)
return;


2009-07-22 13:14:24

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] perf_counter: Fix throttle/unthrottle event logging

On Wed, 2009-07-22 at 23:05 +1000, Anton Blanchard wrote:
> Right now we only print PERF_EVENT_THROTTLE + 1 (ie PERF_EVENT_UNTHROTTLE).
> Fix this to print both a throttle and unthrottle event.

oops, that was supposed to read: PERF_EVEN_THROTTLE + enable, but yeah,
the below works too. Thanks!

> Signed-off-by: Anton Blanchard <[email protected]>
> ---
>
> Index: linux.trees.git/kernel/perf_counter.c
> ===================================================================
> --- linux.trees.git.orig/kernel/perf_counter.c 2009-07-22 22:43:36.000000000 +1000
> +++ linux.trees.git/kernel/perf_counter.c 2009-07-22 22:55:10.000000000 +1000
> @@ -3195,7 +3195,7 @@ static void perf_log_throttle(struct per
> u64 stream_id;
> } throttle_event = {
> .header = {
> - .type = PERF_EVENT_THROTTLE + 1,
> + .type = PERF_EVENT_THROTTLE,
> .misc = 0,
> .size = sizeof(throttle_event),
> },
> @@ -3204,6 +3204,9 @@ static void perf_log_throttle(struct per
> .stream_id = counter->id,
> };
>
> + if (enable)
> + throttle_event.header.type = PERF_EVENT_UNTHROTTLE;
> +
> ret = perf_output_begin(&handle, counter, sizeof(throttle_event), 1, 0);
> if (ret)
> return;