Dear All,

just some details about our test.

    We're actually dealing with Hard Real-Time problems (on x86) and we need
a way
to measure latencies in the IRQ handling kernel flow-paths.
We do not only need to measure the global (from the rise of an interrupt to
its
complete management) IRQ handling latency, but also the intermediate
(inter-function) latency values.

Our main objective is to evaluate Hard Real-Time feautures like
predictability
and time latency of IRQ response and IRQ management flow.


    The kernel patch and the modules we have developed are in this
direction. The
patch allows us to measure (with little overhead) the execution times
between the main functions of the IRQ management flow. The modules read the
values we measure and place them into proc fs (in a more readable manner).

    All time-values that are taken in the test are measured by reading the
TSC
register. Both the user space task and the kernel IRQ management flow-path
should
be bound on one processor, so to avoid discrepancies between different TSC
reads
on different CPUs.


    The test is composed by a user space application which is waiting (with
a
blocking read on /dev/rtc) for RTC interrupts. We re-program the RTC device
to
launch interrupts at fixed frequency.

    First fo all the user space test application set the real time priority
and
the real time policy SCHED_FIFO of the user task, then re-program the RTC
device
to launch interrupts at fixed frequency, and go to sleep waiting for RTC
interrupt.

Immediately after being woke up, the user space test application performs a
TSC read,
which constitutes the final measure of the IRQ management flow. Furthermore
this read
helps in telling kernel test latencies from spurious kernel inter-function
latencies
that may occur before the beginning of the test.
When the test is over the user apllication print the TSC values on the
console.

    The patch we introduce in the kernel is able to record up to SAMPLES
samples
of inter-function latencies throughout the kernel path activated by RTC
interrupt management flow-path.

When the test is over, it is possible to read the inter-function latencies
(sampled in the kernel) through the proc fs, using "delta_read_irq"
and "irq_latencies_tsc" modules.

    The "delta_read_irq" module is used to read the inter-function latencies
values
as the max, min, and total TSC cycles elapsed during the measured intervals.

    With the "irq_latencies_tsc" module it is possible to read the TSC
values taken
inside IRQ flow-path functions.
By comparing these values with those obtained in the user space application,
one
can evaluate the whole latencies in the IRQ management flow (from the
arrival
of an hardware interrupt to the system, to the beginning of the test
application).

    From the analisys of these results we can estimate the worst-case
latency and
the periodic jitter of an interrupt management flow-path.
We are also able to evaluate the required (re)scheduling effort and
inter-function
latencies.

The execution-jitter of the kernel paths we analyze is our measure to
evaluate the
predictability of "end-to-end" IRQ management (from the arrival of an
hardware interrupt
to the system, to the beginning of the test application).

The measured jitter is the standard deviation of the sampled latencies,
relatively to their mean.

    At the moment, we make use of a spreadsheet to evaluate std.deviation,
worst,
best and average inter-function and end-to-end latencies. We build these
results
using 1000 sampled latency values (these values are obtained through the
module
"irq_latencies_tsc" and through the user space application).

It is important to note that the samples we measure in the kernel are in
clock cycle
unit and we have to transform them into time unit. The resolution of the
measure
heavily depends on the CPU frequency and on the time spent in reading the
TSC.
We have estimate for our measure a base definition of 10 ns.

    The test is not yet automated, and doesn't respect LTP's
requirement. At the moment it is just a quite usable tool that is being
mainly use
as a base comparison between Vanilla kernel and RT kernel project
(http://www.eu.kernel.org/pub/linux/kernel/projects/rt/).



Regards,

Luca Recchia

2008/6/25 Subrata Modak <[EMAIL PROTECTED]>:

> On Thu, 2008-06-19 at 11:42 +0200, Christian Di Biagio wrote:
> > Luca is going to asnwer to your questions providing a web space for
> > code sharing.
> >
> > I encourage also a contribution of Andrea Bastoni, a PhD of the Prof.
> > D. P. Bovet (University of Rome Tor Vergata) on the matter.
>
> Christian/Lucas,
>
> Are we ready to move ahead with more information on this proposal ?
>
> Regards--
> Subrata
>
> >
> > Regards
> >
> > C.
> >
> >
> >
> > 2008/6/16 Subrata Modak <[EMAIL PROTECTED]>:
> >         On Mon, 2008-06-16 at 10:29 +0200, Christian Di Biagio wrote:
> >         > Dear,
> >         >
> >         > I would suggest you our contribution on Hard Real Time Linux
> >         testing.
> >         > Luca and me are  working in collaboration with the
> >         University of  Rome
> >         > "Sapienza"   developing  a complete RT Test suite. It is
> >         built through
> >         > a kernel patch and a user space application (like LTP) on
> >         x86 arch.
> >         > Test is simple:  the RTC send periodic interrupts to the
> >         user
> >         > application,  which previously  has set-up the  environment
> >         (RTC
> >         > frequency,  priority, scheduling policy, etc.). During
> >         testing the
> >         > kernel patch (2.6.23.14) writes  measures on the /proc fs.
> >         Actually,
> >         > we trace the whole IRQ chain.
> >         >
> >         >
> >         > We would be very pleased to participate to your project
> >         giving you our
> >         > open source code.
> >         >
> >         > Please, let us know your feelings.
> >
> >         Hi Christian,
> >
> >         Thanks for considering LTP to contribute your test code for
> >         Hard Real
> >         Time Linux Testing. But, i would like to point out that we
> >         already have
> >         a very active community consisting of IBM, BULL, PENGUTRONIX
> >         and others,
> >         who are contributing to the growing development of Real Time
> >         Linux
> >         Testcases. Can you please have a look at the code that they
> >         have
> >         developed so far at:
> >
> >         http://ltp.cvs.sourceforge.net/ltp/ltp/testcases/realtime/,
> >
> >         I am looping in those developers and you, so that we can
> >         discuss
> >         further. We would like to know how does your tests differ from
> >         the one
> >         existing above, what and how would you like to tests, how
> >         would you like
> >         to interpret the results, what settings you would need to run
> >         those
> >         tests. Basically, what i would be interested to know is how
> >         much your
> >         tests will add value to LTP and the Linux community in
> >         particular.
> >
> >         Darren/Chirag/Sebastein,
> >
> >         Can we initiate a discussion with Christian and lucas and try
> >         to
> >         understand their tests that they plan to contribute. If all of
> >         you agree
> >         after that, we can find a suitable place in LTP to integrate
> >         their
> >         tests.
> >
> >         Regards--
> >         Subrata
> >
> >         >
> >         > Regards
> >         >
> >         > Christian
> >
> >
>
>

Attachment: test_irq.tar.bz2
Description: BZip2 compressed data

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to