From: Stefano Babic <stefano.babic@domain.hid>
To: "xenomai@xenomai.org" <xenomai@xenomai.org>
Subject: [Xenomai-help] LTT with Xenomai - how to correct visualize the Xenomai Events
Date: Thu, 08 May 2008 11:23:18 +0200 [thread overview]
Message-ID: <4822C686.1090300@domain.hid> (raw)
Hi all,
I have some questions regarding context switching in Xenomai and how
adding LTT support with older Kernel.
We have a project based on 2.4 Kernel (CPU MPC5200-Kernel 2.4.25) and
Xenomai 2.3.5 (adeos-ipipe-2.4.25-ppc-CVS-20070325-1.2-01.patch).
Because it was not possible to upgrade to the 2.6 Kernel, there was the
decision to use LTT (and not LTT-ng) to trace the system behavior. The
consequence was to add support for Xenomai in LTT.
I prepared a patch for the 2.4 Kernel (based on a old RTAI-Patch) and I
slightly modified the Xenomai code to wrap the xnltt_log_event to call
the corresponding LTT trace function.
Because the events are already set in Xenomai, I only mapped them with
LTT Custom Events. In this way, it is very simple to change Xenomai
version because the changes in Xenomai are really minimal. I can easy
replace in the same way the calling to the trace_mark() function in
Xenomai 2.4 if an upgrade to the newer version is desired.
I can start the tracedaemon application on the target and collect all
events. Everything seems fine and consistent.
With the Visualizer I can obtain the raw dump of all events as ASCII text.
However, I adapted the LTT-Visualizer to get a visualization of the
events. I added (if you know as the RTAI-Tasks were added to the
LTT-Visualizer, I did it in the same way) the Xenomai tasks to the
visualizer on the bottom of the graph and I wanted to display when a
task-switch happens.
To do this, I am searching for all Xenomai ctxsw events to understand
which tasks are involved. I have an example running at the same time the
latency test (with -t1 to generate a Xenomai task in kernel) and the
trivial-periodic provided with Xenomai code.
Here some sequences I get it, I would like to know how I have to display
them.
For example:
Xenomai i-enter 223,663,358 0 27 irq=256
Xenomai timer tick 223,663,362 0 34 runthread=ROOT
Xenomai thread resu223,663,366 0 47 thread=timerbench, mask=0x4
Xenomai resched 223,663,370 0 20
Xenomai ctxsw 223,663,375 0 46 ROOT(0) -> timerbench(-1)
This sequence means for me (but please correct me if I am wrong !) that
there is a context switch from Xenomai Core (ROOT(0)) and the Xenomai
task "timerbench" in Kernel. The values in parenthesis are the pids from
xnthread_user_task(threadout) and xnthread_user_task(threadin) that I
have added to the trace. (-1=user_task is set to null)
Xenomai thread susp 221,481,424 397 79 thread=timerbench, mask=0x4,
Xenomai resched 221,481,432 397 20
Xenomai ctxsw 221,481,437 397 48 timerbench(-1) -> ROOT(397)
Xenomai i-exit 221,481,441 397 27 irq=256
This was for me a context switch from the Xenomai Kernel task
"timerbench" to the Process with PID=397, that I see is a Linux Process.
Then I draw a line (that is, a task/process switch) from the Xenomai
task "timerbench" to the linux process with PID=397.
Am I wrong ?
Xenomai thread resu 223,695,395 0 48 thread=display-369, mask=0x2
Xenomai resched 223,695,398 0 20
Xenomai thread susp 223,695,408 0 79 thread=timerbench, mask=0x4
Xenomai resched 223,695,414 0 20
Xenomai ctxsw 223,695,419 0 55 timerbench(-1) -> display-369(371)
This is a context switch between two Xenomai tasks, if I understand well.
I have not considered the modex2 and modex1 events and I am not sure
about them. However, I have noted that modex2 is collected with a Linux
"Sched change" event and I can consider only the last one to understand
if a Linux process is running, for example I see:
Xenomai i-exit 221,695,618 0 27 irq=256
Xenomai lohandler 221,695,631 0 54 type=10, task=display-369, pid=371
Process 221,695,634 0 16 WAKEUP PID : 371; STATE : 1
Sched change 221,695,653 371 19 IN : 371; OUT : 0; STATE : 0
Xenomai modex2 221,695,666 371 38 thread=display-369
In my IMHO it is enough to get the "Sched change" event to understand
that the system is switching to Linux and that a Linux process is
currently scheduled. In this case, the linux process with PID=371 is
scheduled.
However, I got also these events, where the lohandler event is not traced:
Xenomai ctxsw 223,695,419 0 55 timerbench(-1) -> display-369(371)
Xenomai modsw2 223,695,573 0 38 thread=display-369
At the moment, I display only the modex event, but I do not take any
decision about it. I draw only a context switch between the two Xenomai
tasks "timerbench" and "display-369".
Thanks,
Stefano
--
stefano <stefano.babic@domain.hid>
GPG Key: 0x55814DDE
Fingerprint 4E85 2A66 4CBA 497A 2A7B D3BF 5973 F216 5581 4DDE
next reply other threads:[~2008-05-08 9:23 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-08 9:23 Stefano Babic [this message]
2008-05-08 14:22 ` [Xenomai-help] LTT with Xenomai - how to correct visualize the Xenomai Events Philippe Gerum
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4822C686.1090300@domain.hid \
--to=stefano.babic@domain.hid \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.