mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
perf session: Event statistics also are per session
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frédéric Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <1260810361-22828-1-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
c019879bcc
commit
f823e441ab
6 changed files with 10 additions and 15 deletions
|
@ -487,7 +487,7 @@ static int __cmd_annotate(void)
|
||||||
dsos__fprintf(stdout);
|
dsos__fprintf(stdout);
|
||||||
|
|
||||||
perf_session__collapse_resort(session);
|
perf_session__collapse_resort(session);
|
||||||
perf_session__output_resort(session, event__total[0]);
|
perf_session__output_resort(session, session->event_total[0]);
|
||||||
perf_session__find_annotations(session);
|
perf_session__find_annotations(session);
|
||||||
out_delete:
|
out_delete:
|
||||||
perf_session__delete(session);
|
perf_session__delete(session);
|
||||||
|
|
|
@ -619,8 +619,7 @@ static int process_sample_event(event_t *event, struct perf_session *session)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
event__stats.total += data.period;
|
session->events_stats.total += data.period;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -731,8 +730,8 @@ static int __cmd_report(void)
|
||||||
dsos__fprintf(stdout);
|
dsos__fprintf(stdout);
|
||||||
|
|
||||||
perf_session__collapse_resort(session);
|
perf_session__collapse_resort(session);
|
||||||
perf_session__output_resort(session, event__stats.total);
|
perf_session__output_resort(session, session->events_stats.total);
|
||||||
perf_session__fprintf_hist_entries(session, event__stats.total, stdout);
|
perf_session__fprintf_hist_entries(session, session->events_stats.total, stdout);
|
||||||
|
|
||||||
if (show_threads)
|
if (show_threads)
|
||||||
perf_read_values_destroy(&show_threads_values);
|
perf_read_values_destroy(&show_threads_values);
|
||||||
|
|
|
@ -96,8 +96,8 @@ static int process_sample_event(event_t *event, struct perf_session *session)
|
||||||
data.raw_size,
|
data.raw_size,
|
||||||
data.time, thread->comm);
|
data.time, thread->comm);
|
||||||
}
|
}
|
||||||
event__stats.total += data.period;
|
|
||||||
|
|
||||||
|
session->events_stats.total += data.period;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -187,8 +187,6 @@ void event__synthesize_threads(int (*process)(event_t *event,
|
||||||
closedir(proc);
|
closedir(proc);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct events_stats event__stats;
|
|
||||||
|
|
||||||
int event__process_comm(event_t *self, struct perf_session *session)
|
int event__process_comm(event_t *self, struct perf_session *session)
|
||||||
{
|
{
|
||||||
struct thread *thread = perf_session__findnew(session, self->comm.pid);
|
struct thread *thread = perf_session__findnew(session, self->comm.pid);
|
||||||
|
@ -203,10 +201,10 @@ int event__process_comm(event_t *self, struct perf_session *session)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int event__process_lost(event_t *self, struct perf_session *session __used)
|
int event__process_lost(event_t *self, struct perf_session *session)
|
||||||
{
|
{
|
||||||
dump_printf(": id:%Ld: lost:%Ld\n", self->lost.id, self->lost.lost);
|
dump_printf(": id:%Ld: lost:%Ld\n", self->lost.id, self->lost.lost);
|
||||||
event__stats.lost += self->lost.lost;
|
session->events_stats.lost += self->lost.lost;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -168,11 +168,6 @@ void event__synthesize_threads(int (*process)(event_t *event,
|
||||||
struct perf_session *session),
|
struct perf_session *session),
|
||||||
struct perf_session *session);
|
struct perf_session *session);
|
||||||
|
|
||||||
extern char *event__cwd;
|
|
||||||
extern int event__cwdlen;
|
|
||||||
extern struct events_stats event__stats;
|
|
||||||
extern unsigned long event__total[PERF_RECORD_MAX];
|
|
||||||
|
|
||||||
int event__process_comm(event_t *self, struct perf_session *session);
|
int event__process_comm(event_t *self, struct perf_session *session);
|
||||||
int event__process_lost(event_t *self, struct perf_session *session);
|
int event__process_lost(event_t *self, struct perf_session *session);
|
||||||
int event__process_mmap(event_t *self, struct perf_session *session);
|
int event__process_mmap(event_t *self, struct perf_session *session);
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "header.h"
|
#include "header.h"
|
||||||
#include "thread.h"
|
#include "thread.h"
|
||||||
#include <linux/rbtree.h>
|
#include <linux/rbtree.h>
|
||||||
|
#include "../../../include/linux/perf_event.h"
|
||||||
|
|
||||||
struct ip_callchain;
|
struct ip_callchain;
|
||||||
struct thread;
|
struct thread;
|
||||||
|
@ -18,6 +19,8 @@ struct perf_session {
|
||||||
struct map_groups kmaps;
|
struct map_groups kmaps;
|
||||||
struct rb_root threads;
|
struct rb_root threads;
|
||||||
struct thread *last_match;
|
struct thread *last_match;
|
||||||
|
struct events_stats events_stats;
|
||||||
|
unsigned long event_total[PERF_RECORD_MAX];
|
||||||
struct rb_root hists;
|
struct rb_root hists;
|
||||||
u64 sample_type;
|
u64 sample_type;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
Loading…
Reference in a new issue