Messages in this thread | | | Date | Sun, 13 Oct 2002 21:08:30 +1000 | From | James Courtier-Dutton <> | Subject | kernel api for application profiling |
| |
Hello
I am helping to write a multi-media application that plays lots of different video and audio formats. I would like to improve the performance of the program. I wish to be able to make a function call to start a timer, and then later on in the program stop the timer and therefore gather information about how long a particular routine took. The problem I have is that between start of timer and stop of timer, the kernel might task switch to another thread or process. I would like this kernel task switch to automatically stop the timer, and then restart it when I get CPU time returned. I cannot find any such API availiable currently in the linux kernel.
Also, as an extension to this, it would be nice to know which other tasks happened during the task switch. The reason I would like this, is so that I can tell if the time was taken reading data off the hard disk or instead time spent by X displaying/transfering to screen the next video frame. If too much time is being spent doing a task like reading from the hard disk, I would need to look into reducing the latency of that task. This might also highlight buggy modules that take up too much of a time slice. I have seen some task switches take 800ms away from my audio out thread, and therefore causing underruns on the sound hardware, that then causes glitches in the perceived audio coming from the speakers.
Also, the reason for the above requests is so that I can gather useful performance info without having to trawl through hugh global performance traces.
Can anyone help me?
Cheers James
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |