1. 03 4月, 2010 3 次提交
    • A
      perf kmem: Fixup the symbol address before using it · 71cf8b8f
      Arnaldo Carvalho de Melo 提交于
      We get absolute addresses in the events, but relative ones from the
      symbol subsystem, so calculate the absolute address by asking for the
      map where the symbol was found, that has the place where the DSO was
      actually loaded.
      
      For the core kernel this poses no problems if the kernel is not
      relocated by things like kexec, or if we use /proc/kallsyms, but for
      modules we were getting really large, negative offsets.
      
      LKML-Reference: <new-submission>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      71cf8b8f
    • A
      perf kmem: Resolve kernel symbols again · e727ca73
      Arnaldo Carvalho de Melo 提交于
      Due to the assumption in perf_session__new that the kernel maps would be
      created using the fake PERF_RECORD_MMAP event in a perf.data file 'perf
      kmem --stat caller', that doesn't have such event, ends up not being
      able to resolve the kernel addresses.
      
      Fix it by calling perf_session__create_kernel_maps() in __cmd_kmem().
      
      LKML-Reference: <new-submission>
      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>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      e727ca73
    • A
      perf symbols: map_groups__find_symbol must return the map too · 7e5e1b14
      Arnaldo Carvalho de Melo 提交于
      Tools need to know from which map in the map_group a symbol was resolved
      to, so that, for isntance, we can annotate kernel modules symbols by
      getting its precise name, etc.
      
      Also add the _by_name variants for completeness.
      
      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>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      7e5e1b14
  2. 04 2月, 2010 1 次提交
    • A
      perf symbols: Remove perf_session usage in symbols layer · 9de89fe7
      Arnaldo Carvalho de Melo 提交于
      I noticed while writing the first test in 'perf regtest' that to
      just test the symbol handling routines one needs to create a
      perf session, that is a layer centered on a perf.data file,
      events, etc, so I untied these layers.
      
      This reduces the complexity for the users as the number of
      parameters to most of the symbols and session APIs now was
      reduced while not adding more state to all the map instances by
      only having data that is needed to split the kernel (kallsyms
      and ELF symtab sections) maps and do vmlinux relocation on the
      main kernel map.
      Signed-off-by: NArnaldo 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: <1265223128-11786-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9de89fe7
  3. 29 1月, 2010 1 次提交
  4. 20 1月, 2010 2 次提交
    • P
      perf kmem: Print usage help for unknown commands · b00eca8c
      Pekka Enberg 提交于
      This patch fixes "perf kmem" to print usage help instead of
      doing nothing.
      Signed-off-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
      LKML-Reference: <1263921971-10782-1-git-send-email-penberg@cs.helsinki.fi>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b00eca8c
    • P
      perf kmem: Increase "Hit" column length · 47103277
      Pekka Enberg 提交于
      It's fairly easy to overflow the "Hit" column with just few
      seconds of tracing so increase the column length to avoid broken
      formatting.
      Signed-off-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
      LKML-Reference: <1263921803-10214-1-git-send-email-penberg@cs.helsinki.fi>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      47103277
  5. 16 1月, 2010 1 次提交
  6. 14 1月, 2010 1 次提交
    • A
      perf tools: Encode kernel module mappings in perf.data · b7cece76
      Arnaldo Carvalho de Melo 提交于
      We were always looking at the running machine /proc/modules,
      even when processing a perf.data file, which only makes sense
      when we're doing 'perf record' and 'perf report' on the same
      machine, and in close sucession, or if we don't use modules at
      all, right Peter? ;-)
      
      Now, at 'perf record' time we read /proc/modules, find the long
      path for modules, and put them as PERF_MMAP events, just like we
      did to encode the reloc reference symbol for vmlinux. Talking
      about that now it is encoded in .pgoff, so that we can use
      .{start,len} to store the address boundaries for the kernel so
      that when we reconstruct the kmaps tree we can do lookups right
      away, without having to fixup the end of the kernel maps like we
      did in the past (and now only in perf record).
      
      One more step in the 'perf archive' direction when we'll finally
      be able to collect data in one machine and analyse in another.
      Signed-off-by: NArnaldo 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: <1263396139-4798-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b7cece76
  7. 28 12月, 2009 5 次提交
  8. 16 12月, 2009 2 次提交
  9. 15 12月, 2009 1 次提交
  10. 14 12月, 2009 7 次提交
  11. 12 12月, 2009 2 次提交
    • A
      perf tools: Introduce perf_session class · 94c744b6
      Arnaldo Carvalho de Melo 提交于
      That does all the initialization boilerplate, opening the file,
      reading the header, checking if it is valid, etc.
      
      And that will as well have the threads list, kmap (now) global
      variable, etc, so that we can handle two (or more) perf.data files
      describing sessions to compare.
      Signed-off-by: NArnaldo 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: <1260573842-19720-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      94c744b6
    • A
      perf symbols: Rename kthreads to kmaps, using another abstraction for it · 9958e1f0
      Arnaldo Carvalho de Melo 提交于
      Using a struct thread instance just to hold the kernel space maps
      (vmlinux + modules) is overkill and confuses people trying to
      understand the perf symbols abstractions.
      
      The kernel maps are really present in all threads, i.e. the kernel
      is a library, not a separate thread.
      
      So introduce the 'map_groups' abstraction and use it for the kernel
      maps, now in the kmaps global variable.
      
      It, in turn, will move, together with the threads list to the
      perf_file abstraction, so that we can support multiple perf_file
      instances, needed by perf diff.
      
      Brainstormed-with: Eduardo Habkost <ehabkost@redhat.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Eduardo Habkost <ehabkost@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: <1260550239-5372-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9958e1f0
  12. 10 12月, 2009 2 次提交
  13. 07 12月, 2009 3 次提交
    • X
      perf_event: Eliminate raw->size · f48f669d
      Xiao Guangrong 提交于
      raw->size is not used, this patch just cleans it up.
      Signed-off-by: NXiao Guangrong <xiaoguangrong@cn.fujitsu.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      LKML-Reference: <4B1C8CC4.4050007@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f48f669d
    • X
      perf_event: Fix raw event processing · d8bd9e0a
      Xiao Guangrong 提交于
      We use 'data.raw_data' parameter to call process_raw_event(),
      but data.raw_data buffer not include data size. it can make perf
      tool crash.
      
      This bug was introduced by commit 180f95e2 ("perf: Make common
      SAMPLE_EVENT parser").
      Signed-off-by: NXiao Guangrong <xiaoguangrong@cn.fujitsu.com>
      Cc: Pekka Enberg <penberg@cs.helsinki.fi>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      LKML-Reference: <4B1C7F45.5080105@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d8bd9e0a
    • O
      perf: Make common SAMPLE_EVENT parser · 180f95e2
      OGAWA Hirofumi 提交于
      Currently, sample event data is parsed for each commands, and it
      is assuming that the data is not including other data. (E.g.
      timechart, trace, etc. can't parse the event if it has
      PERF_SAMPLE_CALLCHAIN)
      
      So, even if we record the superset data for multiple commands at
      a time, commands can't parse. etc.
      
      To fix it, this makes common sample event parser, and use it to
      parse sample event correctly. (PERF_SAMPLE_READ is unsupported
      for now though, it seems to be not using.)
      Signed-off-by: NOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <87hbs48imv.fsf@devron.myhome.or.jp>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      180f95e2
  14. 28 11月, 2009 2 次提交
    • A
      perf tools: Consolidate symbol resolving across all tools · 1ed091c4
      Arnaldo Carvalho de Melo 提交于
      Now we have a very high level routine for simple tools to
      process IP sample events:
      
      	int event__preprocess_sample(const event_t *self,
      				     struct addr_location *al,
      				     symbol_filter_t filter)
      
      It receives the event itself and will insert new threads in the
      global threads list and resolve the map and symbol, filling all
      this info into the new addr_location struct, so that tools like
      annotate and report can further process the event by creating
      hist_entries in their specific way (with or without callgraphs,
      etc).
      
      It in turn uses the new next layer function:
      
      	void thread__find_addr_location(struct thread *self, u8 cpumode,
      					enum map_type type, u64 addr,
      					struct addr_location *al,
      					symbol_filter_t filter)
      
      This one will, given a thread (userspace or the kernel kthread
      one), will find the given type (MAP__FUNCTION now, MAP__VARIABLE
      too in the near future) at the given cpumode, taking vdsos into
      account (userspace hit, but kernel symbol) and will fill all
      these details in the addr_location given.
      
      Tools that need a more compact API for plain function
      resolution, like 'kmem', can use this other one:
      
      	struct symbol *thread__find_function(struct thread *self, u64 addr,
      					     symbol_filter_t filter)
      
      So, to resolve a kernel symbol, that is all the 'kmem' tool
      needs, its just a matter of calling:
      
      	sym = thread__find_function(kthread, addr, NULL);
      
      The 'filter' parameter is needed because we do lazy
      parsing/loading of ELF symtabs or /proc/kallsyms.
      
      With this we remove more code duplication all around, which is
      always good, huh? :-)
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: John Kacur <jkacur@redhat.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1259346563-12568-12-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      1ed091c4
    • A
      perf tools: Reorganize event processing routines, lotsa dups killed · 62daacb5
      Arnaldo Carvalho de Melo 提交于
      While implementing event__preprocess_sample, that will do all of
      the symbol lookup in one convenient function, I noticed that
      util/process_event.[ch] were not being used at all, then started
      looking if there were other functions that could be shared
      and...
      
      All those functions really don't need to receive offset + head,
      the only thing they did was common to all of them, so do it at
      one place instead.
      
      Stats about number of each type of event processed now is done
      in a central place.
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: John Kacur <jkacur@redhat.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1259346563-12568-11-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      62daacb5
  15. 24 11月, 2009 7 次提交
    • A
      perf symbols: Rename find_symbol routines to find_function · fcf1203a
      Arnaldo Carvalho de Melo 提交于
      Paving the way for supporting variable in adition to function
      symbols.
      Signed-off-by: NArnaldo 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: <1259074912-5924-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      fcf1203a
    • A
      perf symbols: Simplify symbol machinery setup · b32d133a
      Arnaldo Carvalho de Melo 提交于
      And also express its configuration toggles via a struct.
      
      Now all one has to do is to call symbol__init(NULL) if the
      defaults are OK, or pass a struct symbol_conf pointer with the
      desired configuration.
      
      If a tool uses kernel_maps__find_symbol() to look at the kernel
      and modules mappings for a symbol but didn't call symbol__init()
      first, that will generate a one time warning too, alerting the
      subcommand developer that symbol__init() must be called.
      Signed-off-by: NArnaldo 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: <1259071517-3242-2-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b32d133a
    • L
      perf kmem: Measure kmalloc/kfree CPU ping-pong call-sites · 079d3f65
      Li Zefan 提交于
      Show statistics for allocations and frees on different cpus:
      
      ------------------------------------------------------------------------------------------------------
      Callsite                           | Total_alloc/Per | Total_req/Per   | Hit   | Ping-pong | Frag
      ------------------------------------------------------------------------------------------------------
       perf_event_alloc.clone.0+0         |      7504/682   |      7128/648   |     11 |        0 |  5.011%
       alloc_buffer_head+16               |       288/57    |       280/56    |      5 |        0 |  2.778%
       radix_tree_preload+51              |       296/296   |       288/288   |      1 |        0 |  2.703%
       tracepoint_add_probe+32e           |       157/31    |       154/30    |      5 |        0 |  1.911%
       do_maps_open+0                     |       796/12    |       792/12    |     66 |        0 |  0.503%
       sock_alloc_send_pskb+16e           |     23780/495   |     23744/494   |     48 |       38 |  0.151%
       anon_vma_prepare+9a                |      3744/44    |      3740/44    |     85 |        0 |  0.107%
       d_alloc+21                         |     64948/164   |     64944/164   |    396 |        0 |  0.006%
       proc_alloc_inode+23                |    262292/676   |    262288/676   |    388 |        0 |  0.002%
       create_object+28                   |    459600/200   |    459600/200   |   2298 |       71 |  0.000%
       journal_start+67                   |     14440/40    |     14440/40    |    361 |        0 |  0.000%
       get_empty_filp+df                  |     53504/256   |     53504/256   |    209 |        0 |  0.000%
       getname+2a                         |    823296/4096  |    823296/4096  |    201 |        0 |  0.000%
       seq_read+2b0                       |    544768/4096  |    544768/4096  |    133 |        0 |  0.000%
       seq_open+6d                        |     17024/128   |     17024/128   |    133 |        0 |  0.000%
       mmap_region+2e6                    |     11704/88    |     11704/88    |    133 |        0 |  0.000%
       single_open+0                      |      1072/16    |      1072/16    |     67 |        0 |  0.000%
       __alloc_skb+2e                     |     12544/256   |     12544/256   |     49 |       38 |  0.000%
       __sigqueue_alloc+4a                |      1296/144   |      1296/144   |      9 |        8 |  0.000%
       tracepoint_add_probe+6f            |        80/16    |        80/16    |      5 |        0 |  0.000%
      ------------------------------------------------------------------------------------------------------
      ...
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: linux-mm@kvack.org <linux-mm@kvack.org>
      LKML-Reference: <4B0B6E9F.6020309@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      079d3f65
    • L
      perf kmem: Collect cross node allocation statistics · 7d0d3945
      Li Zefan 提交于
      Show cross node memory allocations:
      
       # ./perf kmem
      
       SUMMARY
       =======
       ...
       Cross node allocations: 0/3633
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: linux-mm@kvack.org <linux-mm@kvack.org>
      LKML-Reference: <4B0B6E87.10906@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      7d0d3945
    • L
      perf kmem: Default to sort by fragmentation · 29b3e152
      Li Zefan 提交于
      Make the output sort by fragmentation by default.
      
      Also make the usage of "--sort" option consistent with other
      perf tools. That is, we support multi keys: "--sort
      key1[,key2]...".
      
       # ./perf kmem --stat caller
       ------------------------------------------------------------------------------
       Callsite                    |Total_alloc/Per | Total_req/Per | Hit  | Frag
       ------------------------------------------------------------------------------
       __netdev_alloc_skb+23       |    5048/1682   |    4564/1521  |     3|   9.588%
       perf_event_alloc.clone.0+0  |    7504/682    |    7128/648   |    11|   5.011%
       tracepoint_add_probe+32e    |     157/31     |     154/30    |     5|   1.911%
       alloc_buffer_head+16        |     456/57     |     448/56    |     8|   1.754%
       radix_tree_preload+51       |     584/292    |     576/288   |     2|   1.370%
       ...
      
      TODO:
      - Extract duplicate code in builtin-kmem.c and builtin-sched.c
        into util/sort.c.
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: linux-mm@kvack.org <linux-mm@kvack.org>
      LKML-Reference: <4B0B6E72.7010200@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      29b3e152
    • L
      perf kmem: Add new option to show raw ip · 7707b6b6
      Li Zefan 提交于
      Add option "--raw-ip" to show raw ip instead of symbols:
      
       # ./perf kmem --stat caller --raw-ip
       ------------------------------------------------------------------------------
       Callsite                    |Total_alloc/Per | Total_req/Per | Hit  | Frag
       ------------------------------------------------------------------------------
       0xc05301aa                  |  733184/4096   |  733184/4096  |   179|   0.000%
       0xc0542ba0                  |  483328/4096   |  483328/4096  |   118|   0.000%
       ...
      
      Also show symbols with format sym+offset instead of sym/offset.
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: linux-mm@kvack.org <linux-mm@kvack.org>
      LKML-Reference: <4B0B6E5C.4080900@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      7707b6b6
    • A
      perf kmem: Resolve symbols · 1b145ae5
      Arnaldo Carvalho de Melo 提交于
      E.g.:
      
        [root@doppio linux-2.6-tip]# perf kmem record sleep 3s
        [ perf record: Woken up 2 times to write data ]
        [ perf record: Captured and wrote 0.804 MB perf.data (~35105 samples) ]
      
        [root@doppio linux-2.6-tip]# perf kmem --stat caller | head -10
        ------------------------------------------------------------------------------
        Callsite                    |Total_alloc/Per | Total_req/Per | Hit  | Frag
        ------------------------------------------------------------------------------
        getname/40                  | 1519616/4096   | 1519616/4096  |   371|   0.000%
        seq_read/a2                 |  987136/4096   |  987136/4096  |   241|   0.000%
        __netdev_alloc_skb/43       |  260368/1049   |  259968/1048  |   248|   0.154%
        __alloc_skb/5a              |   77312/256    |   77312/256   |   302|   0.000%
        proc_alloc_inode/33         |   76480/632    |   76472/632   |   121|   0.010%
        get_empty_filp/8d           |   70272/192    |   70272/192   |   366|   0.000%
        split_vma/8e                |   42064/176    |   42064/176   |   239|   0.000%
        [root@doppio linux-2.6-tip]#
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: linux-mm@kvack.org <linux-mm@kvack.org>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      LKML-Reference: <1259005869-13487-2-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      1b145ae5