Skip to content

Commit

Permalink
perf_counter tools: Small frequency related fixes
Browse files Browse the repository at this point in the history
Create the counter in a disabled state and only enable it after we
mmap() the buffer, this allows us to see the first few samples (and
observe the frequency ramp).

Furthermore, print the period in the verbose report.

Signed-off-by: Peter Zijlstra <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <[email protected]>
  • Loading branch information
Peter Zijlstra authored and Ingo Molnar committed Jun 10, 2009
1 parent bd2b5b1 commit 4502d77
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
3 changes: 3 additions & 0 deletions tools/perf/builtin-record.c
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,7 @@ static void create_counter(int counter, int cpu, pid_t pid)
attr->mmap = track;
attr->comm = track;
attr->inherit = (cpu < 0) && inherit;
attr->disabled = 1;

track = 0; /* only the first counter needs these */

Expand Down Expand Up @@ -402,6 +403,8 @@ static void create_counter(int counter, int cpu, pid_t pid)
error("failed to mmap with %d (%s)\n", errno, strerror(errno));
exit(-1);
}

ioctl(fd[nr_cpu][counter], PERF_COUNTER_IOC_ENABLE);
}

static void open_counters(int cpu, pid_t pid)
Expand Down
6 changes: 4 additions & 2 deletions tools/perf/builtin-report.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ struct ip_event {
struct perf_event_header header;
__u64 ip;
__u32 pid, tid;
__u64 period;
};

struct mmap_event {
Expand Down Expand Up @@ -943,12 +944,13 @@ process_overflow_event(event_t *event, unsigned long offset, unsigned long head)
uint64_t ip = event->ip.ip;
struct map *map = NULL;

dprintf("%p [%p]: PERF_EVENT (IP, %d): %d: %p\n",
dprintf("%p [%p]: PERF_EVENT (IP, %d): %d: %p period: %Ld\n",
(void *)(offset + head),
(void *)(long)(event->header.size),
event->header.misc,
event->ip.pid,
(void *)(long)ip);
(void *)(long)ip,
(long long)event->ip.period);

dprintf(" ... thread: %s:%d\n", thread->comm, thread->pid);

Expand Down

0 comments on commit 4502d77

Please sign in to comment.