Re: Measuring timer interrupt latency

Clark Williams
2009-04-13T14:14:16Z

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Mon, 13 Apr 2009 12:14:42 +0530
Suresh Kumar SHUKLA <suresh.shukla@st.com> wrote:

> Hi,
>
> I want to profile the improvements in interrupt latency with and without RT
> patches.
>
> The approach I have in mind is that time gap between IRQ firing and IRQ
> handler reading value of counter would be sufficient to reveal the interrupt
> latency. These values can be analysed for min/max/avg.
>
> Is there any test program which captures interrupt latency (for x86) ?
> I checked realfeel but it is user mode program and am not sure of its
> accuracy.
>
> regards,
> Suresh
>

Have you tried cyclictest? It's part of the rt-tests package that
Thomas Gleixner wrote and that I now maintain.

You can pick up the latest tarball here:

http://www.kernel.org/pub/linux//kernel/people/clrkwllms/rt-tests/rt-tests-0.35.tar.bz2

The thing is, I'm not sure how useful measuring the interval between
interrupt and ISR. It's such a small component of the total latency
value that it usually gets lost in the noise. Cyclictest measures the
time between a timer fires and when the user-space program (cyclictest)
actually gets to run after a sleep, which is the entire latency value.
What you're talking about measuring on RT is basically a lookup and
schedule() call, since all interrupts have threaded handlers on RT.

If you are wanting to decompose the latency into it's components on RT,
I think you'd have:

1. ISR latency
2. Scheduler latency for IRQ thread
3. IRQ handler time
4. Scheduler latency for user-space thread

Cyclictest measures the aggregate of all these.

Clark
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.10 (GNU/Linux)

iEYEARECAAYFAknjSLEACgkQHyuj/+TTEp1kuACfSi13WaRt6nZDc53LXWqSsbsK
Tv0AoJHpeXAjOkCPu5yBMElNDMr3Ij0y
=5LIa
-----END PGP SIGNATURE-----