On Thu, 2007-05-03 at 13:42 +0000, Daniel Schnell wrote:

> Philip:
> Also for our MPC5200B based board we get bogus latency measurements.
>  How can we find out the right value of /proc/xenomai/latency ?

$ echo 0 > /proc/xenomai/latency
(run the native calibration test)

If the minimum latency value is positive, then:
$ echo abs(min-latency-value) > /proc/xenomai/latency

Fine tuning could be made from that point afterwise.

Sidenote: It obviously makes no sense to stuff gigantic values
into /proc/xenomai/latency; large core latencies are likely the sign of
1) a bug in the arch-dep section (probably Adeos), 2) inadequation of
the hw for real-time usage (e.g. some ARM platforms with MMU, mmm...
issues).

>  Wouldn't an auto calibration be more useful when starting up (similar to the 
> Linux Bogo Mips value),

I tried and failed to have an accurate auto-calibration (circa fusion
0.6.x IIRC); the cost of random cache effects taking place during
auto-calibration was too high compared to the calibrated value itself.
Additionally, the calibration process monitored a kernel space thread,
which was not that relevant latency-wise to user-space apps (i.e. cost
of mm switching).

>  because actually one can configure the boards to have different bus speed 
> settings,
> so the CPU detection alone will not be sufficient ?
> 

Indeed, measuring raw CPU speed is not enough (e.g. boards with sluggish
memory sub-systems). What Xenomai does is currently a best effort
(sometimes trivial, like ad hoc values obtained from experiments), with
heuristics which may be different depending on the underlying sw/hw
combo (see the x86 calibration.h). This is why the builtin
pre-calibrated value may be overriden by a kernel configuration knob.

Said differently, I had no clue, so I'm expecting users to have some.

> Best regards,
> 
> Daniel Schnell.
> 
> 
> 
> 
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Johan Borkhuis
> Sent: 3. maĆ­ 2007 12:36
> To: [email protected]
> Subject: [Xenomai-help] Latency calculation and test
> 
> I am quite new to Xenomai, but not to realtime and embedded development. 
> I am trying to run Xenomai on a MVME3100 board (PPC8540 processor, kernel 
> version 2.6.14, Xenomai 2.3.1).
> 
> I am trying to do latency measurements on my target, and I have some 
> questions.
> 
> As far as I understand it, the value in /proc/xenomai/latency is the time 
> needed to start a timer, and this value is subtracted from the value provided 
> to the timer. The value calculated by Xenomai on my platform is 9489. All 
> latencies reported with the latency tool are negative when this value is used.
> When I write 0 to this setting (to get the real values without offset) and 
> run the latency test program I see different values for the different modes: 
> user space = 3.6 usec, kernel space = 1.8 usec and IRQ = 0.9 usec. What is 
> the relation between the value calculated by Xenomai and the values measured 
> by the latency program, and what is the correct way to calculate the latency 
> setting?
> 
> I also did a port of the cyclictest program to Xenomai. Instead of the 
> pthreads I used the RT-tasks, like the latency program.  The cyclictest 
> program uses signals to  trigger the task, but as I found out this does not 
> work in userspace: the applications returns to secondary mode at the moment 
> the thread waits for a signal. Is there another way to do this (next to 
> moving the whole program to kernel space)?
> 
> One option of the cyclictest program is that you can have several threads 
> running. I modified the output of the cyclictest tool somewhat, to have min, 
> max and average like the latency program.
> When running multiple threads within this program (without load) the values 
> range from -5 usec to +5 usec, with an average of around 0 usec. 
> But with more RT tasks I see a very high latency once in a while (over 400 
> usec).
> 
> Below is the example of such a test run with 10 threads/tasks:
>  T: 0 ( 1305) P:80 I:1000 O: 0 Min:   -2.404 Avg: -0.001 Max:   1.873
>  T: 1 ( 1306) P:79 I:1000 O: 0 Min:   -3.052 Avg: -0.001 Max:   1.584
>  T: 2 ( 1307) P:78 I:1000 O: 0 Min:   -5.694 Avg:  0.000 Max:  18.282
>  T: 3 ( 1308) P:77 I:1000 O: 0 Min:   -5.166 Avg:  0.046 Max: 479.782
>  T: 4 ( 1309) P:76 I:1000 O: 0 Min:   -2.595 Avg:  0.036 Max: 368.310
>  T: 5 ( 1310) P:75 I:1000 O: 0 Min:   -1.731 Avg: -0.001 Max:   1.633
>  T: 6 ( 1311) P:74 I:1000 O: 0 Min: -481.273 Avg: -0.001 Max: 490.352
>  T: 7 ( 1312) P:73 I:1000 O: 0 Min: -273.947 Avg: -0.001 Max: 277.717
>  T: 8 ( 1313) P:72 I:1000 O: 0 Min:  -47.016 Avg: -0.001 Max:  45.789
>  T: 9 ( 1314) P:71 I:1000 O: 0 Min:  -22.968 Avg: -0.001 Max:  29.572 
> (P=Priority, I=interval, O=overruns)
> 
> When looking at the detailed information, I see that the latencies occur when 
> a higher priority task is ending. Is there some specific reason for this, or 
> is there some kind of configuration problem with my setup?
> 
> Kind regards,
>     Johan Borkhuis
> 
> 
> _______________________________________________
> Xenomai-help mailing list
> [email protected]
> https://mail.gna.org/listinfo/xenomai-help
> 
> _______________________________________________
> Xenomai-help mailing list
> [email protected]
> https://mail.gna.org/listinfo/xenomai-help
-- 
Philippe.



_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to