tree 87416bd2fabf3ab2fd41a62cd44fbbba7c462833
parent ad5013d5699d30ded0cdbbc68b93b2aa28222c6e
parent 675f52b23743f396c585fc9d135435be37f320d8
author Ingo Molnar <mingo@kernel.org> 1484209405 +0100
committer Ingo Molnar <mingo@kernel.org> 1484209405 +0100
mergetag object 675f52b23743f396c585fc9d135435be37f320d8
 type commit
 tag perf-core-for-mingo-4.11-20170111
 tagger Arnaldo Carvalho de Melo <acme@redhat.com> 1484164147 -0300
 
 perf/core improvements and fixes:
 
 New features:
 
 - Add more triggers to switch the output file (perf.data.TIMESTAMP).
 
   Now, in addition to switching to a different output file when
   receiving a SIGUSR2, one can also specify file size and time based
   triggers:
 
        perf record -a --switch-output=signal
 
   is equivalent to what we had before:
 
        perf record -a --switch-output
 
   While we can also ask for the file to be "sliced" by size, taking
   into account that that will happen only when we get woken up by
   the kernel, i.e. one has to take into account the --mmap-pages (the
   size of the perf mmap ring buffer):
 
        perf record -a --switch-output=2G
 
   will break the perf.data output into multiple files limited to 2GB
   of samples, right when generating the output.
 
   For time based samples, alert() will be used, so to have 1 minute
   limited perf.data output files:
 
       perf record -a --switch-output=1m
 
   (Jiri Olsa)
 
 - Remove the need to use -e only for syscalls and --event only for
   tracepoints/HW/SW/etc events, i.e. now one can use:
 
       perf trace -e nanosleep,futex,sched:sched_switch ./workload
 
   or:
 
       perf trace --event nanosleep,futex,sched:sched_switch ./workload
 
   And have it tracing raw_syscalls:sys_{enter,exit} for the nanosleep
   and futex syscalls, formatting those as strace does while also
   tracing sched:sched_switch, ordering it all into one strace like
   output.
 
   Using '!' as the first character in the -e/--event argument remains
   a way to negate the list of syscalls, i.e. all syscalls except for
   the ones specified, doesn't affect the other kinds of events.
 
   E.g:
 
   [root@jouet ~] # perf trace -e sched:sched_switch,nanosleep usleep 1
      0.000 ( 0.028 ms): usleep/28150 nanosleep(rqtp: 0x7ffe4201b9f0) ...
      0.028 (         ): sched:sched_switch:usleep:28150 [120] S ==> swapper/0:0 [120])
      0.000 ( 0.065 ms): usleep/28150  ... [continued]: nanosleep()) = 0
   [root@jouet ~]#
 
   (Arnaldo Carvalho de Melo)
 
 - 'perf kallsyms' toy tool to look for extended symbol information on
   the running kernel and demonstrate the machine/thread/symbol APIs for
   use in other tools, such as 'perf probe' (Arnaldo Carvalho de Melo)
 
 Infrastructure:
 
 - Add missing linux/kernel.h include to subcmd.h (Arnaldo Carvalho de Melo)
   tools: Sync x86's vmx.h with the kernel
 
 - Create libdir directory before installing libperf-jvmti.so (Laura Abbott)
 
 - Fix typo in perf_evlist__start_workload() (Soramichi Akiyama)
 
 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABCAAGBQJYdo7BAAoJENZQFvNTUqpA+dUP/0D4ha5gxJGnUFMUhYDj6HwC
 CLIfr54fh11rEyLrz5Yp5i2NYKqRvKgYOOTy8tKdJcihXE3PuClUJLqMyenWt9NP
 e9zXIKi4ug82kMeAImYrKDHXRaXy5U5X3DLx6//gRkTQwDC2pH+zK+WpUUANrlHL
 nu9rR3L7zSgtjsHLfdC7Nj0aDxe5dZZJScOBjUv0+bzsZo2EnbNLR8z0WWpTSJ72
 +0+4TgAm/3eg99G6MLAILn8Y7BCT0eIMZtEVXRgjqwm4b1xpE2BzK64yxfatU62f
 GVd7PSwfGiKxVy62ughh9ZPvQASTr63AhdfFnfjLnfUZY1VRLIcY3/Dttw5Mv1m5
 vHosPWkUjcXbpxZ7DNlgKJqkcXOTW4wZJ+RsYHJthszqcqQuRHxF2BEAp+utJdxK
 UuQVORpqaG0W8pHqvDjBT+M/1gTRA+Rc9RUj/bCOUbKarpOUMW5XO/IGn8CpHgDB
 Fpr2usPoAxT4FhYUUpbpB9gagdreI2Ntqs3FAMkbO2wxIxdNEztBJFrVhuac5wg4
 YQzjwWhC44Dw4X5Yt0uIydOaeA8buEM6oKVKiyCuduz3rlWrjhAdKKoIXbpPQwBj
 mhLMx6quQAokVCI1lYl9a6LpOwvE98HKzdYq69aDymdLaBssCBtblO2OFaM92dzT
 SnbLWQzFbFWUizTMXn9v
 =MfnZ
 -----END PGP SIGNATURE-----

