perf/core improvements and fixes:

. Make some POWER7 events available in sysfs, equivalent to
   what was done on x86, from Sukadev Bhattiprolu.
 
 . Add event group view, from Namyung Kim:
 
   To use it, 'perf record' should group events when recording. And then perf
   report parses the saved group relation from file header and prints them
   together if --group option is provided.  You can use 'perf evlist' command to
   see event group information:
 
     $ perf record -e '{ref-cycles,cycles}' noploop 1
     [ perf record: Woken up 2 times to write data ]
     [ perf record: Captured and wrote 0.385 MB perf.data (~16807 samples) ]
 
     $ perf evlist --group
     {ref-cycles,cycles}
 
   With this example, default perf report will show you each event
   separately like this:
 
     $ perf report
     ...
     # group: {ref-cycles,cycles}
     # ========
     # Samples: 3K of event 'ref-cycles'
     # Event count (approx.): 3153797218
     #
     # Overhead  Command      Shared Object                      Symbol
     # ........  .......  .................  ..........................
         99.84%  noploop  noploop            [.] main
          0.07%  noploop  ld-2.15.so         [.] strcmp
          0.03%  noploop  [kernel.kallsyms]  [k] timerqueue_del
          0.03%  noploop  [kernel.kallsyms]  [k] sched_clock_cpu
          0.02%  noploop  [kernel.kallsyms]  [k] account_user_time
          0.01%  noploop  [kernel.kallsyms]  [k] __alloc_pages_nodemask
          0.00%  noploop  [kernel.kallsyms]  [k] native_write_msr_safe
 
     # Samples: 3K of event 'cycles'
     # Event count (approx.): 3722310525
     #
     # Overhead  Command      Shared Object                     Symbol
     # ........  .......  .................  .........................
         99.76%  noploop  noploop            [.] main
          0.11%  noploop  [kernel.kallsyms]  [k] _raw_spin_lock
          0.06%  noploop  [kernel.kallsyms]  [k] find_get_page
          0.03%  noploop  [kernel.kallsyms]  [k] sched_clock_cpu
          0.02%  noploop  [kernel.kallsyms]  [k] rcu_check_callbacks
          0.02%  noploop  [kernel.kallsyms]  [k] __current_kernel_time
          0.00%  noploop  [kernel.kallsyms]  [k] native_write_msr_safe
 
   In this case the event group information will be shown in the end of
   header area.  So you can use --group option to enable event group view.
 
     $ perf report --group
     ...
     # group: {ref-cycles,cycles}
     # ========
     # Samples: 7K of event 'anon group { ref-cycles, cycles }'
     # Event count (approx.): 6876107743
     #
     #         Overhead  Command      Shared Object                      Symbol
     # ................  .......  .................  ..........................
         99.84%  99.76%  noploop  noploop            [.] main
          0.07%   0.00%  noploop  ld-2.15.so         [.] strcmp
          0.03%   0.00%  noploop  [kernel.kallsyms]  [k] timerqueue_del
          0.03%   0.03%  noploop  [kernel.kallsyms]  [k] sched_clock_cpu
          0.02%   0.00%  noploop  [kernel.kallsyms]  [k] account_user_time
          0.01%   0.00%  noploop  [kernel.kallsyms]  [k] __alloc_pages_nodemask
          0.00%   0.00%  noploop  [kernel.kallsyms]  [k] native_write_msr_safe
          0.00%   0.11%  noploop  [kernel.kallsyms]  [k] _raw_spin_lock
          0.00%   0.06%  noploop  [kernel.kallsyms]  [k] find_get_page
          0.00%   0.02%  noploop  [kernel.kallsyms]  [k] rcu_check_callbacks
          0.00%   0.02%  noploop  [kernel.kallsyms]  [k] __current_kernel_time
 
   As you can see the Overhead column now contains both of ref-cycles and
   cycles and header line shows group information also - 'anon group {
   ref-cycles, cycles }'.  The output is sorted by period of group leader
   first.
 
   If perf.data file doesn't contain group information, this --group
   option does nothing.  So if you want enable event group view by
   default you can set it in ~/.perfconfig file:
 
     $ cat ~/.perfconfig
     [report]
     group = true
 
   It can be overridden with command line if you want:
 
     $ perf report --no-group
 
 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.14 (GNU/Linux)
 
 iQIcBAABAgAGBQJRCqUjAAoJENZQFvNTUqpAgH0P/is+nYh9/S6Y/P7MZdjZ+Ilv
 GxA54oWYz/+4umL1A1yY0WJpvFpttXeuPHTqMPxoO60bsBZXQYafjOl5ycgfi3RO
 yL8gWJOYqP8p2Yp9lMZqxY3j5hwzFcrhNsrr3jTvfcCC9uageFEJ1m7sYlCbXOBY
 hQAIa2JveX7wanx/4OkdOKSkSVNG7yNk677BBErh/p8Ji0MhPFxH+g5L5/PAZRCd
 kDjWM1pb4g1cRu/wFOjqPxt7uo9+2GnQcLuEABx6m4lkT6vVsm98fetofab9fnVk
 fKBS6wt7lUmjaL6Kf9+X2P76Z15Th7+XMp7j5er5kpBwp1ERFZon3vbb7mTjHLof
 XZvCqhnyPilNUvdIalE3nkMazabxZz4O+rtATCup9P74bxCE3AX8Nh4YszUDUrXO
 TU60qnjqqSZxUfbmSzUtPagEGAtimzIkolXaA6cQcZ/n3esFltNyWsuJeDKPTExK
 uihMxZKys5OsPv2s/vcN/uRdf2IaMK0NB8Wx309gb+OwuiYaq9xt79LTMkc+Ro+/
 PREv0ie1wNNW9dJWxQ4gkzQRXQAnWOYAbHWoZakDbfOdfr4Byqi/ltINLiZ5pIkt
 A24q2qjdBwqaE97Oz6MpRb3gwDY6QLQTkDzqv1kEoQOTjEggoIQ3df5zVTjp+7/f
 aFqDhofWEm5bIsDnle/V
 =utt0
 -----END PGP SIGNATURE-----

Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core

Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:

