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?

  • depending on the version of ps and the options available, some of that information is available there. But... yes, I would love for an all-inclusive performance console like found on Windows7. One possible thing to help ... there is a pretty darn comprehensive perf utility originally for AIX (IBM Unix) called NMON, which I believe has been ported for use on (some) linux(es). Good luck. – shellter Jul 25 '12 at 15:48

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.


Have you tried remotetaskmonitor.com? You can select individual process or thread, and then capture the cpu usage for that over a period of time. It will generate for you the cpu and memory usage plots.

Another option might be cpuprofiler.com. But with this, your cpu data is stored in the cloud and you can login from a web browser to view the cpu reports.

  • 1
    Thanks for your suggestions. But Remote Task Monitor seems to run only on Windows (although claiming to be capable of monitoring Linux devices). And CPU Profiler only monitors a very limited set of application characteristics, plus the disadvantage of having to upload all the data to the cloud. – scai Jan 19 '14 at 21:26

Oprofile, packages available in most distro repos, provides optional per-process or system-wide event and process profiling using the hardware performance counters of the CPU.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.