Merge tag 'perf-core-for-mingo-4.11-20170111' 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:

New features:

- Add more triggers to switch the output file (perf.data.TIMESTAMP).

  Now, in addition to switching to a different output file when
  receiving a SIGUSR2, one can also specify file size and time based
  triggers:

       perf record -a --switch-output=signal

  is equivalent to what we had before:

       perf record -a --switch-output

  While we can also ask for the file to be "sliced" by size, taking
  into account that that will happen only when we get woken up by
  the kernel, i.e. one has to take into account the --mmap-pages (the
  size of the perf mmap ring buffer):

       perf record -a --switch-output=2G

  will break the perf.data output into multiple files limited to 2GB
  of samples, right when generating the output.

  For time based samples, alert() will be used, so to have 1 minute
  limited perf.data output files:

      perf record -a --switch-output=1m

  (Jiri Olsa)

- Remove the need to use -e only for syscalls and --event only for
  tracepoints/HW/SW/etc events, i.e. now one can use:

      perf trace -e nanosleep,futex,sched:sched_switch ./workload

  or:

      perf trace --event nanosleep,futex,sched:sched_switch ./workload

  And have it tracing raw_syscalls:sys_{enter,exit} for the nanosleep
  and futex syscalls, formatting those as strace does while also
  tracing sched:sched_switch, ordering it all into one strace like
  output.

  Using '!' as the first character in the -e/--event argument remains
  a way to negate the list of syscalls, i.e. all syscalls except for
  the ones specified, doesn't affect the other kinds of events.

  E.g:

  [root@jouet ~] # perf trace -e sched:sched_switch,nanosleep usleep 1
     0.000 ( 0.028 ms): usleep/28150 nanosleep(rqtp: 0x7ffe4201b9f0) ...
     0.028 (         ): sched:sched_switch:usleep:28150 [120] S ==> swapper/0:0 [120])
     0.000 ( 0.065 ms): usleep/28150  ... [continued]: nanosleep()) = 0
  [root@jouet ~]#

  (Arnaldo Carvalho de Melo)

- 'perf kallsyms' toy tool to look for extended symbol information on
  the running kernel and demonstrate the machine/thread/symbol APIs for
  use in other tools, such as 'perf probe' (Arnaldo Carvalho de Melo)

Infrastructure improvements:

- Add missing linux/kernel.h include to subcmd.h (Arnaldo Carvalho de Melo)
  tools: Sync x86's vmx.h with the kernel

- Create libdir directory before installing libperf-jvmti.so (Laura Abbott)

- Fix typo in perf_evlist__start_workload() (Soramichi Akiyama)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
