Linux – Detailed Per-Process Profiling

linuxloadprocessprofiling

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.

Related Question