1. 16 12月, 2016 14 次提交
  2. 07 12月, 2016 10 次提交
    • Y
      perf tools: Explicitly document that --children is enabled by default · 108a7c10
      Yannick Brosseau 提交于
      The fact that the --children option is enabled by default is buried deep
      at the end of the help page, in the overhead calculation section. This
      make it explicit right where the option is listed, following the same
      way other default options are described
      Signed-off-by: NYannick Brosseau <scientist@fb.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: kernel-team@fb.com
      Link: http://lkml.kernel.org/r/20161202160732.29058-1-scientist@fb.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      108a7c10
    • N
      perf sched timehist: Cleanup idle_max_cpu handling · b336352b
      Namhyung Kim 提交于
      It treats the idle_max_cpu little bit confusingly IMHO.  Let's make it
      more straight forward.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Acked-by: NDavid Ahern <dsahern@gmail.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20161206034010.6499-6-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b336352b
    • N
      perf sched timehist: Handle zero sample->tid properly · 5d92d96a
      Namhyung Kim 提交于
      Sometimes samples have tid of 0 but non-0 pid.  It ends up having a new
      thread of 0 tid/pid (instead of referring idle task) since tid is used
      to search matching task.  But I guess it's wrong to use 0 as a tid when
      pid is set.  This patch uses tid only if it has a non-zero value or same
      as pid (of 0).
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20161206034010.6499-4-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      5d92d96a
    • N
      perf callchain: Introduce callchain_cursor__copy() · 571f1eb9
      Namhyung Kim 提交于
      The callchain_cursor__copy() function is to save current callchain
      captured by a cursor.  It'll be used to keep callchains when switching
      to idle task for each cpu.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20161206034010.6499-3-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      571f1eb9
    • N
      perf sched: Cleanup option processing · 6fa94258
      Namhyung Kim 提交于
      The -D/--dump-raw-trace option is in the parent option so no need to
      repeat it.  Also move -f/--force option to parent as it's common to
      handle data file.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Acked-by: NDavid Ahern <dsahern@gmail.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20161206034010.6499-2-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      6fa94258
    • D
      perf sched timehist: Improve error message when analyzing wrong file · f45bf8d3
      David Ahern 提交于
      Arnaldo reported an unhelpful error message when running perf sched
      timehist on a file that did not contain sched tracepoints:
      
          [root@jouet ~]# perf sched timehist
          No trace sample to read. Did you call 'perf record -R'?
      
          [root@jouet ~]# perf evlist -v
          cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|CALLCHAIN|CPU|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1
      
      Change the has_traces check to look for the sched_switch event. Analysis
      for perf sched timehist requires at least this event.
      
      Now when analyzing a file without sched tracepoints you get:
      
          root@f21-vbox:/tmp$ perf sched timehist
          No sched_switch events found. Have you run 'perf sched record'?
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Reported-and-Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/1480451988-43673-1-git-send-email-dsahern@gmail.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      f45bf8d3
    • J
      perf tools: Move perf build related variables under non fixdep leg · 8ac1eb7b
      Jiri Olsa 提交于
      Because there's no need for them in fixdep build.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1481030331-31944-4-git-send-email-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8ac1eb7b
    • J
      perf tools: Force fixdep compilation at the start of the build · abb26210
      Jiri Olsa 提交于
      The fixdep tool needs to be built before everything else, because it fixes
      every object dependency file.
      
      We handle this currently by making all objects to depend on fixdep, which is
      error prone and is easily forgotten when new object is added.
      
      Instead of this, this patch force fixdep tool to be built as the first target
      in the separate make session. This way we don't need to handle extra fixdep
      dependencies and we are certain there's no fixdep race with any parallel make
      job.
      
      Committer notes:
      
      Testing it:
      
      Before:
      
        $ rm -rf /tmp/build/perf/ ; mkdir -p /tmp/build/perf ; make -k O=/tmp/build/perf -C tools/perf install-bin
        make: Entering directory '/home/acme/git/linux/tools/perf'
          BUILD:   Doing 'make -j4' parallel build
      
        Auto-detecting system features:
        ...                         dwarf: [ on  ]
        ...            dwarf_getlocations: [ on  ]
        ...                         glibc: [ on  ]
        ...                          gtk2: [ on  ]
        ...                      libaudit: [ on  ]
        ...                        libbfd: [ on  ]
        ...                        libelf: [ on  ]
        ...                       libnuma: [ on  ]
        ...        numa_num_possible_cpus: [ on  ]
        ...                       libperl: [ on  ]
        ...                     libpython: [ on  ]
        ...                      libslang: [ on  ]
        ...                     libcrypto: [ on  ]
        ...                     libunwind: [ on  ]
        ...            libdw-dwarf-unwind: [ on  ]
        ...                          zlib: [ on  ]
        ...                          lzma: [ on  ]
        ...                     get_cpuid: [ on  ]
        ...                           bpf: [ on  ]
      
          GEN      /tmp/build/perf/common-cmds.h
          HOSTCC   /tmp/build/perf/fixdep.o
          HOSTLD   /tmp/build/perf/fixdep-in.o
          LINK     /tmp/build/perf/fixdep
          MKDIR    /tmp/build/perf/pmu-events/
          HOSTCC   /tmp/build/perf/pmu-events/json.o
          MKDIR    /tmp/build/perf/pmu-events/
          HOSTCC   /tmp/build/perf/pmu-events/jsmn.o
          HOSTCC   /tmp/build/perf/pmu-events/jevents.o
          HOSTLD   /tmp/build/perf/pmu-events/jevents-in.o
          PERF_VERSION = 4.9.rc8.g868cd5
          CC       /tmp/build/perf/perf-read-vdso32
        <SNIP>
      
      After:
      
        $ rm -rf /tmp/build/perf/ ; mkdir -p /tmp/build/perf ; make -k O=/tmp/build/perf -C tools/perf install-bin
        make: Entering directory '/home/acme/git/linux/tools/perf'
          BUILD:   Doing 'make -j4' parallel build
          HOSTCC   /tmp/build/perf/fixdep.o
          HOSTLD   /tmp/build/perf/fixdep-in.o
          LINK     /tmp/build/perf/fixdep
      
        Auto-detecting system features:
        ...                         dwarf: [ on  ]
        ...            dwarf_getlocations: [ on  ]
        ...                         glibc: [ on  ]
        ...                          gtk2: [ on  ]
        ...                      libaudit: [ on  ]
        ...                        libbfd: [ on  ]
        ...                        libelf: [ on  ]
        ...                       libnuma: [ on  ]
        ...        numa_num_possible_cpus: [ on  ]
        ...                       libperl: [ on  ]
        ...                     libpython: [ on  ]
        ...                      libslang: [ on  ]
        ...                     libcrypto: [ on  ]
        ...                     libunwind: [ on  ]
        ...            libdw-dwarf-unwind: [ on  ]
        ...                          zlib: [ on  ]
        ...                          lzma: [ on  ]
        ...                     get_cpuid: [ on  ]
        ...                           bpf: [ on  ]
      
          GEN      /tmp/build/perf/common-cmds.h
          MKDIR    /tmp/build/perf/fd/
          CC       /tmp/build/perf/fd/array.o
          LD       /tmp/build/perf/fd/libapi-in.o
          MKDIR    /tmp/build/perf/fs/
          CC       /tmp/build/perf/event-parse.o
          CC       /tmp/build/perf/fs/fs.o
          PERF_VERSION = 4.9.rc8.g57a92f
          CC       /tmp/build/perf/event-plugin.o
          MKDIR    /tmp/build/perf/fs/
          CC       /tmp/build/perf/fs/tracing_path.o
        <SNIP>
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1481030331-31944-3-git-send-email-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      abb26210
    • J
      perf tools: Move PERF-VERSION-FILE target into rules area · 16e2ef4e
      Jiri Olsa 提交于
      An upcoming fixdep fix needs all targets at the same area, so they'll
      fit under a signal condition block.
      
      Moving PERF-VERSION-FILE target into rules section.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1481030331-31944-2-git-send-email-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      16e2ef4e
    • W
      perf build: Check LLVM version in feature check · a940cad3
      Wang Nan 提交于
      Cancel builtin llvm and clang support when LLVM version is less than
      3.9.0: following commits uses newer API.
      
      Since Clang/LLVM's API is not guaranteed to be stable, add a
      test-llvm-version.cpp feature checker, issue warning if LLVM found in
      compiling environment is not tested yet.
      
      Committer Notes:
      
      Testing it:
      
      Environment:
      
        $ cat /etc/fedora-release
        Fedora release 25 (Twenty Five)
        $ rpm -q llvm-devel clang-devel
        llvm-devel-3.8.0-1.fc25.x86_64
        clang-devel-3.8.0-2.fc25.x86_64
        $
      
      Before:
      
        $  make -k LIBCLANGLLVM=1 O=/tmp/build/perf -C tools/perf install-bin
        make: Entering directory '/home/acme/git/linux/tools/perf'
          BUILD:   Doing 'make -j4' parallel build
        Warning: tools/include/uapi/linux/bpf.h differs from kernel
        Warning: tools/arch/arm/include/uapi/asm/kvm.h differs from kernel
          INSTALL  GTK UI
          LINK     /tmp/build/perf/perf
        /tmp/build/perf/libperf.a(libperf-in.o): In function `perf::createCompilerInvocation(llvm::SmallVector<char const*, 16u>, llvm::StringRef&, clang::DiagnosticsEngine&)':
        /home/acme/git/linux/tools/perf/util/c++/clang.cpp:56: undefined reference to `clang::tooling::newInvocation(clang::DiagnosticsEngine*, llvm::SmallVector<char const*, 16u> const&)'
        /tmp/build/perf/libperf.a(libperf-in.o): In function `perf::getModuleFromSource(llvm::SmallVector<char const*, 16u>, llvm::StringRef, llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>)':
        /home/acme/git/linux/tools/perf/util/c++/clang.cpp:68: undefined reference to `clang::CompilerInstance::CompilerInstance(std::shared_ptr<clang::PCHContainerOperations>, bool)'
        /home/acme/git/linux/tools/perf/util/c++/clang.cpp:69: undefined reference to `clang::CompilerInstance::createDiagnostics(clang::DiagnosticConsumer*, bool)'
        <SNIP>
      
      After:
      
        Makefile.config:807: No suitable libLLVM found, disabling builtin clang and llvm support. Please install llvm-dev(el) (>= 3.9.0)
      
      Updating the environment to a locally built LLVM 4.0 + clang 3.9 (forgot
      to git pull, duh) combo, all works as expected, it is properly detected
      and built into the resulting perf binary.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Reported-and-Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexei Starovoitov <ast@fb.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Joe Stringer <joe@ovn.org>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/20161206072230.7651-1-wangnan0@huawei.com
      [ Change the warning message a bit (add 'suitable' and 'builtin'), clarifying it, see committer notes above ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a940cad3
  3. 06 12月, 2016 14 次提交
  4. 02 12月, 2016 2 次提交
    • K
      perf annotate: AArch64 support · 0fcb1da4
      Kim Phillips 提交于
      This is a regex converted version from the original:
      
      	https://lkml.org/lkml/2016/5/19/461
      
      Add basic support to recognise AArch64 assembly. This allows perf to
      identify AArch64 instructions that branch to other parts within the
      same function, thereby properly annotating them.
      
      Rebased onto new cross-arch annotation bits:
      
      	https://lkml.org/lkml/2016/11/25/546
      
      Sample output:
      
      security_file_permission  vmlinux
        5.80 │    ← ret                                                  ▒
             │70:   ldr    w0, [x21,#68]                                 ▒
        4.44 │    ↓ tbnz   d0                                            ▒
             │      mov    w0, #0x24                       // #36        ▒
        1.37 │      ands   w0, w22, w0                                   ▒
             │    ↑ b.eq   60                                            ▒
        1.37 │    ↓ tbnz   e4                                            ▒
             │      mov    w19, #0x20000                   // #131072    ▒
        1.02 │    ↓ tbz    ec                                            ▒
             │90:┌─→ldr    x3, [x21,#24]                                 ▒
        1.37 │   │  add    x21, x21, #0x10                               ▒
             │   │  mov    w2, w19                                       ▒
        1.02 │   │  mov    x0, x21                                       ▒
             │   │  mov    x1, x3                                        ▒
        1.71 │   │  ldr    x20, [x3,#48]                                 ▒
             │   │→ bl     __fsnotify_parent                             ▒
        0.68 │   │↑ cbnz   60                                            ▒
             │   │  mov    x2, x21                                       ▒
        1.37 │   │  mov    w1, w19                                       ▒
             │   │  mov    x0, x20                                       ▒
        0.68 │   │  mov    w5, #0x0                        // #0         ▒
             │   │  mov    x4, #0x0                        // #0         ▒
        1.71 │   │  mov    w3, #0x1                        // #1         ▒
             │   │→ bl     fsnotify                                      ▒
        1.37 │   │↑ b      60                                            ▒
             │d0:│  mov    w0, #0x0                        // #0         ▒
             │   │  ldp    x19, x20, [sp,#16]                            ▒
             │   │  ldp    x21, x22, [sp,#32]                            ▒
             │   │  ldp    x29, x30, [sp],#48                            ▒
             │   │← ret                                                  ▒
             │e4:│  mov    w19, #0x10000                   // #65536     ▒
             │   └──b      90                                            ◆
             │ec:   brk    #0x800                                        ▒
      Press 'h' for help on key bindings
      Signed-off-by: NKim Phillips <kim.phillips@arm.com>
      Signed-off-by: NChris Ryder <chris.ryder@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Pawel Moll <pawel.moll@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Will Deacon <will.deacon@arm.com>
      Link: http://lkml.kernel.org/r/20161130092344.012e18e3e623bea395162f95@arm.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      0fcb1da4
    • K
      perf annotate: Use arch->objdump.comment_char in dec__parse() · 859afa6c
      Kim Phillips 提交于
      Presume neglected in commit 786c1b51 "perf annotate: Start supporting
      cross arch annotation".  This doesn't fix a bug since none of the
      affected arches support parsing dec/inc instructions yet.
      Signed-off-by: NKim Phillips <kim.phillips@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Chris Ryder <chris.ryder@arm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Pawel Moll <pawel.moll@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Will Deacon <will.deacon@arm.com>
      Link: http://lkml.kernel.org/r/20161130092333.1cca5dd2c77e1790d61c1e9c@arm.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      859afa6c