All of lore.kernel.org
 help / color / mirror / Atom feed
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


             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.