How to measure time spent in context switch

Manavendra Nath Manav mnm.kernel at gmail.com
Mon Jul 16 16:09:29 EDT 2012


On Tue, Jul 17, 2012 at 1:20 AM, Victor Rodriguez <vm.rod25 at gmail.com> wrote:
>
> Hi Manavendra
>
> Have you think in a driver that you can call when the context switch
> happen? If this can be detected (more investigation on this area is
> required). If that is possible we can create the driver to measure the
> time according to the interruption.
>
> Thanks a lot and regards
>
> Victor Rodriguez
>
>
>
> On Mon, Jul 16, 2012 at 2:28 PM, Manavendra Nath Manav
> <mnm.kernel at gmail.com> wrote:
> > How to measure time spent in context switch in Linux i.e. the time the
> > application stays suspended while the kernel is doing something else. I
> > don't want to use any profiling tools. What approach should I take to write
> > my own C code, which can also run as kernel module if required, to measure
> > time spent accurately. Will it also require to modify the scheduler code?
> > Does /proc gives any statistics in this regard?
> >
> > Ref:
> > http://stackoverflow.com/questions/2368384/write-a-c-program-to-measure-time-spent-in-context-switch-in-linux-os
> >
> > --
> > Manavendra Nath Manav
> > _______________________________________________

Hi Victor

I was thinking something in these terms:
1) Process is executing a non-critical section like a bottom-half.
2) At Nth line of code, I will measure the timestamp.
3) At (N+1)th line of code, I will voluntarily call schedule() to do
context switch.
4) At (N+2)th, I will measure the timestamp, and calculate the time difference.

Although the above procedure will measure context switch time
statically and not dynamically, it can give a fair idea but for
multi-core processors this measurement will heavily deviate from
accuracy. If we can set scheduler() process affinity to one single
core, will it affect the measurements and predictability of context
switches?

--
Manavendra Nath Manav



More information about the Kernelnewbies mailing list