2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-13 08:04:45 +08:00
linux-next/tools
Thomas Gleixner bda58ee8f8 perf/core improvements and fixes:
perf trace:
 
 - Augment the payload of syscall entry/exit tracepoints with the contents
   of pointer arguments, such as the "filename" argument to the "open"
   syscall or the 'struct sockaddr *' argument to the 'connect' syscall.
 
   This is done using a BPF program that gets compiled and attached to
   various syscalls:sys_enter_NAME tracepoints, copying via a BPF map and
   "bpf-output" perf event the raw_syscalls:sys_enter tracepoint payload +
   the contents of pointer arguments using the "probe_read", "probe_read_str"
   and "perf_event_output" BPF functions.
 
   The 'perf trace' codebase now just processes these augmented tracepoints
   using the existing beautifiers that now check if there is more in the
   perf_sample->raw_data than what is expected for a normal syscall enter
   tracepoint (the common preamble, syscall id, up to six parameters),
   using that with hand crafted struct beautifiers.
 
   This is just to show how to augment the existing tracepoints, work will
   be done to use DWARF or BTF info to do the pretty-printing and to create
   the collectors.
 
   For now this is done using an example restricted C BPF program, but the
   end goal is to have this all autogenerated and done transparently.
 
   Its still useful to have this example as one can use it as an skeleton and
   write more involved filters, see the etcsnoop.c BPF example, for instance.
 
   E.g.:
 
   # cd tools/perf/examples/bpf/
   # perf trace -e augmented_syscalls.c ping -c 1 ::1
      0.000 ( 0.008 ms): openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC) = 3
      0.020 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libcap.so.2, flags: CLOEXEC) = 3
      0.051 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libidn.so.11, flags: CLOEXEC) = 3
      0.076 ( 0.003 ms): openat(dfd: CWD, filename: /lib64/libcrypto.so.1.1, flags: CLOEXEC) = 3
      0.106 ( 0.003 ms): openat(dfd: CWD, filename: /lib64/libresolv.so.2, flags: CLOEXEC) = 3
      0.136 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libm.so.6, flags: CLOEXEC) = 3
      0.194 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libc.so.6, flags: CLOEXEC) = 3
      0.224 ( 0.003 ms): openat(dfd: CWD, filename: /lib64/libz.so.1, flags: CLOEXEC) = 3
      0.252 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libdl.so.2, flags: CLOEXEC) = 3
      0.275 ( 0.003 ms): openat(dfd: CWD, filename: /lib64/libpthread.so.0, flags: CLOEXEC) = 3
      0.730 ( 0.007 ms): open(filename: /usr/lib/locale/locale-archive, flags: CLOEXEC) = 3
   PING ::1(::1) 56 data bytes
      0.834 ( 0.008 ms): connect(fd: 5, uservaddr: { .family: INET6, port: 1025, addr: ::1 }, addrlen: 28) = 0
   64 bytes from ::1: icmp_seq=1 ttl=64 time=0.032 ms
 
   --- ::1 ping statistics ---
   1 packets transmitted, 1 received, 0% packet loss, time 0ms
   rtt min/avg/max/mdev = 0.032/0.032/0.032/0.000 ms
      0.914 ( 0.036 ms): sendto(fd: 4<socket:[843044]>, buff: 0x55b5e52e9720, len: 64, addr: { .family: INET6, port: 58, addr: ::1 }, addr_len: 28) = 64
   #
 
   Use 'perf trace -e augmented_syscalls.c,close ping -c 1 ::1' to see the
   'close' calls as well, as it is not one of the syscalls augmented in that .c
   file.
 
   (Arnaldo Carvalho de Melo)
 
 - Alias 'umount' to 'umount2' (Benjamin Peterson)
 
 perf stat: (Jiri Olsa)
 
 - Make many builtin-stat.c functions generic, moving display functions
   to a separate file, prep work for adding the ability to store/display
   stat data in perf record/top.
 
 perf annotate: (Kim Phillips)
 
 - Handle arm64 move instructions
 
 perf report: (Thomas Richter):
 
 - Create auxiliary trace data files for s390
 
 libtraceevent: (Tzvetomir Stoyanov (VMware)):
 
 - Split trace-seq related APIs in a separate header file.
 
 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCW5BHbgAKCRCyPKLppCJ+
 J6WGAQDoPezUDbL8azCcscZZaaT4W63oAyVizOdy4qUIw5D2BAD+P2bYTmW3EKeO
 d3FXWqtpMRNR0CFhWPi57XpJiia0oA0=
 =ICRn
 -----END PGP SIGNATURE-----

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

Pull perf/core improvements and fixes from Arnaldo:

perf trace:

