1. 16 3月, 2013 2 次提交
    • J
      perf tests: Test breakpoint overflow signal handler · 5a6bef47
      Jiri Olsa 提交于
      Adding automated test for breakpoint event signal handler checking if
      it's executed properly.
      
      The test is related to the proper handling of the RF EFLAGS bit on
      x86_64, but it's generic for all archs.
      
      First we check the signal handler is properly called and that the
      following debug exception return to user space wouldn't trigger
      recursive breakpoint.
      
      This is related to x86_64 RF EFLAGS bit being managed in a wrong way.
      
      Second we check that we can set breakpoint in signal handler, which is
      not possible on x86_64 if the signal handler is executed with RF EFLAG
      set.
      
      This test is inpired by overflow tests done by Vince Weaver.
      Signed-off-by: NJiri Olsa <jolsa@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Link: http://lkml.kernel.org/r/1362940871-24486-6-git-send-email-jolsa@redhat.com
      [ committer note: s/pr_err/pr_debug/g i.e. print just OK or FAILED in non verbose mode ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      5a6bef47
    • B
      perf tools: Introduce tools/lib/lk library · 85c66be1
      Borislav Petkov 提交于
      This introduces the tools/lib/lk library, that will gradually have the
      routines that now are used in tools/perf/ and other tools and that can
      be shared.
      
      Start by carving out debugfs routines for general use.
      Signed-off-by: NBorislav Petkov <bp@suse.de>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Link: http://lkml.kernel.org/r/1361374353-30385-5-git-send-email-bp@alien8.de
      [ committer note: Add tools/lib/lk/ to perf's MANIFEST so that its tarballs continue to build ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      85c66be1
  2. 14 3月, 2013 1 次提交
  3. 15 2月, 2013 3 次提交
  4. 07 2月, 2013 1 次提交
  5. 30 1月, 2013 2 次提交
    • P
      perf tools: Make numa benchmark optional · 79d824e3
      Peter Hurley 提交于
      Commit "perf: Add 'perf bench numa mem'..." added a NUMA performance
      benchmark to perf. Make this optional and test for required
      dependencies.
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Acked-by: NIngo Molnar <mingo@kernel.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1359337882-21821-1-git-send-email-peter@hurleysoftware.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      79d824e3
    • I
      perf: Add 'perf bench numa mem' NUMA performance measurement suite · 1c13f3c9
      Ingo Molnar 提交于
      Add a suite of NUMA performance benchmarks.
      
      The goal was simulate the behavior and access patterns of real NUMA
      workloads, via a wide range of parameters, so this tool goes well
      beyond simple bzero() measurements that most NUMA micro-benchmarks use:
      
       - It processes the data and creates a chain of data dependencies,
         like a real workload would. Neither the compiler, nor the
         kernel (via KSM and other optimizations) nor the CPU can
         eliminate parts of the workload.
      
       - It randomizes the initial state and also randomizes the target
         addresses of the processing - it's not a simple forward scan
         of addresses.
      
       - It provides flexible options to set process, thread and memory
         relationship information: -G sets "global" memory shared between
         all test processes, -P sets "process" memory shared by all
         threads of a process and -T sets "thread" private memory.
      
       - There's a NUMA convergence monitoring and convergence latency
         measurement option via -c and -m.
      
       - Micro-sleeps and synchronization can be injected to provoke lock
         contention and scheduling, via the -u and -S options. This simulates
         IO and contention.
      
       - The -x option instructs the workload to 'perturb' itself artificially
         every N seconds, by moving to the first and last CPU of the system
         periodically. This way the stability of convergence equilibrium and
         the number of steps taken for the scheduler to reach equilibrium again
         can be measured.
      
       - The amount of work can be specified via the -l loop count, and/or
         via a -s seconds-timeout value.
      
       - CPU and node memory binding options, to test hard binding scenarios.
         THP can be turned on and off via madvise() calls.
      
       - Live reporting of convergence progress in an 'at glance' output format.
         Printing of convergence and deconvergence events.
      
      The 'perf bench numa mem -a' option will start an array of about 30
      individual tests that will each output such measurements:
      
       # Running  5x5-bw-thread, "perf bench numa mem -p 5 -t 5 -P 512 -s 20 -zZ0q --thp  1"
        5x5-bw-thread,                         20.276, secs,           runtime-max/thread
        5x5-bw-thread,                         20.004, secs,           runtime-min/thread
        5x5-bw-thread,                         20.155, secs,           runtime-avg/thread
        5x5-bw-thread,                          0.671, %,              spread-runtime/thread
        5x5-bw-thread,                         21.153, GB,             data/thread
        5x5-bw-thread,                        528.818, GB,             data-total
        5x5-bw-thread,                          0.959, nsecs,          runtime/byte/thread
        5x5-bw-thread,                          1.043, GB/sec,         thread-speed
        5x5-bw-thread,                         26.081, GB/sec,         total-speed
      
      See the help text and the code for more details.
      
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Hugh Dickins <hughd@google.com>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      1c13f3c9
  6. 25 1月, 2013 7 次提交
    • N
      perf tools: Do not include PERF-VERSION-FILE to Makefile · 3cecaa20
      Namhyung Kim 提交于
      When make runs it tries to update the Makefile rules by reading all of
      included Makefiles.  During the perf build it checks PERF-VERSION-FILE
      to get the current version number.  But it triggers Makefile update so
      that make runs again with the update Makefile and, in turn, users will
      see duplicate CHK message on the second path.
      
      Running make with -d option for debugging tells me this:
      
      GNU Make 3.82
      Built for x86_64-redhat-linux-gnu
      Copyright (C) 2010  Free Software Foundation, Inc.
      License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
      This is free software: you are free to change and redistribute it.
      There is NO WARRANTY, to the extent permitted by law.
      Reading makefiles...
      Reading makefile `Makefile'...
      Reading makefile `../scripts/Makefile.include' (search path) (no ~ expansion)...
      Reading makefile `config/utilities.mak' (search path) (no ~ expansion)...
      Reading makefile `PERF-VERSION-FILE' (search path) (don't care) (no ~ expansion)...
      Reading makefile `config/feature-tests.mak' (search path) (don't care) (no ~ expansion)...
          CHK -fstack-protector-all
          CHK -Wstack-protector
          CHK -Wvolatile-register-var
      ...
      Updating makefiles....
       Considering target file `PERF-VERSION-FILE'.
       Must remake target `PERF-VERSION-FILE'.
      Invoking recipe from Makefile:52 to update target `PERF-VERSION-FILE'.
      Putting child 0x14037a0 (PERF-VERSION-FILE) PID 31925 on the chain.
      Live child 0x14037a0 (PERF-VERSION-FILE) PID 31925
      PERF_VERSION = 3.8.rc3.gf751db6
      Reaping winning child 0x14037a0 PID 31925
      Removing child 0x14037a0 PID 31925 from chain.
       Successfully remade target file `PERF-VERSION-FILE'.
      ...
      Re-executing[1]: make -d                       <------------ here
      GNU Make 3.82
      Built for x86_64-redhat-linux-gnu
      Copyright (C) 2010  Free Software Foundation, Inc.
      License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
      This is free software: you are free to change and redistribute it.
      There is NO WARRANTY, to the extent permitted by law.
      Reading makefiles...
      Reading makefile `Makefile'...
      Reading makefile `../scripts/Makefile.include' (search path) (no ~ expansion)...
      Reading makefile `config/utilities.mak' (search path) (no ~ expansion)...
      Reading makefile `PERF-VERSION-FILE' (search path) (don't care) (no ~ expansion)...
      Reading makefile `config/feature-tests.mak' (search path) (don't care) (no ~ expansion)...
          CHK -fstack-protector-all
          CHK -Wstack-protector
          CHK -Wvolatile-register-var
      ...
      
      Actually PERF-VERSION-FILE is used only for perf.c to #define
      PERF_VERSION macro.  So make it like a C header file and include it
      during compiling the perf.c file will remove the need of being
      included into Makefile.  Hench no need to update the Makefile and no
      CHK lines anymore.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1358337594-10916-1-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      3cecaa20
    • N
      perf tools: Get rid of unused include of config.mak · 1aa3d178
      Namhyung Kim 提交于
      These lines are came from GIT Makefile and never used for perf.
      
      I found it from make -d output during working on previous patch.
      
      Updating makefiles....
       Considering target file `arch/x86/Makefile'.
       No need to remake target `arch/x86/Makefile'.
       Considering target file `config.mak'.
        File `config.mak' does not exist.
       Must remake target `config.mak'.
       Failed to remake target file `config.mak'.
       Considering target file `config.mak.autogen'.
        File `config.mak.autogen' does not exist.
       Must remake target `config.mak.autogen'.
       Failed to remake target file `config.mak.autogen'.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1358337594-10916-2-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      1aa3d178
    • N
      perf ui/gtk: Factor out common browser routines · 0da41ce9
      Namhyung Kim 提交于
      Separate out common codes for setting up a browser, and move report/hist
      browser codes into hists.c.  The common codes can be used for annotation
      browser.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1356078018-31905-2-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      0da41ce9
    • J
      perf tests: Fix PYTHONPATH for python-use test tracepoints · 09ecbb07
      Jiri Olsa 提交于
      If there's not OUTPUT variable defined the PYTHONPATH ends up with
      /python. We need to remove the extra '/'.
      Signed-off-by: NJiri Olsa <jolsa@redhat.com>
      Link: http://lkml.kernel.org/n/tip-h1hzfyfcdxjnuq9fin2cjwlr@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      09ecbb07
    • N
      perf tests: Check python path on attr and binding test · 000ae33f
      Namhyung Kim 提交于
      Current perf test code tries to execute python version 2 in order to
      test attributes on perf_event_open syscall.  However it's not default
      python version anymore a system can have python v3 only or v2 with a
      different name (e.g. python2).  So if there's no such python interpreter
      with the name 'python', the test would fail like this (yes, it's
      happened on my new archlinux laptop :).
      
      13: struct perf_event_attr setup                 🇸🇭 python: command not found
       FAILED!
      
      As we can pass name of the python interpreter on make, use it for
      the attr test also.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1355729101-31317-1-git-send-email-namhyung@kernel.org
      [ committer note: Added the same mechanism to the python binding test ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      000ae33f
    • A
      perf test: Check for linking problems in the python binding · 54359d33
      Arnaldo Carvalho de Melo 提交于
      It just will add the O= builddir to PYTHONPATH and try to 'use perf',
      which will, in verbose mode show the python backtrace with the missing
      symbols, such as in the problem fixed in the patch after this one:
      
        # perf test -v 15
        15: Try 'use perf' in python, checking link problems       :
        --- start ---
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        ImportError: /home/acme/git/build/perf//python/perf.so: undefined symbol: test_attr__enabled
        ---- end ----
        Try 'use perf' in python, checking link problems: FAILED!
        #
      
      Loooong overdue, done.
      
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-zmd2oq9gz6t1u145ub7qm2nv@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      54359d33
    • N
      perf test: Add a test case for hists__{match,link} · f8ebb0cd
      Namhyung Kim 提交于
      As they are used from diff and event group report, add a test case to
      verify their behaviors.
      
      In this test I made a fake machine and two evsel.  Each evsel got 10
      samples (so hist entries) - 5 are common and the rests are not.  So
      after hists__match() both of them will have 5 entries with pair set.
      
      And the second evsel has a collapsed entry so that the total number is 9
      - I made it in order to simulate more realistic case.  Thus after
      hists__link the first entry will have 14 entries - 5 are common (w/
      pair), 5 are unmatch (w/o pair) and 4 are dummy (w/ pair).  And the
      second entry will have 9 entries all have its pair.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/r/1355128197-18193-5-git-send-email-namhyung@kernel.org
      [ committer note: fixed up clashes with cset that moved methods to machine.h ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      f8ebb0cd
  7. 23 1月, 2013 1 次提交
  8. 12 12月, 2012 1 次提交
  9. 11 12月, 2012 1 次提交
  10. 09 12月, 2012 3 次提交
  11. 20 11月, 2012 1 次提交
    • D
      perf: Make perf build for x86 with UAPI disintegration applied · d2709c7c
      David Howells 提交于
      Make perf build for x86 once the UAPI disintegration patches for that arch
      have been applied by adding the appropriate -I flags - in the right order -
      and then converting some #includes that use ../.. notation to find main kernel
      headerfiles to use <asm/foo.h> and <linux/foo.h> instead.
      
      Note that -Iarch/foo/include/uapi is present _before_ -Iarch/foo/include.
      This makes sure we get the userspace version of the pt_regs struct.  Ideally,
      we wouldn't have the latter -I flag at all, but unfortunately we want
      asm/svm.h and asm/vmx.h in builtin-kvm.c and these aren't part of the UAPI -
      at least not for x86.  I wonder if the bits outside of the __KERNEL__ guards
      *should* be transferred there.
      
      I note also that perf seems to do its dependency handling manually by listing
      all the header files it might want to use in LIB_H in the Makefile.  Can this
      be changed to use -MD?
      
      Note that to do make this work, we need to export and UAPI disintegrate
      linux/hw_breakpoint.h, which I think should've been exported previously so that
      perf can access the bits.  We have to do this in the same patch to maintain
      bisectability.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      d2709c7c
  12. 15 11月, 2012 14 次提交
  13. 09 11月, 2012 1 次提交
  14. 02 11月, 2012 1 次提交
  15. 01 11月, 2012 1 次提交