I am looking for a way to profile a single process including time spent for CPU, I/O, memory usage over time and optionally system calls.
I already know callgrind
offering some basic profiling features but only with debugging information and lacking most of the other mentioned information.
I know strace -c
providing a summary about all system calls and their required CPU time.
I know several IO-related tools like (io)top
, iostat
, vmstat
but all of them are lacking detailed statistics about a single process. There is also /proc/$PID/io
providing some IO statistics about a single process, but I would have to read it at fixed intervals in order to gather IO information over time.
I know pidstat
providing CPU load, IO statistics and memory utilization but no system calls, only at a high granularity and not over time.
One could of course combine several of the described tools to gather those information over time, but lacking a high granularity and thus missing important information. What I am looking for is a single tool providing all (or at least most) of the mentioned information, ideally over time. Does such a tool exist?
Best Answer
Meanwhile I wrote my own program - audria - capable of monitoring the resource usage of one or more processes, including current/average CPU usage, virtual memory usage, IO load and other information.