1*4882a593Smuzhiyunperf.data directory format 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunDISCLAIMER This is not ABI yet and is subject to possible change 4*4882a593Smuzhiyun in following versions of perf. We will remove this 5*4882a593Smuzhiyun disclaimer once the directory format soaks in. 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunThis document describes the on-disk perf.data directory format. 9*4882a593Smuzhiyun 10*4882a593SmuzhiyunThe layout is described by HEADER_DIR_FORMAT feature. 11*4882a593SmuzhiyunCurrently it holds only version number (0): 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun HEADER_DIR_FORMAT = 24 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun struct { 16*4882a593Smuzhiyun uint64_t version; 17*4882a593Smuzhiyun } 18*4882a593Smuzhiyun 19*4882a593SmuzhiyunThe current only version value 0 means that: 20*4882a593Smuzhiyun - there is a single perf.data file named 'data' within the directory. 21*4882a593Smuzhiyun e.g. 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun $ tree -ps perf.data 24*4882a593Smuzhiyun perf.data 25*4882a593Smuzhiyun └── [-rw------- 25912] data 26*4882a593Smuzhiyun 27*4882a593SmuzhiyunFuture versions are expected to describe different data files 28*4882a593Smuzhiyunlayout according to special needs. 29*4882a593Smuzhiyun 30*4882a593SmuzhiyunCurrently the only 'perf record' option to output to a directory is 31*4882a593Smuzhiyunthe --kcore option which puts a copy of /proc/kcore into the directory. 32*4882a593Smuzhiyune.g. 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun $ sudo perf record --kcore uname 35*4882a593Smuzhiyun Linux 36*4882a593Smuzhiyun [ perf record: Woken up 1 times to write data ] 37*4882a593Smuzhiyun [ perf record: Captured and wrote 0.015 MB perf.data (9 samples) ] 38*4882a593Smuzhiyun $ sudo tree -ps perf.data 39*4882a593Smuzhiyun perf.data 40*4882a593Smuzhiyun ├── [-rw------- 23744] data 41*4882a593Smuzhiyun └── [drwx------ 4096] kcore_dir 42*4882a593Smuzhiyun ├── [-r-------- 6731125] kallsyms 43*4882a593Smuzhiyun ├── [-r-------- 40230912] kcore 44*4882a593Smuzhiyun └── [-r-------- 5419] modules 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun 1 directory, 4 files 47*4882a593Smuzhiyun $ sudo perf script -v 48*4882a593Smuzhiyun build id event received for vmlinux: 1eaa285996affce2d74d8e66dcea09a80c9941de 49*4882a593Smuzhiyun build id event received for [vdso]: 8bbaf5dc62a9b644b4d4e4539737e104e4a84541 50*4882a593Smuzhiyun build id event received for /lib/x86_64-linux-gnu/libc-2.28.so: 5b157f49586a3ca84d55837f97ff466767dd3445 51*4882a593Smuzhiyun Samples for 'cycles' event do not have CPU attribute set. Skipping 'cpu' field. 52*4882a593Smuzhiyun Using CPUID GenuineIntel-6-8E-A 53*4882a593Smuzhiyun Using perf.data/kcore_dir/kcore for kernel data 54*4882a593Smuzhiyun Using perf.data/kcore_dir/kallsyms for symbols 55*4882a593Smuzhiyun perf 15316 2060795.480902: 1 cycles: ffffffffa2caa548 native_write_msr+0x8 (vmlinux) 56*4882a593Smuzhiyun perf 15316 2060795.480906: 1 cycles: ffffffffa2caa548 native_write_msr+0x8 (vmlinux) 57*4882a593Smuzhiyun perf 15316 2060795.480908: 7 cycles: ffffffffa2caa548 native_write_msr+0x8 (vmlinux) 58*4882a593Smuzhiyun perf 15316 2060795.480910: 119 cycles: ffffffffa2caa54a native_write_msr+0xa (vmlinux) 59*4882a593Smuzhiyun perf 15316 2060795.480912: 2109 cycles: ffffffffa2c9b7b0 native_apic_msr_write+0x0 (vmlinux) 60*4882a593Smuzhiyun perf 15316 2060795.480914: 37606 cycles: ffffffffa2f121fe perf_event_addr_filters_exec+0x2e (vmlinux) 61*4882a593Smuzhiyun uname 15316 2060795.480924: 588287 cycles: ffffffffa303a56d page_counter_try_charge+0x6d (vmlinux) 62*4882a593Smuzhiyun uname 15316 2060795.481067: 2261945 cycles: ffffffffa301438f kmem_cache_free+0x4f (vmlinux) 63*4882a593Smuzhiyun uname 15316 2060795.481643: 2172167 cycles: 7f1a48c393c0 _IO_un_link+0x0 (/lib/x86_64-linux-gnu/libc-2.28.so) 64