All of lore.kernel.org
 help / color / mirror / Atom feed
* imx25: maximum latency increased on some tests
@ 2012-08-09 10:25 Claudio Scordino
  2012-08-09 10:46 ` Carsten Emde
  2012-08-09 16:21 ` Sven-Thorsten Dietrich
  0 siblings, 2 replies; 3+ messages in thread
From: Claudio Scordino @ 2012-08-09 10:25 UTC (permalink / raw)
  To: linux-rt-users; +Cc: Alessandro Biasci

Dear all.

We have an embedded board based on Freescale imx25 (ARM9 at 400 MHz) 
with 64MB RAM and Linux 2.6.31 provided by Freescale.

We have ported PREEMPT_RT-21 and made some measurements using the 
rt-tests suite (cloned from the official repo at 
git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git).

Summing up, our reference software is

	Architecture: imx25
	Kernel: 2.6.31 provided by Freescale
	Preempt_Rt patch: rt21
	TestSuite: rt-tests V0.84


The cyclictest showed a reduction of the maximum latency, as we were 
expecting.

However, the other tests showed a maximum latency higher than without 
the patch (which is supposed to reduce the maximum latency).

Please, find below the results that we have obtained.

We know that this version of preempt_rt is outdated. However, we can't 
figure out how the maximum latency can be higher.

Do you have any idea about the possible reason of this behavior ?

Many thanks,

	Claudio and Alessandro



SIGNALTEST:

Without preempt_rt:

     $ signaltest -l 10000 -t 4
     0.40 0.92 0.58 1/35 2199
     T: 0 ( 2196) P: 0 C:  10000 Min:    157 Act:  184 Avg:  219 Max: 
  1246

With preempt_rt:

     $ signaltest -l 10000 -t 4
     0.03 2.87 6.53 3/62 2684
     T: 0 ( 2681) P: 0 C:  10000 Min:    215 Act:  260 Avg:  384 Max: 
  2038


SIGWAITTEST:

Without preempt_rt:

     $ sigwaittest -l 10000 -t 2
     #0: ID2201, P0, CPU0, I1000; #1: ID2202, P0, CPU0, Cycles 10000
     #2: ID2203, P0, CPU0, I1500; #3: ID2204, P0, CPU0, Cycles 7019
     #1 -> #0, Min   40, Cur   58, Avg   71, Max 1191
     #3 -> #2, Min   42, Cur   61, Avg   69, Max  954

With preempt_rt:

     $ sigwaittest -l 10000 -t 2
     #0: ID2687, P0, CPU0, I1000; #1: ID2688, P0, CPU0, Cycles 10000
     #2: ID2689, P0, CPU0, I1500; #3: ID2690, P0, CPU0, Cycles 7007
     #1 -> #0, Min   51, Cur   63, Avg  105, Max 1379
     #3 -> #2, Min   57, Cur   63, Avg  105, Max 2081



SVSEMATEST:

Without preempt_rt:

     $ svsematest -l 10000 -t 2
     #0: ID2206, P0, CPU0, I1000; #1: ID2207, P0, CPU0, Cycles 10000
     #2: ID2208, P0, CPU0, I1500; #3: ID2209, P0, CPU0, Cycles 7094
     #1 -> #0, Min   17, Cur   34, Avg   37, Max  940
     #3 -> #2, Min   18, Cur   32, Avg   34, Max  809

With preempt_rt:

     $ svsematest -l 10000 -t 2
     #0: ID2703, P0, CPU0, I1000; #1: ID2704, P0, CPU0, Cycles 10000
     #2: ID2705, P0, CPU0, I1500; #3: ID2706, P0, CPU0, Cycles 6858
     #1 -> #0, Min   29, Cur   47, Avg   65, Max 1423
     #3 -> #2, Min   30, Cur   91, Avg   83, Max 1314



PI_STRESS:

