• Arnaldo Carvalho de Melo's avatar
    perf test: Validate PERF_RECORD_ events and perf_sample fields · 3e7c439a
    Arnaldo Carvalho de Melo authored
    This new test will validate these new routines extracted from 'perf
    record':
    
     - perf_evlist__config_attrs
     - perf_evlist__prepare_workload
     - perf_evlist__start_workload
    
    In addition to several other perf_evlist methods.
    
    It consists of starting a simple workload, setting up just one event to
    monitor ("cycles") requesting that several PERF_SAMPLE_ fields be
    present in all events.
    
    It then will check that the expected PERF_RECORD_ events are produced
    and will sanity check all its fields.
    
    Some checks performed:
    
    . PERF_SAMPLE_TIME monotonically increases.
    
    . PERF_SAMPLE_CPU is the one requested with sched_setaffinity
    
    . PERF_SAMPLE_TID and PERF_SAMPLE_PID matches the one we forked
      in perf_evlist__prepare_workload and that is stored in
      evlist->workload.pid
    
    . For the events where these fields are also present in its
      pre-sample_id_all fields (e.g. event->mmap.pid), that they are what
      is expected too.
    
    . That we get a bunch of mmaps:
    
      PATH/libcSUFFIX
      PATH/ldSUFFIX
      [vdso]
      PATH/sleep
    
    Example:
    
      [root@emilia ~]# taskset -c 3,4 perf test -v1 perf_sample
       6: Validate PERF_RECORD_* events & perf_sample fields:
      --- start ---
      7159480799825 3 PERF_RECORD_SAMPLE
      7159480805584 3 PERF_RECORD_SAMPLE
      7159480807814 3 PERF_RECORD_SAMPLE
      7159480810430 3 PERF_RECORD_SAMPLE
      7159480861511 3 PERF_RECORD_MMAP 8086/8086: [0x7fffffffd000(0x2000) @ 0x7fffffffd000]: //anon
      7159481052516 3 PERF_RECORD_COMM: sleep:8086
      7159481070188 3 PERF_RECORD_MMAP 8086/8086: [0x400000(0x6000) @ 0]: /bin/sleep
      7159481077104 3 PERF_RECORD_MMAP 8086/8086: [0x3d06400000(0x221000) @ 0]: /lib64/ld-2.12.so
      7159481092912 3 PERF_RECORD_MMAP 8086/8086: [0x7fff1adff000(0x1000) @ 0x7fff1adff000]: [vdso]
      7159481196779 3 PERF_RECORD_MMAP 8086/8086: [0x3d06800000(0x37f000) @ 0]: /lib64/libc-2.12.so
      7160481558435 3 PERF_RECORD_EXIT(8086:8086):(8086:8086)
      ---- end ----
      Validate PERF_RECORD_* events & perf_sample fields: Ok
      [root@emilia ~]#
    
    Cc: David Ahern <dsahern@gmail.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>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/n/tip-svag18v2z4idas0dyz3umjpq@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    3e7c439a
builtin-test.c 32.4 KB