1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of filelife, the Linux eBPF/bcc version. 2*387f9dfdSAndroid Build Coastguard Worker 3*387f9dfdSAndroid Build Coastguard Worker 4*387f9dfdSAndroid Build Coastguard Workerfilelife traces short-lived files: those that have been created and then 5*387f9dfdSAndroid Build Coastguard Workerdeleted while tracing. For example: 6*387f9dfdSAndroid Build Coastguard Worker 7*387f9dfdSAndroid Build Coastguard Worker# ./filelife 8*387f9dfdSAndroid Build Coastguard WorkerTIME PID COMM AGE(s) FILE 9*387f9dfdSAndroid Build Coastguard Worker05:57:59 8556 gcc 0.04 ccCB5EDe.s 10*387f9dfdSAndroid Build Coastguard Worker05:57:59 8560 rm 0.02 .entry_64.o.d 11*387f9dfdSAndroid Build Coastguard Worker05:57:59 8563 gcc 0.02 cc5UFHXf.s 12*387f9dfdSAndroid Build Coastguard Worker05:57:59 8567 rm 0.01 .thunk_64.o.d 13*387f9dfdSAndroid Build Coastguard Worker05:57:59 8578 rm 0.02 .syscall_64.o.d 14*387f9dfdSAndroid Build Coastguard Worker05:58:00 8589 rm 0.03 .common.o.d 15*387f9dfdSAndroid Build Coastguard Worker05:58:00 8596 rm 0.01 .8592.tmp 16*387f9dfdSAndroid Build Coastguard Worker05:58:00 8601 rm 0.01 .8597.tmp 17*387f9dfdSAndroid Build Coastguard Worker05:58:00 8606 rm 0.01 .8602.tmp 18*387f9dfdSAndroid Build Coastguard Worker05:58:00 8639 rm 0.02 .vma.o.d 19*387f9dfdSAndroid Build Coastguard Worker05:58:00 8650 rm 0.02 .vdso32-setup.o.d 20*387f9dfdSAndroid Build Coastguard Worker05:58:00 8656 rm 0.00 .vdso.lds.d 21*387f9dfdSAndroid Build Coastguard Worker05:58:00 8659 gcc 0.01 ccveeJAz.s 22*387f9dfdSAndroid Build Coastguard Worker05:58:00 8663 rm 0.01 .vdso-note.o.d 23*387f9dfdSAndroid Build Coastguard Worker05:58:00 8674 rm 0.02 .vclock_gettime.o.d 24*387f9dfdSAndroid Build Coastguard Worker05:58:01 8684 rm 0.01 .vgetcpu.o.d 25*387f9dfdSAndroid Build Coastguard Worker05:58:01 8690 collect2 0.00 ccvKMxdm.ld 26*387f9dfdSAndroid Build Coastguard Worker 27*387f9dfdSAndroid Build Coastguard WorkerThis has caught short-lived files that were created during a Linux kernel 28*387f9dfdSAndroid Build Coastguard Workerbuild. The PID shows the process ID that finally deleted the file, and COMM 29*387f9dfdSAndroid Build Coastguard Workeris its process name. The AGE(s) column shows the age of the file, in seconds, 30*387f9dfdSAndroid Build Coastguard Workerwhen it was deleted. These are all short-lived, and existed for less than 31*387f9dfdSAndroid Build Coastguard Workerone tenth of a second. 32*387f9dfdSAndroid Build Coastguard Worker 33*387f9dfdSAndroid Build Coastguard WorkerCreating, populating, and then deleting files as part of another process can 34*387f9dfdSAndroid Build Coastguard Workerbe an inefficient method of inter-process communication. It can cause disk I/O 35*387f9dfdSAndroid Build Coastguard Workeras files are closed and their file descriptors flushed, only later to be 36*387f9dfdSAndroid Build Coastguard Workerdeleted. As such, short-lived files can be a target of performance 37*387f9dfdSAndroid Build Coastguard Workeroptimizations. 38*387f9dfdSAndroid Build Coastguard Worker 39*387f9dfdSAndroid Build Coastguard WorkerUSAGE message: 40*387f9dfdSAndroid Build Coastguard Worker 41*387f9dfdSAndroid Build Coastguard Worker# ./filelife -h 42*387f9dfdSAndroid Build Coastguard Workerusage: filelife [-h] [-p PID] 43*387f9dfdSAndroid Build Coastguard Worker 44*387f9dfdSAndroid Build Coastguard WorkerTrace stat() syscalls 45*387f9dfdSAndroid Build Coastguard Worker 46*387f9dfdSAndroid Build Coastguard Workeroptional arguments: 47*387f9dfdSAndroid Build Coastguard Worker -h, --help show this help message and exit 48*387f9dfdSAndroid Build Coastguard Worker -p PID, --pid PID trace this PID only 49*387f9dfdSAndroid Build Coastguard Worker 50*387f9dfdSAndroid Build Coastguard Workerexamples: 51*387f9dfdSAndroid Build Coastguard Worker ./filelife # trace all stat() syscalls 52*387f9dfdSAndroid Build Coastguard Worker ./filelife -p 181 # only trace PID 181 53