Finally, the pi_stress (priority-inheritance code paths for POSIX 
mutexes) sometimes fails with preempt_rt on the SCHED_FIFO policy (this 
behavior did not occurred without preempt_rt, even if it is still possible):

     $ pi_stress --duration 100 --groups=2
     Starting PI Stress Test
     Number of thread groups: 2
     Duration of test run: 100 seconds
     Number of inversions per group: unlimited
     Test threads using scheduler policy: SCHED_FIFO
             Admin thread priority:  4
     2 groups of 3 threads will be created
             High thread priority:   3
             Med  thread priority:   2
             Low thread priority:    1
     Current Inversions: 2531
     ERROR: WATCHDOG triggered: group 0 is deadlocked!
     ERROR: reporter stopping due to watchdog event
     Stopping test
     Terminated



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: imx25: maximum latency increased on some tests
  2012-08-09 10:25 imx25: maximum latency increased on some tests Claudio Scordino
@ 2012-08-09 10:46 ` Carsten Emde
  2012-08-09 16:21 ` Sven-Thorsten Dietrich
  1 sibling, 0 replies; 3+ messages in thread
From: Carsten Emde @ 2012-08-09 10:46 UTC (permalink / raw)
  To: Claudio Scordino; +Cc: linux-rt-users, Alessandro Biasci

Claudio,

> [..]
> Please, find below the results that we have obtained.
> [..]
> Do you have any idea about the possible reason of this behavior ?
> $ signaltest -l 10000 -t 4
Please specify the priority of the test task, e.g. -p99, since it runs 
with default non-RT priority, otherwise.

	-Carsten.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: imx25: maximum latency increased on some tests
  2012-08-09 10:25 imx25: maximum latency increased on some tests Claudio Scordino
  2012-08-09 10:46 ` Carsten Emde
@ 2012-08-09 16:21 ` Sven-Thorsten Dietrich
  1 sibling, 0 replies; 3+ messages in thread
From: Sven-Thorsten Dietrich @ 2012-08-09 16:21 UTC (permalink / raw)
  To: Claudio Scordino; +Cc: linux-rt-users, Alessandro Biasci


On Aug 9, 2012, at 3:25 AM, Claudio Scordino <claudio@evidence.eu.com> wrote:
> 
> 
> PI_STRESS:
> 
> Finally, the pi_stress (priority-inheritance code paths for POSIX mutexes) sometimes fails with preempt_rt on the SCHED_FIFO policy (this behavior did not occurred without preempt_rt, even if it is still possible):
> 
>    $ pi_stress --duration 100 --groups=2
>    Starting PI Stress Test
>    Number of thread groups: 2
>    Duration of test run: 100 seconds
>    Number of inversions per group: unlimited
>    Test threads using scheduler policy: SCHED_FIFO
>            Admin thread priority:  4
>    2 groups of 3 threads will be created
>            High thread priority:   3
>            Med  thread priority:   2
>            Low thread priority:    1
>    Current Inversions: 2531
>    ERROR: WATCHDOG triggered: group 0 is deadlocked!
>    ERROR: reporter stopping due to watchdog event
>    Stopping test
>    Terminated


This possibly related to the test implementation.

In the past there were similar issues in LTP, where a supervisor thread is polling for a signal our completion of another thread that never arrives because the supervisor thread is hogging the CPU (FIFO thread ) and either the other threads never run, or the signal is not being delivered.

In RT it is correct behavior that a CPU-bound thread should preempt other threads and signals.

IIRC there are several ways to correct this, by also raising the prio of softirqd, or by fixing the implementation of the test.

If you could provide a link to the test source, this would be helpful.

First and foremost however, do follow Carsten's recommendation about setting the prio appropriately high.

Thanks

Sven

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-08-09 16:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-09 10:25 imx25: maximum latency increased on some tests Claudio Scordino
2012-08-09 10:46 ` Carsten Emde
2012-08-09 16:21 ` Sven-Thorsten Dietrich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.