. Make some POWER7 events available in sysfs, equivalent to
  what was done on x86, from Sukadev Bhattiprolu.

. Add event group view, from Namyung Kim:

  To use it, 'perf record' should group events when recording. And then perf
  report parses the saved group relation from file header and prints them
  together if --group option is provided.  You can use 'perf evlist' command to
  see event group information:

    $ perf record -e '{ref-cycles,cycles}' noploop 1
    [ perf record: Woken up 2 times to write data ]
    [ perf record: Captured and wrote 0.385 MB perf.data (~16807 samples) ]

    $ perf evlist --group
    {ref-cycles,cycles}

  With this example, default perf report will show you each event
  separately like this:

    $ perf report
    ...
    # group: {ref-cycles,cycles}
    # ========
    # Samples: 3K of event 'ref-cycles'
    # Event count (approx.): 3153797218
    #
    # Overhead  Command      Shared Object                      Symbol
    # ........  .......  .................  ..........................
        99.84%  noploop  noploop            [.] main
         0.07%  noploop  ld-2.15.so         [.] strcmp
         0.03%  noploop  [kernel.kallsyms]  [k] timerqueue_del
         0.03%  noploop  [kernel.kallsyms]  [k] sched_clock_cpu
         0.02%  noploop  [kernel.kallsyms]  [k] account_user_time
         0.01%  noploop  [kernel.kallsyms]  [k] __alloc_pages_nodemask
         0.00%  noploop  [kernel.kallsyms]  [k] native_write_msr_safe

    # Samples: 3K of event 'cycles'
    # Event count (approx.): 3722310525
    #
    # Overhead  Command      Shared Object                     Symbol
    # ........  .......  .................  .........................
        99.76%  noploop  noploop            [.] main
         0.11%  noploop  [kernel.kallsyms]  [k] _raw_spin_lock
         0.06%  noploop  [kernel.kallsyms]  [k] find_get_page
         0.03%  noploop  [kernel.kallsyms]  [k] sched_clock_cpu
         0.02%  noploop  [kernel.kallsyms]  [k] rcu_check_callbacks
         0.02%  noploop  [kernel.kallsyms]  [k] __current_kernel_time
         0.00%  noploop  [kernel.kallsyms]  [k] native_write_msr_safe

  In this case the event group information will be shown in the end of
  header area.  So you can use --group option to enable event group view.

    $ perf report --group
    ...
    # group: {ref-cycles,cycles}
    # ========
    # Samples: 7K of event 'anon group { ref-cycles, cycles }'
    # Event count (approx.): 6876107743
    #
    #         Overhead  Command      Shared Object                      Symbol
    # ................  .......  .................  ..........................
        99.84%  99.76%  noploop  noploop            [.] main
         0.07%   0.00%  noploop  ld-2.15.so         [.] strcmp
         0.03%   0.00%  noploop  [kernel.kallsyms]  [k] timerqueue_del
         0.03%   0.03%  noploop  [kernel.kallsyms]  [k] sched_clock_cpu
         0.02%   0.00%  noploop  [kernel.kallsyms]  [k] account_user_time
         0.01%   0.00%  noploop  [kernel.kallsyms]  [k] __alloc_pages_nodemask
         0.00%   0.00%  noploop  [kernel.kallsyms]  [k] native_write_msr_safe
         0.00%   0.11%  noploop  [kernel.kallsyms]  [k] _raw_spin_lock
         0.00%   0.06%  noploop  [kernel.kallsyms]  [k] find_get_page
         0.00%   0.02%  noploop  [kernel.kallsyms]  [k] rcu_check_callbacks
         0.00%   0.02%  noploop  [kernel.kallsyms]  [k] __current_kernel_time

  As you can see the Overhead column now contains both of ref-cycles and
  cycles and header line shows group information also - 'anon group {
  ref-cycles, cycles }'.  The output is sorted by period of group leader
  first.

  If perf.data file doesn't contain group information, this --group
  option does nothing.  So if you want enable event group view by
  default you can set it in ~/.perfconfig file:

    $ cat ~/.perfconfig
    [report]
    group = true

  It can be overridden with command line if you want:

    $ perf report --no-group

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
Ingo Molnar 2013-02-01 11:17:09 +01:00
commit 9c4c5fd9e6
28 changed files with 1059 additions and 267 deletions