On 04/10/2013 09:45 PM, Marco Guerri wrote:

> Hi everyone,
> 
> I was wondering if there is anyone who can help me clarify some very 
> basic doubts I have regarding Xenomai internals.
> I am working with Xenomai 2.6.2.1 on a 2.6.31 kernel on an i.MX35 
> processor (thus, ARM arch).
> 
> Using the latency test program, I get the following results for User 
> space and Kernel space tasks.
> 
> *** IDLE ***
> User space --> Mean: ~7us
> Kernel space --> Mean: ~4us
> 
> *** HEAVY LOAD (dohell) ***
> User space --> Mean: ~34us
> Kernel space --> Mean: ~18us
> 
> Could you give me some hints on how to explain this great difference, 
> expecially with the system under load?
> What are the factors that could worsen the latency in IDLE conditions?
> What are the factors that can explain a value of latency doubled in case 
> of a system under load?


These results are completely expected. The code executed between the
time an interrupt happens and a kernel thread is woken up is simply
shorter than the code executed between the time an interrupt happens and
a user-space thread is woken up. On a loaded system, the difference in
time is even greater due to cache effects.

The latency in idle conditions is meaningless. The average latency is
meaningless.

Now the choice between kernel-space and user-space:
- should not be an all-or-nothing choice, you can do some performance
critical things in kernel-space by writing a driver using the RTDM skin,
and have it communicate with user-space tasks which should remain the
master;
- should not be governed by latencies measurement only (especially not
measurement on an idle system and measurement of average values),
programming in kernel-space is hard, takes time, and some habit, it
better be worth it.

-- 
                                                                Gilles.

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to