Part of the efforts to reduce power consumption is to identify processes
which keep waking up the disk even when the computer is idle.
Unfortunately there is no really good tool to trace file access events
system-wide. powertop claims to, but its output is both very incomplete,
and also wrong (e. g. it claims that read accesses are writes). strace
gives you everything you do and don’t want to know about what’s going on,
but is per-process, and attaching strace to all running and new processes
is cumbersome. blktrace is system-wide, but operates at a way too low
level for this task: its output has nothing to do any more with files or
even inodes, just raw block numbers which are impossible to convert back
to an inode and file path.
So I created a little tool called fatrace (“file access trace”, not “fat
race” :-) ) which uses fanotify, a couple of /proc lookups and some glue
to provide this. By default it monitors the whole system, i. e. all mounts
(except the virtual ones like /proc, tmpfs, etc.), but you can also tell
it to just consider the mount of the current directory. You can write the
log into a file (stdout by default), and run it for a specified number of
seconds. Optional time stamps and PID filters are also provided.