perf report: Introduce --mmaps
Similar to --tasks, producing the same output plus /proc/<PID>/maps
similar lines for each mmap record present in a perf.data file.
Please note that not all mmaps are stored, for instance, some of the
non-executable mmaps are only stored when 'perf record --data' is used,
when the user wants to resolve data accesses in addition to asking for
executable mmaps to get the DSO with symtabs.
E.g.:
# perf record sleep 1
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.018 MB perf.data (7 samples) ]
[root@jouet ~]# perf report --mmaps
# pid tid ppid comm
0 0 -1 |swapper
4137 4137 -1 |sleep
5628a35a1000-
5628a37aa000 r-xp
00000000 3147148 /usr/bin/sleep
7fb65ad51000-
7fb65b134000 r-xp
00000000 3149795 /usr/lib64/libc-2.26.so
7fb65b134000-
7fb65b35e000 r-xp
00000000 3149715 /usr/lib64/ld-2.26.so
7ffd94b9f000-
7ffd94ba1000 r-xp
00000000 0 [vdso]
#
# perf record sleep 1
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.019 MB perf.data (8 samples) ]
# perf report --mmaps
# pid tid ppid comm
0 0 -1 |swapper
4161 4161 -1 |sleep
55afae69a000-
55afae8a3000 r-xp
00000000 3147148 /usr/bin/sleep
7f569f00d000-
7f569f3f0000 r-xp
00000000 3149795 /usr/lib64/libc-2.26.so
7f569f3f0000-
7f569f61a000 r-xp
00000000 3149715 /usr/lib64/ld-2.26.so
7fff6fffe000-
7fff70000000 r-xp
00000000 0 [vdso]
#
# perf record time sleep 1
0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2156maxresident)k
0inputs+0outputs (0major+73minor)pagefaults 0swaps
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.019 MB perf.data (14 samples) ]
# perf report --mmaps
# pid tid ppid comm
0 0 -1 |swapper
4281 4281 -1 |time
560560dca000-
560560fcf000 r-xp
00000000 3190458 /usr/bin/time
7fc175196000-
7fc175579000 r-xp
00000000 3149795 /usr/lib64/libc-2.26.so
7fc175579000-
7fc1757a3000 r-xp
00000000 3149715 /usr/lib64/ld-2.26.so
7ffc924f6000-
7ffc924f8000 r-xp
00000000 0 [vdso]
4282 4282 4281 | sleep
560560dca000-
560560fcf000 r-xp
00000000 3190458 /usr/bin/time
564b4de3c000-
564b4e045000 r-xp
00000000 3147148 /usr/bin/sleep
7f6a5a716000-
7f6a5aaf9000 r-xp
00000000 3149795 /usr/lib64/libc-2.26.so
7f6a5aaf9000-
7f6a5ad23000 r-xp
00000000 3149715 /usr/lib64/ld-2.26.so
7fc175196000-
7fc175579000 r-xp
00000000 3149795 /usr/lib64/libc-2.26.so
7fc175579000-
7fc1757a3000 r-xp
00000000 3149715 /usr/lib64/ld-2.26.so
7ffc924f6000-
7ffc924f8000 r-xp
00000000 0 [vdso]
7ffcec7e6000-
7ffcec7e8000 r-xp
00000000 0 [vdso]
#
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-zulwdlg5rfowogr1qznorvvc@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>