15 Oct, 2009

1 commit

  • Add a new option "--filter " to perf record, and
    it should be right after "-e trace_point":

    #./perf record -R -f -e irq:irq_handler_entry --filter irq==18
    ^C
    # ./perf trace
    perf-4303 ... irq_handler_entry: irq=18 handler=eth0
    init-0 ... irq_handler_entry: irq=18 handler=eth0
    init-0 ... irq_handler_entry: irq=18 handler=eth0
    init-0 ... irq_handler_entry: irq=18 handler=eth0
    init-0 ... irq_handler_entry: irq=18 handler=eth0

    See Documentation/trace/events.txt for the syntax of filter
    expressions.

    Signed-off-by: Li Zefan
    Acked-by: Peter Zijlstra
    Acked-by: Frederic Weisbecker
    Cc: Steven Rostedt
    Cc: Tom Zanussi
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Li Zefan
     

25 Sep, 2009

1 commit


21 Sep, 2009

1 commit

  • Bye-bye Performance Counters, welcome Performance Events!

    In the past few months the perfcounters subsystem has grown out its
    initial role of counting hardware events, and has become (and is
    becoming) a much broader generic event enumeration, reporting, logging,
    monitoring, analysis facility.

    Naming its core object 'perf_counter' and naming the subsystem
    'perfcounters' has become more and more of a misnomer. With pending
    code like hw-breakpoints support the 'counter' name is less and
    less appropriate.

    All in one, we've decided to rename the subsystem to 'performance
    events' and to propagate this rename through all fields, variables
    and API names. (in an ABI compatible fashion)

    The word 'event' is also a bit shorter than 'counter' - which makes
    it slightly more convenient to write/handle as well.

    Thanks goes to Stephane Eranian who first observed this misnomer and
    suggested a rename.

    User-space tooling and ABI compatibility is not affected - this patch
    should be function-invariant. (Also, defconfigs were not touched to
    keep the size down.)

    This patch has been generated via the following script:

    FILES=$(find * -type f | grep -vE 'oprofile|[^K]config')

    sed -i \
    -e 's/PERF_EVENT_/PERF_RECORD_/g' \
    -e 's/PERF_COUNTER/PERF_EVENT/g' \
    -e 's/perf_counter/perf_event/g' \
    -e 's/nb_counters/nb_events/g' \
    -e 's/swcounter/swevent/g' \
    -e 's/tpcounter_event/tp_event/g' \
    $FILES

    for N in $(find . -name perf_counter.[ch]); do
    M=$(echo $N | sed 's/perf_counter/perf_event/g')
    mv $N $M
    done

    FILES=$(find . -name perf_event.*)

    sed -i \
    -e 's/COUNTER_MASK/REG_MASK/g' \
    -e 's/COUNTER/EVENT/g' \
    -e 's/\/event_id/g' \
    -e 's/counter/event/g' \
    -e 's/Counter/Event/g' \
    $FILES

    ... to keep it as correct as possible. This script can also be
    used by anyone who has pending perfcounters patches - it converts
    a Linux kernel tree over to the new naming. We tried to time this
    change to the point in time where the amount of pending patches
    is the smallest: the end of the merge window.

    Namespace clashes were fixed up in a preparatory patch - and some
    stylistic fallout will be fixed up in a subsequent patch.

    ( NOTE: 'counters' are still the proper terminology when we deal
    with hardware registers - and these sed scripts are a bit
    over-eager in renaming them. I've undone some of that, but
    in case there's something left where 'counter' would be
    better than 'event' we can undo that on an individual basis
    instead of touching an otherwise nicely automated patch. )

    Suggested-by: Stephane Eranian
    Acked-by: Peter Zijlstra
    Acked-by: Paul Mackerras
    Reviewed-by: Arjan van de Ven
    Cc: Mike Galbraith
    Cc: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    Cc: Steven Rostedt
    Cc: Benjamin Herrenschmidt
    Cc: David Howells
    Cc: Kyle McMartin
    Cc: Martin Schwidefsky
    Cc: "David S. Miller"
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc:
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

28 Aug, 2009

1 commit

  • While opening a trace event counter, every events are saved in
    the trace.info file. But we only want to save the
    specifications of the events we are using.

    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Steven Rostedt
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     

16 Aug, 2009

1 commit

  • Related to a shadowed variable bug fix Valdis Kletnieks noticed
    that perf does not get built with -Wshadow, which could have
    helped us avoid the bug.

    So enable -Wshadow and also enable the following warnings on
    perf builds, in addition to the already enabled -Wall -Wextra
    -std=gnu99 warnings:

    -Wcast-align
    -Wformat=2
    -Wshadow
    -Winit-self
    -Wpacked
    -Wredundant-decls
    -Wstack-protector
    -Wstrict-aliasing=3
    -Wswitch-default
    -Wswitch-enum
    -Wno-system-headers
    -Wundef
    -Wvolatile-register-var
    -Wwrite-strings
    -Wbad-function-cast
    -Wmissing-declarations
    -Wmissing-prototypes
    -Wnested-externs
    -Wold-style-definition
    -Wstrict-prototypes
    -Wdeclaration-after-statement

    And change/fix the perf code to build cleanly under GCC 4.3.2.

    The list of warnings enablement is rather arbitrary: it's based
    on my (quick) reading of the GCC manpages and trying them on
    perf.

    I categorized the warnings based on individually enabling them
    and looking whether they trigger something in the perf build.
    If i liked those warnings (i.e. if they trigger for something
    that arguably could be improved) i enabled the warning.

    If the warnings seemed to come from language laywers spamming
    the build with tons of nuisance warnings i generally kept them
    off. Most of the sign conversion related warnings were in
    this category. (A second patch enabling some of the sign
    warnings might be welcome - sign bugs can be nasty.)

    I also kept warnings that seem to make sense from their manpage
    description and which produced no actual warnings on our code
    base. These warnings might still be turned off if they end up
    being a nuisance.

    I also left out a few warnings that are not supported in older
    compilers.

    [ Note that these changes might break the build on older
    compilers i did not test, or on non-x86 architectures that
    produce different warnings, so more testing would be welcome. ]

    Reported-by: Valdis.Kletnieks@vt.edu
    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

09 Aug, 2009

1 commit

  • Brice Goglin reported:

    > I can easily sort them by thread id, but I don't know how to match
    > my 4 events with each group of 4 lines.

    Also report the counter id and the time running/enabled
    stats (in case the counter got time-shared).

    Reported-by: Brice Goglin
    Signed-off-by: Peter Zijlstra
    Tested-by: Brice Goglin
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

23 Jul, 2009

1 commit

  • If "/sys/kernel/debug" is not a debugfs mount point, search for the debugfs
    filesystem in /proc/mounts, but also allows the user to specify
    '--debugfs-dir=blah' or set the environment variable: 'PERF_DEBUGFS_DIR'

    Signed-off-by: Jason Baron
    [ also made it probe "/debug" by default ]
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Jason Baron
     

07 Jun, 2009

1 commit