mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 15:11:31 +00:00
perf timechart: Add backtrace support to CPU info
Add backtrace info to the CPU usage timechart. Signed-off-by: Stanislav Fomichev <stfomichev@yandex-team.ru> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Ramkumar Ramachandra <artagnon@gmail.com> Link: http://lkml.kernel.org/r/1385995056-20158-2-git-send-email-stfomichev@yandex-team.ru Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
553873e1df
commit
8b6dcca017
@ -837,8 +837,14 @@ static void draw_cpu_usage(struct timechart *tchart)
|
||||
while (c) {
|
||||
sample = c->samples;
|
||||
while (sample) {
|
||||
if (sample->type == TYPE_RUNNING)
|
||||
svg_process(sample->cpu, sample->start_time, sample->end_time, "sample", c->comm);
|
||||
if (sample->type == TYPE_RUNNING) {
|
||||
svg_process(sample->cpu,
|
||||
sample->start_time,
|
||||
sample->end_time,
|
||||
"sample",
|
||||
c->comm,
|
||||
sample->backtrace);
|
||||
}
|
||||
|
||||
sample = sample->next;
|
||||
}
|
||||
|
@ -285,7 +285,7 @@ void svg_cpu_box(int cpu, u64 __max_freq, u64 __turbo_freq)
|
||||
fprintf(svgfile, "</g>\n");
|
||||
}
|
||||
|
||||
void svg_process(int cpu, u64 start, u64 end, const char *type, const char *name)
|
||||
void svg_process(int cpu, u64 start, u64 end, const char *type, const char *name, const char *backtrace)
|
||||
{
|
||||
double width;
|
||||
|
||||
@ -295,6 +295,8 @@ void svg_process(int cpu, u64 start, u64 end, const char *type, const char *name
|
||||
|
||||
fprintf(svgfile, "<g transform=\"translate(%4.8f,%4.8f)\">\n", time2pixels(start), cpu2y(cpu));
|
||||
fprintf(svgfile, "<title>%s %s</title>\n", name, time_to_string(end - start));
|
||||
if (backtrace)
|
||||
fprintf(svgfile, "<desc>Switched because:\n%s</desc>\n", backtrace);
|
||||
fprintf(svgfile, "<rect x=\"0\" width=\"%4.8f\" y=\"0\" height=\"%4.1f\" class=\"%s\"/>\n",
|
||||
time2pixels(end)-time2pixels(start), SLOT_MULT+SLOT_HEIGHT, type);
|
||||
width = time2pixels(end)-time2pixels(start);
|
||||
|
@ -11,7 +11,7 @@ extern void svg_waiting(int Yslot, int cpu, u64 start, u64 end, const char *back
|
||||
extern void svg_cpu_box(int cpu, u64 max_frequency, u64 turbo_frequency);
|
||||
|
||||
|
||||
extern void svg_process(int cpu, u64 start, u64 end, const char *type, const char *name);
|
||||
extern void svg_process(int cpu, u64 start, u64 end, const char *type, const char *name, const char *backtrace);
|
||||
extern void svg_cstate(int cpu, u64 start, u64 end, int type);
|
||||
extern void svg_pstate(int cpu, u64 start, u64 end, u64 freq);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user