1. 11 8月, 2010 7 次提交
  2. 07 8月, 2010 4 次提交
  3. 06 8月, 2010 10 次提交
  4. 04 8月, 2010 2 次提交
    • S
      perf: expose event__process function · b83f920e
      Srikar Dronamraju 提交于
      The event__process function is useful in processing /proc/<pid>/maps.  All of
      the functions that are called from event__process are defined in util/event.c.
      Though its defined in builtin-top.c, it could be reused for perf probe for
      uprobes. Hence moving it to util/event.c and exporting the function.
      
      LKML-Reference: <20100802123851.GD22812@linux.vnet.ibm.com>
      Signed-off-by: NSrikar Dronamraju <srikar@linux.vnet.ibm.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b83f920e
    • D
      perf events: Fix mmap offset determination · b5a63254
      Dave Martin 提交于
      Fix buggy-looking code which unnecessarily adjusts the file offset
      fields read from /proc/*/maps.
      
      This may have gone unnoticed since the offset is usually 0 (and the
      logic in util/symbol.c may work incorrectly for other offset values).
      
      Commiter note:
      
      This fixes a bug introduced in 4af8b35d, there is no need to shift pgoff
      twice, the show_map_vma routine in fs/proc/task_mmu.c already converts
      it from the number of pages to the size in bytes, and that is what
      appears in /proc/PID/map.
      
      Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
      Cc: Will Deacon <Will.Deacon@arm.com>
      LKML-Reference: <1280836116-6654-2-git-send-email-dave.martin@linaro.org>
      Signed-off-by: NDave Martin <dave.martin@linaro.org>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b5a63254
  5. 03 8月, 2010 3 次提交
    • A
      perf tools: Don't keep unreferenced maps when unmaps are detected · 0a1eae39
      Arnaldo Carvalho de Melo 提交于
      For a file with:
      
      [root@emilia linux-2.6-tip]# perf report -D -fi allmodconfig-j32.perf.data | grep events:
           TOTAL events:      36933
            MMAP events:       9056
            LOST events:          0
            COMM events:       1702
            EXIT events:       1887
        THROTTLE events:          8
      UNTHROTTLE events:          8
            FORK events:       1894
            READ events:          0
          SAMPLE events:      22378
            ATTR events:          0
      EVENT_TYPE events:          0
      TRACING_DATA events:          0
        BUILD_ID events:          0
      [root@emilia linux-2.6-tip]#
      
      Testing with valgrind and making perf_session__delete() a nop, so that
      we can notice how many maps were actually deleted due to not having any
      samples on it:
      
      ==== HEAP SUMMARY:
      
      Before:
      
      ==10339==     in use at exit: 8,909,997 bytes in 68,690 blocks
      ==10339==   total heap usage: 78,696 allocs, 10,007 frees, 11,925,853 bytes allocated
      
      After:
      
      ==10506==     in use at exit: 8,902,605 bytes in 68,606 blocks
      ==10506==   total heap usage: 78,696 allocs, 10,091 frees, 11,925,853 bytes allocated
      
      I.e. just 84 detected unmaps with no hits out of 9056 for this workload,
      not much, but in some other long running workload this may save more
      bytes.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      0a1eae39
    • A
      perf session: Invalidate last_match when removing threads from rb_tree · 70597f21
      Arnaldo Carvalho de Melo 提交于
      If we receive two PERF_RECORD_EXIT for the same thread, we can end up
      reusing session->last_match and trying to remove the thread twice from
      the rb_tree, causing a segfault, so invalidade last_match in
      perf_session__remove_thread.
      
      Receiving two PERF_RECORD_EXIT for the same thread is a bug, but its a
      harmless one if we make the tool more robust, like this patch does.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      70597f21
    • A
      perf session: Free the ref_reloc_sym memory at the right place · 076c6e45
      Arnaldo Carvalho de Melo 提交于
      Which is at perf_session__destroy_kernel_maps, counterpart to the
      perf_session__create_kernel_maps where the kmap structure is located, just
      after the vmlinux_maps.
      
      Make it also check if the kernel maps were actually created, which may not
      be the case if, for instance, perf_session__new can't complete due to
      permission problems in, for instance, a 'perf report' case, when a
      segfault will take place, that is how this was noticed.
      
      The problem was introduced in d65a458b, thus post .35.
      
      This also adds code to release guest machines as them are also created
      in perf_session__create_kernel_maps, so should be deleted on this newly
      introduced counterpart, perf_session__destroy_kernel_maps.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      076c6e45
  6. 02 8月, 2010 9 次提交
    • F
      perf, sched migration: Librarize task states and event headers helpers · 1b0ff06e
      Frederic Weisbecker 提交于
      Librarize the task state and event headers helpers as they can
      be generally useful.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Nikhil Rao <ncrao@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      1b0ff06e
    • F
      perf, sched migration: Librarize the GUI class · df92b408
      Frederic Weisbecker 提交于
      Export the GUI facility in the common library path. It is
      going to be useful for other scheduler views.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Nikhil Rao <ncrao@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      df92b408
    • F
      perf, sched migration: Make the GUI class client agnostic · 699b6d92
      Frederic Weisbecker 提交于
      Make the perf migration GUI generic so that it can be reused for
      other kinds of trace painting. No more notion of CPUs or runqueue
      from the GUI class, it's now used as a library by the trace parser.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Nikhil Rao <ncrao@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      699b6d92
    • F
      perf, sched migration: Make it vertically scrollable · 70d815a3
      Frederic Weisbecker 提交于
      With scheduler traces covering more than two cpus, rectangles
      of the CPUs 3 and more are not visibles.
      
      This makes the vertical navigation scrollable so that all of the
      CPUs rectangles are available.
      
      We also want to be able to zoom vertically, so that we can fit at
      best the screen with CPU rectangles, but that's for later.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Nikhil Rao <ncrao@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      70d815a3
    • N
      perf, sched migration: Parameterize cpu height and spacing · 0cddf56a
      Nikhil Rao 提交于
      Without vertical zoom, it is not possible to see all CPUs in a trace
      taken on a larger machine. This patch parameterizes the height and
      spacing of CPUs so that you can fit more cpus into the screen.
      
      Ideally we should dynamically size/space the CPU rectangles with some
      minimum threshold. Until then, this patch is a stop-gap.
      Signed-off-by: NNikhil Rao <ncrao@google.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      0cddf56a
    • N
      perf, sched migration: Fix key bindings · be6d9476
      Nikhil Rao 提交于
      EVT_KEY_DOWN and EVT_LEFT_DOWN events are not bound to the RootFrame
      event handler. As a result, zoom/scroll via keyboard events do not
      work. This patch adds the missing bindings.
      Signed-off-by: NNikhil Rao <ncrao@google.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      be6d9476
    • F
      perf, sched migration: Ignore unhandled task states · 207f90fc
      Frederic Weisbecker 提交于
      Stop printing an error message when we don't have the letter
      for a given task state. All we need to know is if the task is
      in the TASK_RUNNING state.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Nikhil Rao <ncrao@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      207f90fc
    • F
      perf, sched migration: Handle ignored migrate out events · 749e5074
      Frederic Weisbecker 提交于
      Migrate out events may happen on tasks that are not in the
      runqueue, for example this is the case for tasks that are
      sleeping. In this case, we don't want to log the migrate out
      event in the source runqueue because the task is not eventually
      in the runqueue and we have already logged its sleep event.
      
      This fixes timeslices that spuriously propagate a sleep event
      from the previous timeslice.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Nikhil Rao <ncrao@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      749e5074
    • F
      perf: New migration tool overview · 880d22f2
      Frederic Weisbecker 提交于
      This brings a GUI tool that displays an overview of the load
      of tasks proportion in each CPUs.
      
      The CPUs forward progress is cut in timeslices. A new timeslice
      is created for every runqueue event: a task gets pushed out or
      pulled in the runqueue.
      
      For each timeslice, every CPUs rectangle is colored with a red
      power that describes the local load against the total load.
      This more red is the rectangle, the higher is the given CPU load.
      This load is the number of tasks running on the CPU, without
      any distinction against the scheduler policy of the tasks, for
      now.
      
      Also for each timeslice, the event origin is depicted on the
      CPUs that triggered it using a thin colored line on top of the
      rectangle timeslice.
      
      These events are:
      
      * sleep: a task went to sleep and has then been pulled out the
        runqueue. The origin color in the thin line is dark blue.
      
      * wake up: a task woke up and has then been pushed in the
        runqueue. The origin color is yellow.
      
      * wake up new: a new task woke up and has then been pushed in the
        runqueue. The origin color is green.
      
      * migrate in: a task migrated in the runqueue due to a load
        balancing operation. The origin color is violet.
      
      * migrate out: reverse of the previous one. Migrate in events
        usually have paired migrate out events in another runqueue.
        The origin color is light blue.
      
      Clicking on a timeslice provides the runqueue event details
      and the runqueue state.
      
      The CPU rectangles can be navigated using the usual arrow
      controls. Horizontal zooming in/out is possible with the
      "+" and "-" buttons.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Venkatesh Pallipadi <venki@google.com>
      Cc: Pierre Tardy <tardyp@gmail.com>
      Cc: Nikhil Rao <ncrao@google.com>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      880d22f2
  7. 31 7月, 2010 2 次提交
    • A
      perf tools: Release session and symbol resources on exit · d65a458b
      Arnaldo Carvalho de Melo 提交于
      So that we reduce the noise when looking for leaks using tools such as
      valgrind.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      d65a458b
    • A
      perf tools: Release thread resources on PERF_RECORD_EXIT · 591765fd
      Arnaldo Carvalho de Melo 提交于
      For long running sessions with many threads with short lifetimes the
      amount of memory that the buildid process takes is too much.
      
      Since we don't have hist_entries that may be pointing to them, we can
      just release the resources associated with each thread when the exit
      (PERF_RECORD_EXIT) event is received.
      
      For normal processing we need to annotate maps with hits, and thus
      hist_entries pointing to it and drop the ones that had none. Will be
      done in a followup patch.
      
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      591765fd
  8. 30 7月, 2010 3 次提交
    • S
      perf probe: Rename common fields/functions from kprobe to probe. · 0e60836b
      Srikar Dronamraju 提交于
      As a precursor for perf to support uprobes, rename fields/functions
      that had kprobe in their name but can be shared across perf-kprobes
      and perf-uprobes to probe.
      
      Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: "Frank Ch. Eigler" <fche@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Jim Keniston <jkenisto@linux.vnet.ibm.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mark Wielaard <mjw@redhat.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Naren A Devaiah <naren.devaiah@in.ibm.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Randy Dunlap <rdunlap@xenotime.net>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      LKML-Reference: <20100729141351.GG21723@linux.vnet.ibm.com>
      Signed-off-by: NSrikar Dronamraju <srikar@linux.vnet.ibm.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      0e60836b
    • A
      perf tui: Make CTRL+Z suspend perf · 73ae8f85
      Arnaldo Carvalho de Melo 提交于
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      73ae8f85
    • D
      perf symbols: Improve debug image search when loading symbols · 6da80ce8
      Dave Martin 提交于
      Changes:
      	* Simplification of the main search loop on dso__load()
      	* Replace the search with a 2-pass search:
      		* First, try to find an image with a proper symtab.
      		* Second, repeat the search, accepting dynsym.
      
      A second scan should only ever happen when needed debug images are
      missing from the buildid cache or stale, i.e., when the cache is out of
      sync.
      
      Currently, the second scan also happens when using separated debug
      images, since the caching logic doesn't currently know how to cache
      those.  Improvements to the cache behaviour ought to solve that.
      Signed-off-by: NDave Martin <dave.martin@linaro.org>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      6da80ce8