1. 21 Nov, 2009 4 commits
  2. 20 Nov, 2009 1 commit
    • Li Zefan's avatar
      perf: Add 'perf kmem' tool · ba77c9e1
      Li Zefan authored
      This tool is mostly a perf version of kmemtrace-user.
      
      The following information is provided by this tool:
      
       - the total amount of memory allocated and fragmentation per
         call-site
      
       - the total amount of memory allocated and fragmentation per
         allocation
      
       - total memory allocated and fragmentation in the collected
         dataset - ...
      
      Sample output:
      
       # ./perf kmem record
       ^C
       # ./perf kmem --stat caller --stat alloc -l 10
      
       ------------------------------------------------------------------------------
       Callsite          | Total_alloc/Per |  Total_req/Per  |  Hit   | Fragmentation
       ------------------------------------------------------------------------------
       0xc052f37a        |   790528/4096   |   790528/4096   |    193 |    0.000%
       0xc0541d70        |   524288/4096   |   524288/4096   |    128 |    0.000%
       0xc051cc68        |   481600/200    |   481600/200    |   2408 |    0.000%
       0xc0572623        |   297444/676    |   297440/676    |    440 |    0.001%
       0xc05399f1        |    73476/164    |    73472/164    |    448 |    0.005%
       0xc05243bf        |    51456/256    |    51456/256    |    201 |    0.000%
       0xc0730d0e        |    31844/497    |    31808/497    |     64 |    0.113%
       0xc0734c4e        |    17152/256    |    17152/256    |     67 |    0.000%
       0xc0541a6d        |    16384/128    |    16384/128    |    128 |    0.000%
       0xc059c217        |    13120/40     |    13120/40     |    328 |    0.000%
       0xc0501ee6        |    11264/88     |    11264/88     |    128 |    0.000%
       0xc04daef0        |     7504/682    |     7128/648    |     11 |    5.011%
       0xc04e14a3        |     4216/191    |     4216/191    |     22 |    0.000%
       0xc05041ca        |     3524/44     |     3520/44     |     80 |    0.114%
       0xc0734fa3        |     2104/701    |     1620/540    |      3 |   23.004%
       0xc05ec9f1        |     2024/289    |     2016/288    |      7 |    0.395%
       0xc06a1999        |     1792/256    |     1792/256    |      7 |    0.000%
       0xc0463b9a        |     1584/144    |     1584/144    |     11 |    0.000%
       0xc0541eb0        |     1024/16     |     1024/16     |     64 |    0.000%
       0xc06a19ac        |      896/128    |      896/128    |      7 |    0.000%
       0xc05721c0        |      772/12     |      768/12     |     64 |    0.518%
       0xc054d1e6        |      288/57     |      280/56     |      5 |    2.778%
       0xc04b562e        |      157/31     |      154/30     |      5 |    1.911%
       0xc04b536f        |       80/16     |       80/16     |      5 |    0.000%
       0xc05855a0        |       64/64     |       36/36     |      1 |   43.750%
       ------------------------------------------------------------------------------
      
       ------------------------------------------------------------------------------
       Alloc Ptr         | Total_alloc/Per |  Total_req/Per  |  Hit   | Fragmentation
       ------------------------------------------------------------------------------
       0xda884000        |  1052672/4096   |  1052672/4096   |    257 |    0.000%
       0xda886000        |   262144/4096   |   262144/4096   |     64 |    0.000%
       0xf60c7c00        |    16512/128    |    16512/128    |    129 |    0.000%
       0xf59a4118        |    13120/40     |    13120/40     |    328 |    0.000%
       0xdfd4b2c0        |    11264/88     |    11264/88     |    128 |    0.000%
       0xf5274600        |     7680/256    |     7680/256    |     30 |    0.000%
       0xe8395000        |     5948/594    |     5464/546    |     10 |    8.137%
       0xe59c3c00        |     5748/479    |     5712/476    |     12 |    0.626%
       0xf4cd1a80        |     3524/44     |     3520/44     |     80 |    0.114%
       0xe5bd1600        |     2892/482    |     2856/476    |      6 |    1.245%
       ...               | ...             | ...             | ...    | ...
       ------------------------------------------------------------------------------
      
      SUMMARY
      =======
      Total bytes requested: 2333626
      Total bytes allocated: 2353712
      Total bytes wasted on internal fragmentation: 20086
      Internal fragmentation: 0.853375%
      
      TODO:
      - show sym+offset in 'callsite' column
      - show cross node allocation stats
      - collect more useful stats?
      - ...
      Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
      Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Cc: linux-mm@kvack.org <linux-mm@kvack.org>
      LKML-Reference: <4B064AF5.9060208@cn.fujitsu.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      ba77c9e1
  3. 19 Nov, 2009 15 commits
    • Masami Hiramatsu's avatar
      x86: Instruction decoder test should generate build warning · ce64c620
      Masami Hiramatsu authored
      Since some instructions are not decoded correctly by older
      versions of objdump, it may cause false positive error in insn
      decoder posttest.
      
      This changes build error of insn decoder test to build warning.
      Signed-off-by: default avatarMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Cc: Randy Dunlap <rdunlap@xenotime.net>
      Cc: Jim Keniston <jkenisto@us.ibm.com>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      LKML-Reference: <20091116230631.5250.41579.stgit@harusame>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      ce64c620
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Don't die() in mmap_dispatch_perf_file · 6b0cb5f9
      Arnaldo Carvalho de Melo authored
      Propagate the error, that, interestingly, are already handled by
      all callers :-)
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258649757-17554-3-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      6b0cb5f9
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Eliminate some more die() uses in library functions · d5eed904
      Arnaldo Carvalho de Melo authored
      This time in perf_header__adds_write, propagating the do_write
      error returns.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258649757-17554-2-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      d5eed904
    • Arnaldo Carvalho de Melo's avatar
      perf tools: perf_header__read() shouldn't die() · 4dc0a04b
      Arnaldo Carvalho de Melo authored
      And also don't call the constructor in it, this way it adheres
      to the model the other methods follow.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258649757-17554-1-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      4dc0a04b
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Capture the running kernel buildid too · 2446042c
      Arnaldo Carvalho de Melo authored
      [root@doppio linux-2.6-tip]# perf record -a -f sleep 3s ; perf
      buildid-list | grep vmlinux
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.171 MB perf.data (~7489
      samples) ] 18e7cc53db62a7d35e9d6f6c9ddc23017d38ee9a vmlinux
      [root@doppio linux-2.6-tip]#
      
      Several refactorings were needed so that we can have symmetry
      between dsos__load_modules() and dsos__load_kernel(), i.e. those
      functions will respectively create and add to the dsos list the
      loaded modules and kernel, with its buildids, but not load its
      symbols. That is something the subcomands that need will have to
      call dso__load_kernel_sym(), just like we do with modules with
      dsos__load_module_sym()/dso__load_module_sym().
      
      Next csets will actually use this info to stop producing bogus
      results using mismatched vmlinux and .ko files.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Roland McGrath <roland@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258582853-8579-4-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      2446042c
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Record the build_ids of kernel modules too · f1617b40
      Arnaldo Carvalho de Melo authored
      [root@doppio linux-2.6-tip]# perf record -a sleep 2s;perf
      buildid-list|tail [ perf record: Woken up 1 times to write data
      ] [ perf record: Captured and wrote 0.162 MB perf.data (~7078
      samples) ] 881588fa57b3c1696bc91e5e804a11304f093535 [cfg80211]
      4d47ce1da9d16bad00c962c072451b7c681e82df [snd_page_alloc]
      5146377e89a7caac617f9782f1a02e46263d3a31 [rfkill]
      2153b937bff0d345fea83b63a2e1d3138569f83d [i915]
      4e6fb1bb97362e3ee4d306988b9ad6912d5fb9ae [drm_kms_helper]
      f56ef2bf853e3a798f0d8d51f797622e5dc4420e [drm]
      b0d157a3b5c4e017329ffc07c64623cd6ad65e95 [i2c_algo_bit]
      8125374b905ef9fa8b65d98e166b008ad952f198 [i2c_core]
      fc875c6e5a90e7b915e9d445d0efc859e1b2678c [video]
      4b43c5006589f977e9762fdfc7ac1a92b72fca52 [output]
      [root@doppio linux-2.6-tip]#
      
      elfutils libdwfl/linux-kernel-modules.c was used as reference,
      as suggested by Roland McGrath.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Roland McGrath <roland@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258582853-8579-3-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      f1617b40
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Kill struct build_id_list and die() another day · e30a3d12
      Arnaldo Carvalho de Melo authored
      No need for this struct and its allocations, we can just use the
      ->build_id member we already have in struct dso, then ask for it
      to be read, and later traverse the dsos list, writing the
      buildid table to the perf.data file.
      
      As a bonus, one more die() function got killed.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258582853-8579-2-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      e30a3d12
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Fix comparision of build_ids · d3379ab9
      Arnaldo Carvalho de Melo authored
      When we read the build_id from the DSO name to then index into
      /usr/lib/debug/.buildid/DSO_BUILD_ID[0:2]/DSO_BUILD_ID[2:], we
      were jumping directly to the comparision with the buildid we
      already have in dso->build_id (that came from the perf.data
      build_id section, collected at perf record time)
      unconditionally, even if we didn't had recorded it, and
      furthermore, comparing a formatted buildid with a rawbuildid, yikes.
      
      Fix it by deleting the dso__read_build_id() function, that was
      really misdesigned anyway, and do the necessary checks and
      correct comparison of raw buildids.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258582853-8579-1-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      d3379ab9
    • Arnaldo Carvalho de Melo's avatar
      perf top: Don't allocate the source parsing members upfront · b269876c
      Arnaldo Carvalho de Melo authored
      Defer to parse_source() time allocating it.
      
      Now we use about this much memory:
      
       1724 root      20   0 42104  10m  940 S  0.0  0.4   0:00.23 perf
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258490282-1821-3-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      b269876c
    • Arnaldo Carvalho de Melo's avatar
      perf top: Allocate space only for the number of counters used · 5a8e5a30
      Arnaldo Carvalho de Melo authored
      Reducing memory consumption on a typical desktop machine:
      
      From:
      
      32710 root      20   0  172m 142m 1056 S  0.0  4.7   0:00.37
      perf
      
      To:
      
        420 root      20   0 47528  16m 1056 R  0.3  0.5   0:00.24 perf
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258490282-1821-2-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      5a8e5a30
    • Arnaldo Carvalho de Melo's avatar
      perf top: Introduce helper function to access symbol from sym_entry · 51a472de
      Arnaldo Carvalho de Melo authored
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258490282-1821-1-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      51a472de
    • Arnaldo Carvalho de Melo's avatar
      perf top: Suppress DSO column if only one is present · 1a105f74
      Arnaldo Carvalho de Melo authored
      E.g.
      
      [root@doppio ~]# perf top -U
      ---------------------------------------------------------------------------
         PerfTop:     482 irqs/sec  kernel:100.0% [1000Hz cycles],  (all, 2 CPUs)
      ---------------------------------------------------------------------------
      DSO: vmlinux
                   samples  pcnt function
                   _______ _____ _________________________
      
                    471.00 47.9% read_hpet
                     57.00  5.8% acpi_os_read_port
                     30.00  3.1% hpet_next_event
                     30.00  3.1% find_busiest_group
                     22.00  2.2% schedule
                     18.00  1.8% sched_clock_local
                     14.00  1.4% _spin_lock_irqsave
                     14.00  1.4% native_read_tsc
                     13.00  1.3% trace_hardirqs_off
                      9.00  0.9% fget_light
                      9.00  0.9% ioread8
                      8.00  0.8% do_sys_poll
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258479655-28662-3-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      1a105f74
    • Arnaldo Carvalho de Melo's avatar
      perf top: Auto adjust symbol and dso widths · 13cc5079
      Arnaldo Carvalho de Melo authored
      We pre-calculate the symbol name length, then after we sort the
      entries to print, calculate the biggest one and use that for the
      symbol name width justification, then use the
      dso->long_name->len to justificate the DSO name, deciding whether
      using the short or long name depending on how much space we have
      on the terminal.
      
      IOW give as much info to the user as the terminal width allows.
      Suggested-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258479655-28662-2-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      13cc5079
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Add a long_name_len member to struct dso · cfc10d3b
      Arnaldo Carvalho de Melo authored
      Using a two bytes hole we already had and since we also need to
      calculate this strlen for fetching the buildids. We'll use it in
      'perf top' to auto-adjust the output based on the terminal
      width.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1258479655-28662-1-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      cfc10d3b
    • Luck, Tony's avatar
      perf tools: Add ia64 support for tools/perf/ · 11ada26c
      Luck, Tony authored
      Compiler on ia64 rejects the "-m64" option.
      Add arch specific pieces to perf.h
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <4b02d7f43514327a@agluck-desktop.sc.intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      11ada26c
  4. 17 Nov, 2009 13 commits
  5. 16 Nov, 2009 7 commits
    • Arnaldo Carvalho de Melo's avatar
      perf buildid-list: New plumbing command · c34984b2
      Arnaldo Carvalho de Melo authored
      With this we can list the buildids in a perf.data file so that
      we can pipe them to other, distro specific tools that from the
      buildids can figure out separate packages (foo-debuginfo) where
      we can find the matching symtabs so that perf report can do its
      job.
      
      E.g:
      
      [acme@doppio linux-2.6-tip]$ perf buildid-list | head -5
      8e08b117e5458ad3f85da16d42d0fc5cd21c5869
      520c2387a587cc5acfcf881e27dba1caaeab4b1f
      ec8dd400904ddfcac8b1c343263a790f977159dc
      7caedbca5a6d8ab39a7fe44bd28c07d3e14a3f3f
      379bb828fd08859dbea73279f04abefabc95a6a3
      [acme@doppio linux-2.6-tip]$ perf buildid-list -v | head -5
      8e08b117e5458ad3f85da16d42d0fc5cd21c5869 /sbin/init
      520c2387a587cc5acfcf881e27dba1caaeab4b1f /lib64/ld-2.10.1.so
      ec8dd400904ddfcac8b1c343263a790f977159dc /lib64/libc-2.10.1.so
      7caedbca5a6d8ab39a7fe44bd28c07d3e14a3f3f /sbin/udevd
      379bb828fd08859dbea73279f04abefabc95a6a3 /lib64/libdl-2.10.1.so
      [acme@doppio linux-2.6-tip]$
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1258396365-29217-5-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      c34984b2
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Introduce dsos__fprintf_buildid · 9e03eb2d
      Arnaldo Carvalho de Melo authored
      To print the buildids in the list of dsos. Will be used by 'perf
      buildid-list'
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1258396365-29217-4-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      9e03eb2d
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Generalize perf_header__adds_read() · 37562eac
      Arnaldo Carvalho de Melo authored
      Renaming it to perf_header__process_sections() and passing a
      callback to handle each feature.
      
      The next changesets will introduce 'perf buildid-list' that will
      handle just the HEADER_BUILD_ID table, ignoring all the other
      features.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1258396365-29217-3-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      37562eac
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Debug.h needs to include event.h for event_t · 8f41146a
      Arnaldo Carvalho de Melo authored
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1258396365-29217-2-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      8f41146a
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Pass the offset to perf_header__read_build_ids() · 84fe8488
      Arnaldo Carvalho de Melo authored
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1258396365-29217-1-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      84fe8488
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Call the symbol filter in dso__synthesize_plt_symbols() · 82164161
      Arnaldo Carvalho de Melo authored
      We need to pass the symbol to the filter so that, for instance,
      'perf top' can do filtering and also set the private area it
      manages, setting the ->map pointer, etc.
      
      I found this while running 'perf top' on a machine where hits
      happened on PLT symbols, where ->map wasn't being set up and
      segfaults thus happened.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1258386491-20278-1-git-send-email-acme@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      82164161
    • Peter Zijlstra's avatar
      perf_event: Optimize perf_output_lock() · 559fdc3c
      Peter Zijlstra authored
      The purpose of perf_output_{un,}lock() is to:
      
       1) avoid publishing incomplete data
          [ possible when publishing a head that is ahead of an entry
            that is still being written ]
      
       2) guarantee fwd progress
          [ a simple refcount on pending writers doesn't need to drop to
            0, making it so would end up implementing something like forced
            quiecent states of RCU ]
      
      To satisfy the above without undue complexity it serializes
      between CPUs, this means that a pending writer can only be the
      same cpu in a nested context, and since (under normal operation)
      a cpu always makes progress we're good -- if the head is only
      published when the bottom  most writer completes.
      
      Now we don't need to disable IRQs in order to serialize between
      CPUs, disabling preemption ought to be sufficient, esp since we
      already deal with nesting due to NMIs.
      
      This avoids potentially expensive (and needless) local IRQ
      disable/enable ops.
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <1258373161.26714.254.camel@laptop>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      559fdc3c