Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf report: Indicate JITed code better in report

Print [TID] tid %d instead of the crypted /tmp/perf-%d.map default.

% cat >loop.java
public class loop {
public static void main(String[] args)
{
for (;;);
}
}
^D
% javac loop.java
% perf record java loop
^C

Before:

% perf report --stdio
...
56.09% java perf-34724.map [.] 0x00007fd5bd021896
19.12% java perf-34724.map [.] 0x00007fd5bd021887
9.79% java perf-34724.map [.] 0x00007fd5bd021783
8.97% java perf-34724.map [.] 0x00007fd5bd02175b

After:

% perf report --stdio
...
56.09% java [JIT] tid 34724 [.] 0x00007fd5bd021896
19.12% java [JIT] tid 34724 [.] 0x00007fd5bd021887
9.79% java [JIT] tid 34724 [.] 0x00007fd5bd021783
8.97% java [JIT] tid 34724 [.] 0x00007fd5bd02175b

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
LPU-Reference: 20190314225002.30108-7-andi@firstfloor.org
Link: https://lkml.kernel.org/n/tip-r17l6py9g0sezb7mi1f286gt@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Andi Kleen and committed by
Arnaldo Carvalho de Melo
a4e7e6ef 702fb9b4

+24 -18
+24 -18
tools/perf/util/dso.c
··· 1141 1141 1142 1142 static void dso__set_basename(struct dso *dso) 1143 1143 { 1144 - /* 1145 - * basename() may modify path buffer, so we must pass 1146 - * a copy. 1147 - */ 1148 - char *base, *lname = strdup(dso->long_name); 1144 + char *base, *lname; 1145 + int tid; 1149 1146 1150 - if (!lname) 1151 - return; 1147 + if (sscanf(dso->long_name, "/tmp/perf-%d.map", &tid) == 1) { 1148 + if (asprintf(&base, "[JIT] tid %d", tid) < 0) 1149 + return; 1150 + } else { 1151 + /* 1152 + * basename() may modify path buffer, so we must pass 1153 + * a copy. 1154 + */ 1155 + lname = strdup(dso->long_name); 1156 + if (!lname) 1157 + return; 1152 1158 1153 - /* 1154 - * basename() may return a pointer to internal 1155 - * storage which is reused in subsequent calls 1156 - * so copy the result. 1157 - */ 1158 - base = strdup(basename(lname)); 1159 + /* 1160 + * basename() may return a pointer to internal 1161 + * storage which is reused in subsequent calls 1162 + * so copy the result. 1163 + */ 1164 + base = strdup(basename(lname)); 1159 1165 1160 - free(lname); 1166 + free(lname); 1161 1167 1162 - if (!base) 1163 - return; 1164 - 1165 - dso__set_short_name(dso, base, true); 1168 + if (!base) 1169 + return; 1170 + } 1171 + dso__set_short_name(dso, base, true); 1166 1172 } 1167 1173 1168 1174 int dso__name_len(const struct dso *dso)