• A
    perf record: Put a copy of kcore into the perf.data directory · eeb399b5
    Adrian Hunter 提交于
    Add a new 'perf record' option '--kcore' which will put a copy of
    /proc/kcore, kallsyms and modules into a perf.data directory. Note, that
    without the --kcore option, output goes to a file as previously.  The
    tools' -o and -i options work with either a file name or directory name.
    
    Example:
    
      $ sudo perf record --kcore uname
    
      $ sudo tree perf.data
      perf.data
      ├── kcore_dir
      │   ├── kallsyms
      │   ├── kcore
      │   └── modules
      └── data
    
      $ sudo perf script -v
      build id event received for vmlinux: 1eaa285996affce2d74d8e66dcea09a80c9941de
      build id event received for [vdso]: 8bbaf5dc62a9b644b4d4e4539737e104e4a84541
      Samples for 'cycles' event do not have CPU attribute set. Skipping 'cpu' field.
      Using CPUID GenuineIntel-6-8E-A
      Using perf.data/kcore_dir/kcore for kernel data
      Using perf.data/kcore_dir/kallsyms for symbols
                 perf 19058 506778.423729:          1 cycles:  ffffffffa2caa548 native_write_msr+0x8 (vmlinux)
                 perf 19058 506778.423733:          1 cycles:  ffffffffa2caa548 native_write_msr+0x8 (vmlinux)
                 perf 19058 506778.423734:          7 cycles:  ffffffffa2caa548 native_write_msr+0x8 (vmlinux)
                 perf 19058 506778.423736:        117 cycles:  ffffffffa2caa54a native_write_msr+0xa (vmlinux)
                 perf 19058 506778.423738:       2092 cycles:  ffffffffa2c9b7b0 native_apic_msr_write+0x0 (vmlinux)
                 perf 19058 506778.423740:      37380 cycles:  ffffffffa2f121d0 perf_event_addr_filters_exec+0x0 (vmlinux)
                uname 19058 506778.423751:     582673 cycles:  ffffffffa303a407 propagate_protected_usage+0x147 (vmlinux)
                uname 19058 506778.423892:    2241841 cycles:  ffffffffa2cae0c9 unwind_next_frame.part.5+0x79 (vmlinux)
                uname 19058 506778.424430:    2457397 cycles:  ffffffffa3019232 check_memory_region+0x52 (vmlinux)
    
    Committer testing:
    
      # rm -rf perf.data*
      # perf record sleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.024 MB perf.data (7 samples) ]
      # ls -l perf.data
      -rw-------. 1 root root 34772 Oct 21 11:08 perf.data
      # perf record --kcore uname
      Linux
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.024 MB perf.data (7 samples) ]
      ls[root@quaco ~]# ls -lad perf.data*
      drwx------. 3 root root  4096 Oct 21 11:08 perf.data
      -rw-------. 1 root root 34772 Oct 21 11:08 perf.data.old
      # perf evlist -v
      cycles: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1
      # perf evlist -v -i perf.data/data
      cycles: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1
      #
    Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: NJiri Olsa <jolsa@kernel.org>
    Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    Link: http://lore.kernel.org/lkml/20191004083121.12182-6-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    eeb399b5
builtin-record.c 66.5 KB