lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1272696080-16435-1-git-send-email-tzanussi@gmail.com>
Date:	Sat,  1 May 2010 01:41:18 -0500
From:	Tom Zanussi <tzanussi@...il.com>
To:	linux-kernel@...r.kernel.org
Cc:	mingo@...e.hu, fweisbec@...il.com, rostedt@...dmis.org,
	acme@...stprotocols.net
Subject: [RFC][PATCH 0/2] perf/live buildid

The first patch in this patchset removes the current live-mode build
id support, which probably makes sense to apply independent of the
second.

The second is an RFC patch whose immediate purpose is to replace the
current build-id support in 'live mode' with something that makes more
sense for live mode - injecting the build ids before the samples that
use them.

To do that, a new perf command, perf-inject, is introduced.

perf-inject basically pipes the stdout received from live-mode
perf-record to the stdin of live-mode perf-report, but in-between
provides a means for the event stream to be interpreted and augmented
with 'injected events'.

In this case, the injected events are the same build-ids recorded in
the current version, but provided in a more timely fashion.

perf-inject is meant to be a live-mode-only utility and normally
provides no output other than the stdout piping that is its purpose;
the output below uses the -v options on both perf-inject and
perf-report to show what it's basically doing.

I haven't had time to try it out yet, but the idea would be that if
you had the relevant build-ids on a remote system, say via
perf-archive, you'd be able to run a live-mode perf session on one
system and have the output displayed live on the remote system.

Currently perf-inject is used only to provide build-ids, but it should
be easy to add support for other injected events e.g. it could be used
to look up and create uid->user name events, or syscall id->syscall
name events.

root@...picana:~/perf-scripts# perf record -o - ./hackbench 10 | perf inject -v -b | perf report -v -i -

Running with 10*40 (== 400) tasks.
Time: 0.696
Looking at the vmlinux_path (5 entries long)
Using /lib/modules/2.6.34-rc5/build/vmlinux for symbols
build id found for /lib/modules/2.6.34-rc5/build/vmlinux: a925642e28500d4aeaffc62b2fc9071641ba303c
build id event received for /lib/modules/2.6.34-rc5/build/vmlinux: a925642e28500d4aeaffc62b2fc9071641ba303c
Looking at the vmlinux_path (5 entries long)
no build_id found for /lib/libc-2.8.90.so
build id found for ./hackbench: 1f1a90c20ffd00527b6002483df73a96540f041e
no build_id found for /lib/libpthread-2.8.90.so
Using /lib/modules/2.6.34-rc5/build/vmlinux for symbols
build id event received for ./hackbench: 1f1a90c20ffd00527b6002483df73a96540f041e
build id found for /lib/modules/2.6.34-rc5/kernel/drivers/net/forcedeth.ko: fdeed20f17ce5ba3c12d9a0f5d9add57db7e8d3f
build id event received for /lib/modules/2.6.34-rc5/kernel/drivers/net/forcedeth.ko: fdeed20f17ce5ba3c12d9a0f5d9add57db7e8d3f
no build_id found for /lib/ld-2.8.90.so
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.121 MB - (~5299 samples) ]
# Samples: 2019104685
#
# Overhead    Command                                            Shared Object  Symbol
# ........  .........  .......................................................  ......
#
     8.22%  hackbench  /lib/modules/2.6.34-rc5/build/vmlinux                    0xffffffff811fbb5d ! [k] copy_user_generic_string
     7.12%  hackbench  /lib/modules/2.6.34-rc5/build/vmlinux                    0xffffffff8111ef55 ! [k] kfree

Tom Zanussi (2):
  perf/live: don't synthesize build ids at the end of a live mode trace
  perf: add perf-inject builtin

 tools/perf/Makefile                |    1 +
 tools/perf/builtin-annotate.c      |    2 +-
 tools/perf/builtin-buildid-list.c  |    2 +-
 tools/perf/builtin-diff.c          |    4 +-
 tools/perf/builtin-inject.c        |  228 ++++++++++++++++++++++++++++++++++++
 tools/perf/builtin-kmem.c          |    2 +-
 tools/perf/builtin-lock.c          |    2 +-
 tools/perf/builtin-record.c        |    9 +--
 tools/perf/builtin-report.c        |    2 +-
 tools/perf/builtin-sched.c         |    2 +-
 tools/perf/builtin-timechart.c     |    2 +-
 tools/perf/builtin-top.c           |    2 +-
 tools/perf/builtin-trace.c         |    2 +-
 tools/perf/builtin.h               |    1 +
 tools/perf/perf.c                  |    1 +
 tools/perf/util/header.c           |   96 +++++-----------
 tools/perf/util/header.h           |    2 -
 tools/perf/util/session.c          |    3 +-
 tools/perf/util/session.h          |    3 +-
 tools/perf/util/trace-event-read.c |   19 +++-
 tools/perf/util/trace-event.h      |    2 +-
 21 files changed, 293 insertions(+), 94 deletions(-)
 create mode 100644 tools/perf/builtin-inject.c

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