Hi Philippe!

Jan and me have made some performance tests with my skin/pod for
xenomai. The skin extends xenomai in a way that the scheduler can
schedule threads in userspace. Calls to the Xenomai nucleus are done
over the common xenomai syscall mechanism. It is also possible to use my
skin in kernelspace, so that ''normal'' Xenomai kernelspace threads are
created.

I've ported the fusion demo (nanosleep and sema4 handshake) example to
my userspace aswell as to kernelspace. Also I've recently ported my skin
to vesuvio in order to use the aperiodic timer.

The specs of the testmachine:
Pentium III (Coppermine), 933 MHz, Debian Testing, X11 fluxbox, Konsole
rtai-3.1 cvs co from this afternoon, linux-2.4.26 with Adeos 2.4r13/x86
gcc version 3.3.4 (Debian 1:3.3.4-3)

My skin uses the apeiodic timer, its nanosleep code is copied/inspiered
by xnshadow_substitute_syscall's nanosleep.

first: the fusion demo (with my skin used from userspace)
---------------------------------------------------------

# while true; do echo `seq 1 46`; done
nanosleep jitter: min = 8382 ns, max = 56289 ns, avg = 29422 ns
sema4 handshake: min = 3847 ns, max = 26440 ns, avg = 12046 ns

# while true; do echo `seq 1 46`; done
# virtual destop switching in X
nanosleep jitter: min = 9537 ns, max = 123902 ns, avg = 30370 ns
sema4 handshake: min = 3855 ns, max = 43500 ns, avg = 12672 ns

# idle
nanosleep jitter: min = 9047 ns, max = 58851 ns, avg = 11766 ns
sema4 handshake: min = 3738 ns, max = 20652 ns, avg = 4435 ns



second: the fusion demo (with my skin used from kernelspace)
------------------------------------------------------------
(the avg. ist broken, due to longlong math in kernelspace)

# while true; do echo `seq 1 46`; done
nanosleep jitter: min = 9426 ns, max = 52252 ns, avg = 19675040398 ns
sema4 handshake: min = 1885 ns, max = 21362 ns, avg = 9745 ns

# while true; do echo `seq 1 46`; done
# virtual destop switching in X
nanosleep jitter: min = 9248 ns, max = 66511 ns, avg = 19675038715 ns
sema4 handshake: min = 1904 ns, max = 32219 ns, avg = 9329 ns

# idle
nanosleep jitter: min = 7817 ns, max = 50322 ns, avg = 19675023026 ns
sema4 handshake: min = 1855 ns, max = 17000 ns, avg = 2339 ns



third: lxrt testsuite/user/latency
----------------------------------

# while true; do echo `seq 1 46`; done
# virtual destop switching in X
*** min: 1002, max: 21098 average: 3109  <Hit [RETURN] to stop> ***

# idle
*** min: 1006, max: 15761 average: 2190  <Hit [RETURN] to stop> ***


Philippe, can you explain why we have such a high nanosleep jitter? Of
course there is a certain overhead if we schedule userspace threads, but
the kernel-only example shows jitter of the same magnitude.

regards - marc

-- 
#!/bin/sh
set - `type $0` 'tr "[a-zA-Z]" "[n-za-mN-ZA-M]"';while [ "$2" != "" ];do \
shift;done; echo 'frq -a -rc '`echo "$0"| $1 `'>$UBZR/.`rpub signature|'`\
echo $1|$1`'`;rpub "Jr ner fvtangher bs obet. Erfvfgnapr vf shgvyr!"'|$1|sh

Reply via email to