All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tschaeche IT-Services <services@domain.hid>
To: xenomai@xenomai.org
Subject: [Xenomai-help] Scheduling clarification/solution...
Date: Tue, 11 May 2010 16:26:53 +0200	[thread overview]
Message-ID: <20100511142653.GA22374@domain.hid> (raw)

Hi,

having done some tests and having read the thread
https://mail.gna.org/public/xenomai-help/2010-04/msg00051.html 
i got the following understanding:

1. Xenomai tasks can be in the state RT and non-RT (relaxed).
   That means: If in RT state, it's scheduled by the Xenomai
   scheduler and if in non-RT state it's scheduled by the
   Linux scheduler.

2. After a Xeno-task did a Linux-Systemcall, e.g. getpid(),
   it will be in non-RT state, raising the Xeno-Root task
   to the priority of Xeno-task (setup by rt_task_shadow()).
   Clearing T_RPIOFF with rt_task_set_mode() disables raising
   priority of the Xeno-Root task when the task is migrating
   from Xenomai RT to Linux non-RT state.

   The Linux scheduler priority of a shadowed Xeno task in
   non-RT state is not touched when migrating from RT -> non-RT.
   Linux scheduling policy and priority depend only on calls
   to sched_setscheduler() pthread_setschedparam() and similar
   Linux/Posix calls. (on the other side Linux/Posix calls
   does not control priority when in RT xenomai state).

   Lazy switching means, that this non-RT Xeno-task will stay
   scheduled by the Linux scheduler until the next Xenomai rt-call.
   This implies, that it may be blocked by other non-RT or
   plain Linux tasks of higher Linux priorities by the
   Linux scheduler while in non-RT state.

3. After a Xeno-task did a Xenomai-Call, e.g. rt-driver call
   or rt_mutex_acquire(), it will be in RT state, scheduled
   by the Xenomai scheduler.

   Lazy switching means, that this RT task will stay scheduled
   by the Xenomai scheduler until the next Linux-System call.

We want a setup with 3 xenomai-shadowed tasks:

  - RT-Task: Running in high priority RT context
  	(Xenomai scheduler, low latency high prio)

  - Cyclic-Task: Running in non-RT context
	(Linux scheduler, prio 0 equal to system services)

  - Background-Task: Running in non-RT context
  	(Linux scheduler, low/IDLE prio)

All of them may acquire shared rt-mutices, which is the reason
for shadowing Cyclic- and Background-task (plain Linux tasks are not
able to acquire an RT-mutex). What we need is:

1. When Cyclic-/Background-task acquires an RT-mutex it migrates
   from Linux to Xenomai scheduler. When releasing the mutex,
   the task should be forced to migrate back to Linux scheduler.

   How to achieve that?

   By calling Linux-Syscall getpid()?

   Is there a Xenomai flag (rt_task_set_mode()) doing that automatically,
   after all RT-resources are released? Which version 2.4.10/2.5.x?

   Do we have to use the patch mentioned in the thread?

2. If Background-task acquires an RT-mutex and is interrupted by RT-task,
   which tries to acquire the same mutex, background inherits RT-tasks
   priority in Xenomai RT context. When background calls to Linux in this
   state, Xenomai-Root task gets RT-task's priority (priority coupling),
   but, because background is scheduled by Linux scheduler now,
   it may be blocked by other non-RT threads running with higher
   Linux priority (e.g. while(1) in cyclic). Is there a method
   in Xenomai to inherit Xenomai-priority to the Linux-scheduler
   settings of a task while the task holds RT resources?

   Is it possible to detect if an RT task calls to Linux while
   holding some RT resources? E.g. a SIGXPU (like for T_WARNSW)
   dependent on acquired RT resources?

   I assume/conclude: While holding RT resources a task must not switch
   to secondary domain. If so, we move control to the Linux scheduler
   loosing RT capabilities. Right?

Best regards and thanks,

	Olli



             reply	other threads:[~2010-05-11 14:26 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-11 14:26 Tschaeche IT-Services [this message]
2010-05-11 16:20 ` [Xenomai-help] Scheduling clarification/solution Jan Kiszka
2010-08-05 14:51   ` [Xenomai-help] Forcing a task to run in secondary mode if no RT resources are acquired Tschaeche IT-Services
2010-05-11 19:09 ` [Xenomai-help] Scheduling clarification/solution Gilles Chanteperdrix

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=20100511142653.GA22374@domain.hid \
    --to=services@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.