- Augment the payload of syscall entry/exit tracepoints with the contents
  of pointer arguments, such as the "filename" argument to the "open"
  syscall or the 'struct sockaddr *' argument to the 'connect' syscall.

  This is done using a BPF program that gets compiled and attached to
  various syscalls:sys_enter_NAME tracepoints, copying via a BPF map and
  "bpf-output" perf event the raw_syscalls:sys_enter tracepoint payload +
  the contents of pointer arguments using the "probe_read", "probe_read_str"
  and "perf_event_output" BPF functions.

  The 'perf trace' codebase now just processes these augmented tracepoints
  using the existing beautifiers that now check if there is more in the
  perf_sample->raw_data than what is expected for a normal syscall enter
  tracepoint (the common preamble, syscall id, up to six parameters),
  using that with hand crafted struct beautifiers.

  This is just to show how to augment the existing tracepoints, work will
  be done to use DWARF or BTF info to do the pretty-printing and to create
  the collectors.

  For now this is done using an example restricted C BPF program, but the
  end goal is to have this all autogenerated and done transparently.

  Its still useful to have this example as one can use it as an skeleton and
  write more involved filters, see the etcsnoop.c BPF example, for instance.

  E.g.:

  # cd tools/perf/examples/bpf/
  # perf trace -e augmented_syscalls.c ping -c 1 ::1
     0.000 ( 0.008 ms): openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC) = 3
     0.020 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libcap.so.2, flags: CLOEXEC) = 3
     0.051 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libidn.so.11, flags: CLOEXEC) = 3
     0.076 ( 0.003 ms): openat(dfd: CWD, filename: /lib64/libcrypto.so.1.1, flags: CLOEXEC) = 3
     0.106 ( 0.003 ms): openat(dfd: CWD, filename: /lib64/libresolv.so.2, flags: CLOEXEC) = 3
     0.136 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libm.so.6, flags: CLOEXEC) = 3
     0.194 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libc.so.6, flags: CLOEXEC) = 3
     0.224 ( 0.003 ms): openat(dfd: CWD, filename: /lib64/libz.so.1, flags: CLOEXEC) = 3
     0.252 ( 0.004 ms): openat(dfd: CWD, filename: /lib64/libdl.so.2, flags: CLOEXEC) = 3
     0.275 ( 0.003 ms): openat(dfd: CWD, filename: /lib64/libpthread.so.0, flags: CLOEXEC) = 3
     0.730 ( 0.007 ms): open(filename: /usr/lib/locale/locale-archive, flags: CLOEXEC) = 3
  PING ::1(::1) 56 data bytes
     0.834 ( 0.008 ms): connect(fd: 5, uservaddr: { .family: INET6, port: 1025, addr: ::1 }, addrlen: 28) = 0
  64 bytes from ::1: icmp_seq=1 ttl=64 time=0.032 ms

  --- ::1 ping statistics ---
  1 packets transmitted, 1 received, 0% packet loss, time 0ms
  rtt min/avg/max/mdev = 0.032/0.032/0.032/0.000 ms
     0.914 ( 0.036 ms): sendto(fd: 4<socket:[843044]>, buff: 0x55b5e52e9720, len: 64, addr: { .family: INET6, port: 58, addr: ::1 }, addr_len: 28) = 64
  #

  Use 'perf trace -e augmented_syscalls.c,close ping -c 1 ::1' to see the
  'close' calls as well, as it is not one of the syscalls augmented in that .c
  file.

  (Arnaldo Carvalho de Melo)

- Alias 'umount' to 'umount2' (Benjamin Peterson)

perf stat: (Jiri Olsa)

- Make many builtin-stat.c functions generic, moving display functions
  to a separate file, prep work for adding the ability to store/display
  stat data in perf record/top.

perf annotate: (Kim Phillips)

- Handle arm64 move instructions

perf report: (Thomas Richter):

- Create auxiliary trace data files for s390

libtraceevent: (Tzvetomir Stoyanov (VMware)):

- Split trace-seq related APIs in a separate header file.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2018-09-06 14:56:44 +02:00
..
accounting
arch Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-08-26 11:25:21 -07:00
bpf tools: bpftool: return from do_event_pipe() on bad arguments 2018-08-23 20:17:57 +02:00
build Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-08-15 15:04:25 -07:00
cgroup
firewire
gpio
hv Tools: hv: vss: fix loop device detection 2018-07-03 13:02:33 +02:00
iio iio: Add modifier for DUV light 2018-07-23 19:18:10 +01:00
include tools: introduce test_and_clear_bit 2018-08-22 16:48:36 +02:00
kvm/kvm_stat
laptop
leds
lib perf/core improvements and fixes: 2018-09-06 14:56:44 +02:00
memory-model tools/memory-model: Rename litmus tests to comply to norm7 2018-07-17 09:30:36 +02:00
nfsd
objtool Kbuild updates for v4.19 2018-08-15 12:09:03 -07:00
pci tools: PCI: Add MSI-X support 2018-07-19 11:47:13 +01:00
pcmcia
perf perf tests: Fix record+probe_libc_inet_pton.sh without ping's debuginfo 2018-09-05 10:47:56 -03:00
power treewide: convert ISO_8859-1 text comments to utf-8 2018-08-23 18:48:43 -07:00
scripts Kbuild: fix # escaping in .cmd files for future Make 2018-04-11 00:03:02 +09:00
spi
testing Merge branch 'ida-4.19' of git://git.infradead.org/users/willy/linux-dax 2018-08-26 11:48:42 -07:00
thermal/tmon
time
usb tools: usb: ffs-test: Fix build on big endian systems 2018-07-17 10:12:51 +03:00
virtio tools/virtio: add kmalloc_array stub 2018-07-27 16:54:40 +03:00
vm tools/vm/page-types.c: add support for idle page tracking 2018-08-17 16:20:28 -07:00
wmi
Makefile