我不熟悉使用“性能”工具,探索具有python功能的性能脚本。
我已经通过以下命令生成了perf.data
(pft) [csaraiya@localhost Desktop]$ sudo perf sched record -- sleep 1
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 1.548 MB perf.data (34 samples) ]
下面是详细的日志...
sudo perf script -g python -v
registering plugin: /usr/lib64/traceevent/plugins/plugin_cfg80211.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_function.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_hrtimer.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_jbd2.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_kmem.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_kvm.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_mac80211.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_sched_switch.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_scsi.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_xen.so
overriding event (314) sched:sched_wakeup with new print handler
overriding event (313) sched:sched_wakeup_new with new print handler
overriding event (312) sched:sched_switch with new print handler
build id event received for [kernel.kallsyms]: 775af45c3e14e58702909dda76>
build id event received for [vdso]: 2989a6ff69be8af0b0edc2bc57919c3fc1ef1>
**(END)Segmentation fault**
sudo perf buildid-list -v perf.data
registering plugin: /usr/lib64/traceevent/plugins/plugin_cfg80211.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_function.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_hrtimer.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_jbd2.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_kmem.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_kvm.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_mac80211.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_sched_switch.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_scsi.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_xen.so
overriding event (314) sched:sched_wakeup with new print handler
overriding event (313) sched:sched_wakeup_new with new print handler
overriding event (312) sched:sched_switch with new print handler
build id event received for [kernel.kallsyms]: 775af45c3e14e58702909dda76>
build id event received for [vdso]: 2989a6ff69be8af0b0edc2bc57919c3fc1ef1>
775af45c3e14e58702909dda765d6143dbf57d8f [kernel.kallsyms]
2989a6ff69be8af0b0edc2bc57919c3fc1ef1f87 [vdso]
sudo perf buildid-list -v --with-hits perf.data
registering plugin: /usr/lib64/traceevent/plugins/plugin_cfg80211.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_function.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_hrtimer.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_jbd2.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_kmem.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_kvm.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_mac80211.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_sched_switch.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_scsi.so
registering plugin: /usr/lib64/traceevent/plugins/plugin_xen.so
overriding event (314) sched:sched_wakeup with new print handler
overriding event (313) sched:sched_wakeup_new with new print handler
overriding event (312) sched:sched_switch with new print handler
build id event received for [kernel.kallsyms]: 775af45c3e14e58702909dda76>
build id event received for [vdso]: 2989a6ff69be8af0b0edc2bc57919c3fc1ef1>
Using /proc/kcore for kernel data
Using /proc/kallsyms for symbols
775af45c3e14e58702909dda765d6143dbf57d8f /proc/kcore
(pft) [csaraiya@localhost ~]$ uname -r
4.18.0-193.14.3.el8_2.x86_64
Python 3.6.8
[csaraiya@localhost ~]$ perf --version
perf version 4.18.0-193.14.3.el8_2.x86_64
我尝试通过从注释中指定的链接下载perf并重新编译它。
with kernel-5.0.0-37-generic
具有以下gdb日志
Program received signal SIGSEGV, Segmentation fault.
__strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:62
62 ../sysdeps/x86_64/multiarch/strlen-avx2.S: No such file or directory.
(gdb) bt
#0 __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:62
#1 0x00007ffff66c4563 in _IO_vfprintf_internal (s=s@entry=0x555555dffd70,
format=format@entry=0x555555a0f5b7 "def %s__%s(",
ap=ap@entry=0x7fffffffbb90) at vfprintf.c:1643
#2 0x00007ffff6799676 in ___fprintf_chk (fp=fp@entry=0x555555dffd70,
flag=flag@entry=1, format=format@entry=0x555555a0f5b7 "def %s__%s(")
at fprintf_chk.c:35
#3 0x0000555555852b1c in fprintf (__fmt=0x555555a0f5b7 "def %s__%s(",
__stream=0x555555dffd70) at /usr/include/x86_64-linux-gnu/bits/stdio2.h:97
#4 python_generate_script (pevent=0x555555df2b70, outfile=<optimized out>)
at util/scripting-engines/trace-event-python.c:1642
#5 0x000055555572760a in cmd_script (argc=<optimized out>,
argv=<optimized out>) at builtin-script.c:3673
#6 0x0000555555776e51 in run_builtin (p=0x555555c7e6d8 <commands+408>,
argc=4, argv=0x7fffffffe590) at perf.c:302
#7 0x000055555577715e in handle_internal_command (argc=4, argv=0x7fffffffe590)
at perf.c:354
#8 0x00005555556f4a11 in run_argv (argcp=<synthetic pointer>,
argv=<synthetic pointer>) at perf.c:398
#9 main (argc=<optimized out>, argv=0x7fffffffe590) at perf.c:520
(gdb)