perf.data directory format

DISCLAIMER This is not ABI yet and is subject to possible change
           in following versions of perf. We will remove this
           disclaimer once the directory format soaks in.


This document describes the on-disk perf.data directory format.

The layout is described by HEADER_DIR_FORMAT feature.
Currently it holds only version number (0):

  HEADER_DIR_FORMAT = 24

  struct {
     uint64_t version;
  }

The current only version value 0 means that:
  - there is a single perf.data file named 'data' within the directory.
  e.g.

    $ tree -ps perf.data
    perf.data
    └── [-rw-------       25912]  data

Future versions are expected to describe different data files
layout according to special needs.

Currently the only 'perf record' option to output to a directory is
the --kcore option which puts a copy of /proc/kcore into the directory.
e.g.

  $ sudo perf record --kcore uname
  Linux
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.015 MB perf.data (9 samples) ]
  $ sudo tree -ps perf.data
  perf.data
  ├── [-rw-------       23744]  data
  └── [drwx------        4096]  kcore_dir
      ├── [-r--------     6731125]  kallsyms
      ├── [-r--------    40230912]  kcore
      └── [-r--------        5419]  modules

  1 directory, 4 files
  $ sudo perf script -v
  build id event received for vmlinux: 1eaa285996affce2d74d8e66dcea09a80c9941de
  build id event received for [vdso]: 8bbaf5dc62a9b644b4d4e4539737e104e4a84541
  build id event received for /lib/x86_64-linux-gnu/libc-2.28.so: 5b157f49586a3ca84d55837f97ff466767dd3445
  Samples for 'cycles' event do not have CPU attribute set. Skipping 'cpu' field.
  Using CPUID GenuineIntel-6-8E-A
  Using perf.data/kcore_dir/kcore for kernel data
  Using perf.data/kcore_dir/kallsyms for symbols
              perf 15316 2060795.480902:          1 cycles:  ffffffffa2caa548 native_write_msr+0x8 (vmlinux)
              perf 15316 2060795.480906:          1 cycles:  ffffffffa2caa548 native_write_msr+0x8 (vmlinux)
              perf 15316 2060795.480908:          7 cycles:  ffffffffa2caa548 native_write_msr+0x8 (vmlinux)
              perf 15316 2060795.480910:        119 cycles:  ffffffffa2caa54a native_write_msr+0xa (vmlinux)
              perf 15316 2060795.480912:       2109 cycles:  ffffffffa2c9b7b0 native_apic_msr_write+0x0 (vmlinux)
              perf 15316 2060795.480914:      37606 cycles:  ffffffffa2f121fe perf_event_addr_filters_exec+0x2e (vmlinux)
             uname 15316 2060795.480924:     588287 cycles:  ffffffffa303a56d page_counter_try_charge+0x6d (vmlinux)
             uname 15316 2060795.481067:    2261945 cycles:  ffffffffa301438f kmem_cache_free+0x4f (vmlinux)
             uname 15316 2060795.481643:    2172167 cycles:      7f1a48c393c0 _IO_un_link+0x0 (/lib/x86_64-linux-gnu/libc-2.28.so)
