I would like to profile my c++ application on linux.
I would like to find out how much time my application spent on CPU processing vs time spent on block by IO/being idle.
I know there is a profile tool call valgrind on linux. But it breaks down time spent on each method, and it does not give me an overall picture of how much time spent on CPU processing vs idle? Or is there a way to do that with valgrind.
I can recommend
valgrind‘s callgrind tool in conjunction with KCacheGrind for visualization. KCacheGrind makes it pretty easy to see where the hotspots are.Note: It’s been too long since I used it, so I’m not sure if you’ll be able to get I/O Wait time out of that. Perhaps in conjunction with iostat or pidstat you’ll be able to see where all the time was spent.